/** helper to set preference to an invalid format and verify. */ void setInvalidPreferenceAndVerify() { fViewerListener.reset(); fViewerListener.addUpdates( TreePath.EMPTY, ((TestElementVMContext) fViewer.getInput()).getElement(), -1, ALL_UPDATES_COMPLETE | PROPERTY_UPDATES); fVMListener.reset(); fVMListener.addUpdates( TreePath.EMPTY, fModel.getRootElement(), -1, ALL_UPDATES_COMPLETE | PROPERTY_UPDATES); fViewer .getPresentationContext() .setProperty(PROP_FORMATTED_VALUE_FORMAT_PREFERENCE, "invalid format"); while (!fViewerListener.isFinished(ALL_UPDATES_COMPLETE | PROPERTY_UPDATES) || !fVMListener.isFinished(CONTENT_UPDATES | PROPERTY_UPDATES)) { if (!fDisplay.readAndDispatch()) { fDisplay.sleep(); } } validateModel( IFormattedValues.HEX_FORMAT, " (" + FormattedValueVMUtil.getFormatLabel(IFormattedValues.HEX_FORMAT) + ")", DummyFormattedValueService.DUMMY_FORMAT, " (" + DummyFormattedValueService.DUMMY_FORMAT + ")"); }
/** * Test that when the preference format is invalid, each element can still change to a format. * Also, each element can restore to the invalid preference format such that the element uses * first available format from service. */ public void testChangeElementFormatWithInvalidPreference() { recreateViewModel(); String preferenceFormat = IFormattedValues.NATURAL_FORMAT; setInput(preferenceFormat); // set preference format to an invalid format and verify setInvalidPreferenceAndVerify(); // set each element to a format, and verify HashMap<String, ElementFormatSetting> map = new HashMap<String, ElementFormatSetting>(); String[] format = { IFormattedValues.HEX_FORMAT, IFormattedValues.DECIMAL_FORMAT, IFormattedValues.OCTAL_FORMAT, IFormattedValues.BINARY_FORMAT, IFormattedValues.NATURAL_FORMAT }; makeElementFormatSetting(fViewer, TreePath.EMPTY, format, -1, 0, map); ArrayList<ElementFormatSetting> elementFormats = new ArrayList<ElementFormatSetting>(map.values()); setFormatAndValidate("invalid format", elementFormats, elementFormats, false, false, false); // Restore each element to preference format which is an invalid format for (ElementFormatSetting e : elementFormats) { e.formatId = null; } fViewerListener.reset(); fViewerListener.addUpdates( TreePath.EMPTY, ((TestElementVMContext) fViewer.getInput()).getElement(), -1, ALL_UPDATES_COMPLETE | PROPERTY_UPDATES); fVMListener.reset(); fVMListener.addUpdates( TreePath.EMPTY, fModel.getRootElement(), -1, ALL_UPDATES_COMPLETE | PROPERTY_UPDATES); if (fVMProvider instanceof IElementFormatProvider) { IElementFormatProvider ep = ((IElementFormatProvider) fVMProvider); for (ElementFormatSetting es : elementFormats) { ep.setActiveFormat( fViewer.getPresentationContext(), es.nodes.toArray(new IVMNode[es.nodes.size()]), fViewer.getInput(), es.elementPaths.toArray(new TreePath[es.elementPaths.size()]), es.formatId); } } while (!fViewerListener.isFinished(ALL_UPDATES_COMPLETE | PROPERTY_UPDATES) || !fVMListener.isFinished(CONTENT_UPDATES | PROPERTY_UPDATES)) { if (!fDisplay.readAndDispatch()) { fDisplay.sleep(); } } // verify service's first available format is used validateModel( IFormattedValues.HEX_FORMAT, " (" + FormattedValueVMUtil.getFormatLabel(IFormattedValues.HEX_FORMAT) + ")", DummyFormattedValueService.DUMMY_FORMAT, " (" + DummyFormattedValueService.DUMMY_FORMAT + ")"); }
/** * Test that when an element is set to to an invalid format and the preference format is invalid, * the element uses first available format from service. */ public void testInvalidElementFormatWithInvalidPreference() { recreateViewModel(); String preferenceFormat = IFormattedValues.NATURAL_FORMAT; setInput(preferenceFormat); // set preference format to an invalid format and verify setInvalidPreferenceAndVerify(); // set each element to an invalid format setElementInvalidFormat(); // verify service's first available format is used when element format and preference format are // invalid validateModel( IFormattedValues.HEX_FORMAT, " (" + FormattedValueVMUtil.getFormatLabel(IFormattedValues.HEX_FORMAT) + ")", DummyFormattedValueService.DUMMY_FORMAT, " (" + DummyFormattedValueService.DUMMY_FORMAT + ")"); }