/* * 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.common.eventsupport; import java.util.List; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import junit.textui.TestRunner; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredSelection; import org.teiid.designer.ui.common.testsupport.FakeEObject; /** * TestSelectionUtilities */ public final class TestSelectionUtilities extends TestCase { private static final ISelection emptySelection; private static final ISelection singleSelection; private static final ISelection singleEObjectSelection; private static final ISelection multiSelection; private static final IStructuredSelection allEObjects; private static final IStructuredSelection allNonEObjects; private static final IStructuredSelection mixedObjects; private static final int NUM_EOBJECTS; public static void main( String[] theArgs ) { TestRunner.run(suite()); } public static Test suite() { return new TestSuite(TestSelectionUtilities.class); } static { emptySelection = new StructuredSelection(); singleSelection = new StructuredSelection(new Object()); singleEObjectSelection = new StructuredSelection(new FakeEObject()); multiSelection = new StructuredSelection(new Object[] {new Object(), new Object()}); allEObjects = new StructuredSelection(new Object[] {new FakeEObject(), new FakeEObject()}); mixedObjects = new StructuredSelection(new Object[] {new FakeEObject(), new Object(), new FakeEObject(), new Object()}); NUM_EOBJECTS = 2; // must match the number of EObjects in the mixedObjects list allNonEObjects = new StructuredSelection(new Object[] {new Object(), new Object(), new Object(), new Object(), new Object()}); } /** * Constructor for TestSelectionUtilities. * * @param name */ public TestSelectionUtilities( String theName ) { super(theName); } public void testGetSelectedEObject_1() { assertNull("Null selection should not return a value", //$NON-NLS-1$ SelectionUtilities.getSelectedEObject(null)); } public void testGetSelectedEObject_2() { assertNull("Empty-selection should not return a value", //$NON-NLS-1$ SelectionUtilities.getSelectedEObject(emptySelection)); } public void testGetSelectedEObject_3() { assertNull("Single-selection non-EObject should not return a value", //$NON-NLS-1$ SelectionUtilities.getSelectedEObject(singleSelection)); } public void testGetSelectedEObject_4() { assertNotNull("Single-selection EObject returned null", //$NON-NLS-1$ SelectionUtilities.getSelectedEObject(singleEObjectSelection)); } public void testGetSelectedEObject_5() { assertNull("Multi-selection of mixed objects should not return a value", //$NON-NLS-1$ SelectionUtilities.getSelectedEObject(mixedObjects)); } public void testGetSelectedEObject_6() { assertNull("Multi-selection of all EObjects should not return a value", //$NON-NLS-1$ SelectionUtilities.getSelectedEObject(allEObjects)); } public void testGetSelectedEObject_7() { assertNull("Multi-selection of all non-EObjects should not return a value", //$NON-NLS-1$ SelectionUtilities.getSelectedEObject(allNonEObjects)); } public void testGetSelectedEObjects_1() { List results = SelectionUtilities.getSelectedEObjects(null); if (results == null) { fail("Null selection should not return a null list"); //$NON-NLS-1$ } else { assertTrue("Null selection should not return a non-empty list", results.isEmpty()); //$NON-NLS-1$ } } public void testGetSelectedEObjects_2() { List results = SelectionUtilities.getSelectedEObjects(emptySelection); if (results == null) { fail("Empty-selection should not return a null list"); //$NON-NLS-1$ } else { assertTrue("Empty-selection should not return a non-empty list", results.isEmpty()); //$NON-NLS-1$ } } public void testGetSelectedEObjects_3() { List results = SelectionUtilities.getSelectedEObjects(singleSelection); if (results == null) { fail("Single-selection non-EObject should not return a null list"); //$NON-NLS-1$ } else { assertTrue("Single-selection non-EObject should return an empty list", results.isEmpty()); //$NON-NLS-1$ } } public void testGetSelectedEObjects_4() { List results = SelectionUtilities.getSelectedEObjects(singleEObjectSelection); if (results == null) { fail("Single-selection EObject should not return a null list"); //$NON-NLS-1$ } else { assertEquals("Single-selection EObject list is wrong size", 1, results.size()); //$NON-NLS-1$ } } public void testGetSelectedEObjects_5() { List results = SelectionUtilities.getSelectedEObjects(mixedObjects); if (results == null) { fail("Multi-selection mixed objects should not return a null list"); //$NON-NLS-1$ } else { assertEquals("Multi-selection mixed objects list is wrong size", NUM_EOBJECTS, results.size()); //$NON-NLS-1$ } } public void testGetSelectedEObjects_6() { List results = SelectionUtilities.getSelectedEObjects(allEObjects); if (results == null) { fail("Multi-selection EObjects should not return a null list"); //$NON-NLS-1$ } else { assertEquals("Multi-selection EObjects list is wrong size", allEObjects.size(), results.size()); //$NON-NLS-1$ } } public void testGetSelectedEObjects_7() { List results = SelectionUtilities.getSelectedEObjects(allNonEObjects); if (results == null) { fail("Multi-selection non-EObjects should not return a null list"); //$NON-NLS-1$ } else { assertTrue("Multi-selection non-EObjects should return an empty list", results.isEmpty()); //$NON-NLS-1$ } } public void testGetSelectedObject_1() { assertNull("Null selection should not return a value", //$NON-NLS-1$ SelectionUtilities.getSelectedObject(null)); } public void testGetSelectedObject_2() { assertNull("Empty-selection should not return a value", //$NON-NLS-1$ SelectionUtilities.getSelectedObject(emptySelection)); } public void testGetSelectedObject_3() { assertNotNull("Single-selection non-EObject should return a value", //$NON-NLS-1$ SelectionUtilities.getSelectedObject(singleSelection)); } public void testGetSelectedObject_4() { assertNotNull("Single-selection EObject should return a value", //$NON-NLS-1$ SelectionUtilities.getSelectedObject(singleEObjectSelection)); } public void testGetSelectedObject_5() { assertNull("Multi-selection of mixed objects should not return a value", //$NON-NLS-1$ SelectionUtilities.getSelectedObject(mixedObjects)); } public void testGetSelectedObject_6() { assertNull("Multi-selection of all EObjects should not return a value", //$NON-NLS-1$ SelectionUtilities.getSelectedObject(allEObjects)); } public void testGetSelectedObject_7() { assertNull("Multi-selection of all non-EObjects should not return a value", //$NON-NLS-1$ SelectionUtilities.getSelectedObject(allNonEObjects)); } public void testGetSelectedObjects_1() { List results = SelectionUtilities.getSelectedObjects(null); if (results == null) { fail("Null selection should not return a null list"); //$NON-NLS-1$ } else { assertTrue("Null selection should not return a non-empty list", results.isEmpty()); //$NON-NLS-1$ } } public void testGetSelectedObjects_2() { List results = SelectionUtilities.getSelectedObjects(emptySelection); if (results == null) { fail("Empty-selection should not return a null list"); //$NON-NLS-1$ } else { assertTrue("Empty-selection should not return a non-empty list", results.isEmpty()); //$NON-NLS-1$ } } public void testGetSelectedObjects_3() { List results = SelectionUtilities.getSelectedObjects(singleSelection); if (results == null) { fail("Single-selection non-EObject should not return a null list"); //$NON-NLS-1$ } else { assertEquals("Single-selection non-EObject list is wrong size", 1, results.size()); //$NON-NLS-1$ } } public void testGetSelectedObjects_4() { List results = SelectionUtilities.getSelectedObjects(singleEObjectSelection); if (results == null) { fail("Single-selection EObject should not return a null list"); //$NON-NLS-1$ } else { assertEquals("Single-selection EObject list is wrong size", 1, results.size()); //$NON-NLS-1$ } } public void testGetSelectedObjects_5() { List results = SelectionUtilities.getSelectedObjects(mixedObjects); if (results == null) { fail("Multi-selection mixed objects should not return a null list"); //$NON-NLS-1$ } else { assertEquals("Multi-selection mixed objects list is wrong size", mixedObjects.size(), results.size()); //$NON-NLS-1$ } } public void testGetSelectedObjects_6() { List results = SelectionUtilities.getSelectedObjects(allEObjects); if (results == null) { fail("Multi-selection EObjects should not return a null list"); //$NON-NLS-1$ } else { assertEquals("Multi-selection EObjects list is wrong size", allEObjects.size(), results.size()); //$NON-NLS-1$ } } public void testGetSelectedObjects_7() { List results = SelectionUtilities.getSelectedObjects(allNonEObjects); if (results == null) { fail("Multi-selection non-EObjects should not return a null list"); //$NON-NLS-1$ } else { assertEquals("Multi-selection non-EObjects list is wrong size", allNonEObjects.size(), results.size()); //$NON-NLS-1$ } } public void testIsAllEObjects_1() { assertFalse("Null should not indicate that all EObjects were selected", //$NON-NLS-1$ SelectionUtilities.isAllEObjects(null)); } public void testIsAllEObjects_2() { assertFalse("Empty-selection should not indicate that all EObjects were selected", //$NON-NLS-1$ SelectionUtilities.isAllEObjects(emptySelection)); } public void testIsAllEObjects_3() { assertTrue("All EObjects collection did not indicate that all EObjects were selected", //$NON-NLS-1$ SelectionUtilities.isAllEObjects(allEObjects)); } public void testIsAllEObjects_4() { assertFalse("Non-EObject collection should not indicate that all EObjects were selected", //$NON-NLS-1$ SelectionUtilities.isAllEObjects(allNonEObjects)); } public void testIsAllEObjects_5() { assertFalse("Mixed collection should not indicate that all EObjects were selected", //$NON-NLS-1$ SelectionUtilities.isAllEObjects(mixedObjects)); } public void testIsMultiSelection_1() { assertFalse("Null should not be a multi-selection", //$NON-NLS-1$ SelectionUtilities.isMultiSelection(null)); } public void testIsMultiSelection_2() { assertFalse("Empty-selection should not be a multi-selection", //$NON-NLS-1$ SelectionUtilities.isMultiSelection(emptySelection)); } public void testIsMultiSelection_3() { assertFalse("Single-selection should not be a multi-selection", //$NON-NLS-1$ SelectionUtilities.isMultiSelection(singleSelection)); } public void testIsMultiSelection_4() { assertTrue("Multi-selection was not be a multi-selection", //$NON-NLS-1$ SelectionUtilities.isMultiSelection(multiSelection)); } public void testIsSingleSelection_1() { assertFalse("Null should not be a single-selection", //$NON-NLS-1$ SelectionUtilities.isSingleSelection(null)); } public void testIsSingleSelection_2() { assertFalse("Empty-selection should not be a single-selection", //$NON-NLS-1$ SelectionUtilities.isSingleSelection(emptySelection)); } public void testIsSingleSelection_3() { assertTrue("Single-selection was not be a single-selection", //$NON-NLS-1$ SelectionUtilities.isSingleSelection(singleSelection)); } public void testIsSingleSelection_4() { assertFalse("Multi-selection should not be a single-selection", //$NON-NLS-1$ SelectionUtilities.isSingleSelection(multiSelection)); } public void testGetSelectedEObjectsWithNonEObjectWithBadEqualsImplementation() { ISelection selection = new StructuredSelection(new Object[] {new ClassWithBadEqualsMethod(1), new ClassWithBadEqualsMethod(1)}); assertEquals(0, SelectionUtilities.getSelectedEObjects(selection).size()); } public void testGetSelectedEObjectsWithNonEObjectWithGoodEqualsImplementation() { ISelection selection = new StructuredSelection(new Object[] {new ClassWithGoodEqualsMethod(1), new ClassWithGoodEqualsMethod(1)}); assertEquals(0, SelectionUtilities.getSelectedEObjects(selection).size()); } public void testGetSelectedIResourceObjectsWithNonIResourceWithBadEqualsImplementation() { ISelection selection = new StructuredSelection(new Object[] {new ClassWithBadEqualsMethod(1), new ClassWithBadEqualsMethod(2)}); assertEquals(0, SelectionUtilities.getSelectedIResourceObjects(selection).size()); } public void testGetSelectedIResourceObjectsWithNonIResourceWithGoodEqualsImplementation() { ISelection selection = new StructuredSelection(new Object[] {new ClassWithGoodEqualsMethod(1), new ClassWithGoodEqualsMethod(2)}); assertEquals(0, SelectionUtilities.getSelectedIResourceObjects(selection).size()); } public class ClassWithBadEqualsMethod { private final int id; public ClassWithBadEqualsMethod( int id ) { this.id = id; } @Override public boolean equals( Object obj ) { // a bad implementation if (obj instanceof ClassWithBadEqualsMethod) { return false; } return super.equals(obj); } protected int getId() { return this.id; } } public class ClassWithGoodEqualsMethod extends ClassWithBadEqualsMethod { public ClassWithGoodEqualsMethod( int id ) { super(id); } @Override public boolean equals( Object obj ) { if (obj instanceof ClassWithGoodEqualsMethod) { return getId() == (((ClassWithGoodEqualsMethod)obj).getId()); } return super.equals(obj); } } }