/* * 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.ArrayList; import junit.framework.TestCase; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.teiid.designer.ui.common.eventsupport.SelectionProvider; /** * TestSelectionProvider */ public class TestSelectionProvider extends TestCase { /** * Constructor for TestSelectionProvider. * @param name */ public TestSelectionProvider(String name) { super(name); } // ======================================================== // utility methods private ISelection createSelection() { Object[] array = new Object[] { new Object(), new Object(), new Object() }; return new StructuredSelection(array); } class InstrumentedSelectionChangedListener implements ISelectionChangedListener { public ISelection selection; public Object source; public SelectionChangedEvent event; @Override public void selectionChanged(SelectionChangedEvent e) { this.event = e; this.source = e.getSource(); this.selection = e.getSelection(); } } // ======================================================== // test cases /* * Test for void SelectionProvider() */ public void testSelectionProvider() { SelectionProvider p = new SelectionProvider(); assertNotNull(p); assertNotNull(p.getListenerList()); assertNull(p.getSelection()); } public void testAddSelectionChangedListener() { SelectionProvider p = new SelectionProvider(); p.addSelectionChangedListener(null); assertTrue(p.getListenerList().size() == 0); ISelectionChangedListener l = new InstrumentedSelectionChangedListener(); p.addSelectionChangedListener(l); assertTrue(p.getListenerList().size() == 1); p.addSelectionChangedListener(l); assertTrue(p.getListenerList().size() == 1); } public void testRemoveSelectionChangedListener() { SelectionProvider p = new SelectionProvider(); p.removeSelectionChangedListener(null); assertTrue(p.getListenerList().size() == 0); ISelectionChangedListener l = new InstrumentedSelectionChangedListener(); p.removeSelectionChangedListener(l); assertTrue(p.getListenerList().size() == 0); p.addSelectionChangedListener(l); assertTrue(p.getListenerList().size() == 1); p.removeSelectionChangedListener(l); assertTrue(p.getListenerList().size() == 0); p.removeSelectionChangedListener(l); assertTrue(p.getListenerList().size() == 0); } /* * Test for void setSelection(SelectionChangedEvent) */ public void testSetSelectionSelectionChangedEvent() { SelectionProvider source = new SelectionProvider(); SelectionProvider p = new SelectionProvider(); InstrumentedSelectionChangedListener l = new InstrumentedSelectionChangedListener(); p.addSelectionChangedListener(l); assertNull(l.selection); ISelection selection = createSelection(); p.setSelection(new SelectionChangedEvent(source, selection)); assertTrue(l.selection == selection); assertTrue(l.source == source); assertTrue(p.getSelection() == selection); p.setSelection((SelectionChangedEvent) null); assertNull(p.getSelection()); } /* * Test for void setSelection(List) */ public void testSetSelectionList() { ArrayList list = new ArrayList(2); list.add(new Object()); list.add(new Object()); SelectionProvider p = new SelectionProvider(); InstrumentedSelectionChangedListener l = new InstrumentedSelectionChangedListener(); p.addSelectionChangedListener(l); p.setSelection(list); assertNotNull(l.selection); StructuredSelection selection = new StructuredSelection(list); assertEquals(l.selection, selection); } /* * Test for void setSelection(ISelection) */ public void testSetSelectionISelection() { SelectionProvider p = new SelectionProvider(); InstrumentedSelectionChangedListener l = new InstrumentedSelectionChangedListener(); ISelection selection = createSelection(); p.addSelectionChangedListener(l); p.setSelection(selection); assertNotNull(l.selection); assertTrue(l.selection == selection); } /* * Test for void setSelection(ISelection, boolean) */ public void testSetSelectionISelectionboolean() { SelectionProvider p = new SelectionProvider(); InstrumentedSelectionChangedListener l = new InstrumentedSelectionChangedListener(); ISelection selection = createSelection(); p.addSelectionChangedListener(l); p.setSelection(selection, false); assertNull(l.selection); p.setSelection(selection, true); assertNotNull(l.selection); assertTrue(l.selection == selection); } /* * Test for void setSelection(ISelection, boolean, ISelectionProvider) */ public void testSetSelectionISelectionbooleanISelectionProvider() { SelectionProvider p = new SelectionProvider(); InstrumentedSelectionChangedListener l = new InstrumentedSelectionChangedListener(); ISelection selection = createSelection(); p.addSelectionChangedListener(l); p.setSelection(selection, false, null); assertNull(l.selection); p.setSelection(selection, true, null); assertNotNull(l.selection); assertTrue(l.selection == selection); SelectionProvider source = new SelectionProvider(); p.setSelection(selection, true, source); assertNotNull(l.selection); assertTrue(l.selection == selection); assertTrue(l.source == source); } public void testFireSelectionChangedEvent() { SelectionProvider p = new SelectionProvider(); InstrumentedSelectionChangedListener l = new InstrumentedSelectionChangedListener(); p.addSelectionChangedListener(l); ISelection selection = createSelection(); SelectionProvider source = new SelectionProvider(); p.fireSelectionChangedEvent(new SelectionChangedEvent(source, selection)); assertNotNull(l.selection); assertTrue(l.selection == selection); assertTrue(l.source == source); // calling this method should NOT set the internal selection - that's what setSelection(event) is for assertNull(p.getSelection()); } }