Exemplo n.º 1
0
  @Test
  public void testJBIDE1479() throws Throwable {
    // wait
    setException(null);
    // get test page path
    final IFile file =
        (IFile) TestUtil.getComponentPath(TEST_PAGE_NAME, JsfAllTests.IMPORT_PROJECT_NAME);

    assertNotNull(
        "Could not open specified file " + TEST_PAGE_NAME, // $NON-NLS-1$
        file);

    IEditorInput input = new FileEditorInput(file);

    assertNotNull("Editor input is null", input); // $NON-NLS-1$

    JSPMultiPageEditor part = openEditor(input);
    TestUtil.waitForIdle(120 * 1000);
    assertNotNull(part);

    Job job = new WorkspaceJob("Test JBIDE-1479") { // $NON-NLS-1$

          @Override
          public IStatus runInWorkspace(IProgressMonitor monitor) {
            try {
              new FormatProcessorXML().formatFile(file);
            } catch (CoreException e) {
              TestUtil.fail(e);
            } catch (IOException e) {
              TestUtil.fail(e);
            }
            return Status.OK_STATUS;
          }
        };
    job.setPriority(Job.SHORT);
    job.schedule(0L);
    job.join();
    TestUtil.waitForIdle(15 * 1000 * 60);
    TestUtil.delay(1000L);
    closeEditors();

    /*
     * we ignore this code, because we are testint JBIDE-1479,
     * it's test fot crash of eclipse.And if we modifying content from non-ui thread, we almost
     * always will get SWTException 'access violation'.
     */
    //		if(getException()!=null) {
    //			throw getException();
    //		}
  }
  public void testNoDefaultLocaleForChangeAndRefresh() throws Throwable {
    VpeController controller =
        openInVpe(JsfAllTests.IMPORT_JSF_LOCALES_PROJECT_NAME, NO_DEFLOC_CHANGE_REFRESH_PAGE);
    nsIDOMDocument doc = controller.getXulRunnerEditor().getDOMDocument();

    nsIDOMElement localeText = doc.getElementById(LOCALE_TEXT_ID);
    String localizedText = getLocalizedText(localeText);
    assertTrue(
        "Text is '" + localizedText + "', but should be in 'de' locale",
        HELLO2_DE.equalsIgnoreCase(localizedText)); // $NON-NLS-1$ //$NON-NLS-2$
    /*
     * Change the locale
     */
    Element fViewElement =
        controller.getSourceBuilder().getSourceDocument().getElementById(FVIEW_ID);
    int offset = controller.getSourceBuilder().getPosition(fViewElement, 0, false);
    assertTrue(
        "Previous locale should be 'de'",
        "de"
            .equalsIgnoreCase(
                fViewElement.getAttribute("locale"))); // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$

    IRegion reg =
        new FindReplaceDocumentAdapter(
                controller.getSourceBuilder().getStructuredTextViewer().getDocument())
            .find(offset, "de", true, true, false, false);
    controller
        .getSourceBuilder()
        .getStructuredTextViewer()
        .getDocument()
        .replace(reg.getOffset(), reg.getLength(), "en_GB");
    /*
     * Wait until new value is applied and children are refreshed.
     * Wait while all deferred events are processed
     */
    while (Display.getCurrent().readAndDispatch()) ;
    /*
     * Wait while all jobs including started through deferred events are ended
     */
    JobUtils.delay(VpeController.DEFAULT_UPDATE_DELAY_TIME * 4);
    TestUtil.waitForIdle();
    fViewElement = controller.getSourceBuilder().getSourceDocument().getElementById(FVIEW_ID);
    assertTrue(
        "Current locale should be 'en_GB'",
        "en_GB"
            .equalsIgnoreCase(
                fViewElement.getAttribute("locale"))); // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$

    doc = controller.getXulRunnerEditor().getDOMDocument();
    localeText = doc.getElementById(LOCALE_TEXT_ID);
    localizedText = getLocalizedText(localeText);

    /*
     * Check the new localized message.
     */
    assertTrue(
        "Text is '" + localizedText + "', but should be in 'en_GB' locale",
        HELLO_EN_GB.equalsIgnoreCase(localizedText)); // $NON-NLS-1$ //$NON-NLS-2$
    closeEditors();
  }
 /**
  * After the locale attribute value has been changed and Refresh button is clicked - the correct
  * locale should be applied, bundle messages should be updated and showed in the correct locale.
  *
  * @throws Throwable
  */
 public void testChangeLocaleAndRefresh() throws Throwable {
   VpeController controller =
       openInVpe(JsfAllTests.IMPORT_JSF_20_PROJECT_NAME, CHANGE_LOCALE_AND_REFRESH_PAGE);
   nsIDOMDocument doc = controller.getXulRunnerEditor().getDOMDocument();
   nsIDOMElement localeText = doc.getElementById(LOCALE_TEXT_ID);
   String localizedText = getLocalizedText(localeText);
   assertTrue(
       "Text is '" + localizedText + "', but should be in 'de' locale",
       HELLO2_DE.equalsIgnoreCase(localizedText)); // $NON-NLS-1$ //$NON-NLS-2$
   /*
    * Change the locale
    */
   Element fViewElement =
       controller.getSourceBuilder().getSourceDocument().getElementById(FVIEW_ID);
   assertTrue(
       "Previous locale should be 'de'",
       "de"
           .equalsIgnoreCase(
               fViewElement.getAttribute("locale"))); // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
   fViewElement.setAttribute("locale", "en_GB"); // $NON-NLS-1$ //$NON-NLS-2$
   /*
    * Wait until new value is applied and children are refreshed.
    */
   TestUtil.delay(500);
   TestUtil.waitForIdle();
   assertTrue(
       "Current locale should be 'en_GB'",
       "en_GB"
           .equalsIgnoreCase(
               fViewElement.getAttribute("locale"))); // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
   doc = controller.getXulRunnerEditor().getDOMDocument();
   localeText = doc.getElementById(LOCALE_TEXT_ID);
   localizedText = getLocalizedText(localeText);
   /*
    * Check the new localized message.
    */
   assertTrue(
       "Text is '" + localizedText + "', but should be in 'en_GB' locale",
       HELLO_EN_GB.equalsIgnoreCase(localizedText)); // $NON-NLS-1$ //$NON-NLS-2$
   closeEditors();
 }