/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.ui.product; import junit.extensions.TestSetup; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import org.teiid.core.designer.util.PluginUtilImpl; import org.teiid.core.util.SmartTestDesignerSuite; import org.teiid.designer.ui.common.UiConstants; import org.teiid.designer.ui.common.UiPlugin; import org.teiid.designer.ui.common.product.AbstractProductCustomizer; import org.teiid.designer.ui.common.product.IProductCharacteristics; import org.teiid.designer.ui.common.product.IProductContext; /** * @since 4.3 */ public class TestAbstractProductCustomizer extends TestCase { static final IProductContext CONTEXT = IModelerProductContexts.Metamodel.URI; static final Object VALUE1 = "value1"; //$NON-NLS-1$ private static final Object VALUE2 = "value2"; //$NON-NLS-1$ /** * Construct the test suite, which uses a one-time setup call and a one-time tear-down call. */ public static Test suite() { TestSuite suite = new TestSuite("TestAbstractProductCustomizer"); //$NON-NLS-1$ suite.addTestSuite(TestAbstractProductCustomizer.class); return new TestSetup(suite) { @Override public void setUp() throws Exception { UiPlugin plugin = new UiPlugin(); SmartTestDesignerSuite.mockStartBundle(plugin, UiConstants.PLUGIN_ID); ((PluginUtilImpl)UiConstants.Util).initializePlatformLogger(plugin); } }; } public TestAbstractProductCustomizer( String theTestName ) { super(theTestName); } /** * Make sure OK to add support for a context */ public void testAddContextSupport1() { FakeProductCustomizer customizer = new FakeProductCustomizer() { @Override public void loadCustomizations() { result = addContextSupport(CONTEXT); } }; customizer.loadCustomizations(); assertTrue("Adding context support failed", customizer.result); //$NON-NLS-1$ } /** * Make sure OK to add support for same context */ public void testAddContextSupport2() { FakeProductCustomizer customizer = new FakeProductCustomizer() { @Override public void loadCustomizations() { addContextSupport(CONTEXT); result = addContextSupport(CONTEXT); } }; customizer.loadCustomizations(); assertTrue("Adding same context twice failed", customizer.result); //$NON-NLS-1$ } /** * Make sure result is false when adding support for context that has been removed */ public void testAddContextSupport3() { FakeProductCustomizer customizer = new FakeProductCustomizer() { @Override public void loadCustomizations() { removeContextSupport(CONTEXT); result = addContextSupport(CONTEXT); } }; customizer.loadCustomizations(); assertTrue("Adding context after removing it did not fail", !customizer.result); //$NON-NLS-1$ } /** * Make sure OK to remove support for a context */ public void testRemoveContextSupport1() { FakeProductCustomizer customizer = new FakeProductCustomizer() { @Override public void loadCustomizations() { result = removeContextSupport(CONTEXT); } }; customizer.loadCustomizations(); assertTrue("Removing context failed", customizer.result); //$NON-NLS-1$ } /** * Make sure OK to remove support for same context */ public void testRemoveContextSupport2() { FakeProductCustomizer customizer = new FakeProductCustomizer() { @Override public void loadCustomizations() { removeContextSupport(CONTEXT); result = removeContextSupport(CONTEXT); } }; customizer.loadCustomizations(); assertTrue("Removing same context twice failed", customizer.result); //$NON-NLS-1$ } /** * Make sure result is false when removing support for context that has been supported */ public void testRemoveContextSupport3() { FakeProductCustomizer customizer = new FakeProductCustomizer() { @Override public void loadCustomizations() { addContextSupport(CONTEXT); result = removeContextSupport(CONTEXT); } }; customizer.loadCustomizations(); assertTrue("Removing context after adding it did not fail", !customizer.result); //$NON-NLS-1$ } /** * Make sure no entries means support */ public void testSupports1() { FakeProductCustomizer customizer = new FakeProductCustomizer() { @Override public void loadCustomizations() { } }; customizer.loadCustomizations(); assertTrue("Context should be supported when no customizations", customizer.supports(CONTEXT)); //$NON-NLS-1$ } /** * Make sure adding support works */ public void testSupports2() { FakeProductCustomizer customizer = new FakeProductCustomizer() { @Override public void loadCustomizations() { addContextSupport(CONTEXT); } }; customizer.loadCustomizations(); assertTrue("Context should be supported when support added", customizer.supports(CONTEXT)); //$NON-NLS-1$ } /** * Make sure removing support works */ public void testSupports3() { FakeProductCustomizer customizer = new FakeProductCustomizer() { @Override public void loadCustomizations() { removeContextSupport(CONTEXT); } }; customizer.loadCustomizations(); assertTrue("Context should not be supported when support removed", !customizer.supports(CONTEXT)); //$NON-NLS-1$ } /** * Make sure entire context not supported if one value support is added */ public void testSupports4() { FakeProductCustomizer customizer = new FakeProductCustomizer() { @Override public void loadCustomizations() { addContextValueSupport(CONTEXT, VALUE1); } }; customizer.loadCustomizations(); assertTrue("Entire context should not be supported when support for one value has been added", !customizer.supports(CONTEXT)); //$NON-NLS-1$ } /** * Make sure entire context not supported if one value support is removed */ public void testSupports5() { FakeProductCustomizer customizer = new FakeProductCustomizer() { @Override public void loadCustomizations() { removeContextValueSupport(CONTEXT, VALUE1); } }; customizer.loadCustomizations(); assertTrue("Entire context should not be supported", !customizer.supports(CONTEXT)); //$NON-NLS-1$ } /** * Make sure if no customization then one value is supported */ public void testSupportsValue1() { FakeProductCustomizer customizer = new FakeProductCustomizer() { @Override public void loadCustomizations() { } }; customizer.loadCustomizations(); assertTrue("One value should be supported when no customization", customizer.supports(CONTEXT, VALUE1)); //$NON-NLS-1$ } /** * Make sure if entire context is supported then one value is supported */ public void testSupportsValue2() { FakeProductCustomizer customizer = new FakeProductCustomizer() { @Override public void loadCustomizations() { addContextSupport(CONTEXT); } }; customizer.loadCustomizations(); assertTrue("One value should be supported when entire context is supported", customizer.supports(CONTEXT, VALUE1)); //$NON-NLS-1$ } /** * Make sure if entire context is not supported then one value is not supported */ public void testSupportsValue3() { FakeProductCustomizer customizer = new FakeProductCustomizer() { @Override public void loadCustomizations() { removeContextSupport(CONTEXT); } }; customizer.loadCustomizations(); assertTrue("One value should not be supported when entire context is not supported", !customizer.supports(CONTEXT, VALUE1)); //$NON-NLS-1$ } /** * Make sure context value is supported after being added */ public void testSupportsValue4() { FakeProductCustomizer customizer = new FakeProductCustomizer() { @Override public void loadCustomizations() { addContextValueSupport(CONTEXT, VALUE1); } }; customizer.loadCustomizations(); assertTrue("Value added is not supported", customizer.supports(CONTEXT, VALUE1)); //$NON-NLS-1$ } /** * Make sure context value is not supported after being removed */ public void testSupportsValue5() { FakeProductCustomizer customizer = new FakeProductCustomizer() { @Override public void loadCustomizations() { removeContextValueSupport(CONTEXT, VALUE1); } }; customizer.loadCustomizations(); assertTrue("Value added is not supported", !customizer.supports(CONTEXT, VALUE1)); //$NON-NLS-1$ } /** * Make sure one context value is not supported after another value is added */ public void testSupportsValue6() { FakeProductCustomizer customizer = new FakeProductCustomizer() { @Override public void loadCustomizations() { addContextValueSupport(CONTEXT, VALUE1); } }; customizer.loadCustomizations(); assertTrue("Value should not be supported after another value is added", !customizer.supports(CONTEXT, VALUE2)); //$NON-NLS-1$ } /** * Make sure one context value is supported after another value is removed */ public void testSupportsValue7() { FakeProductCustomizer customizer = new FakeProductCustomizer() { @Override public void loadCustomizations() { removeContextValueSupport(CONTEXT, VALUE1); } }; customizer.loadCustomizations(); assertTrue("Value is not supported after another value is removed", customizer.supports(CONTEXT, VALUE2)); //$NON-NLS-1$ } abstract class FakeProductCustomizer extends AbstractProductCustomizer { boolean result = true; @Override public String getProductId() { return null; } @Override public IProductCharacteristics getProductCharacteristics() { return null; } } }