package au.gov.ga.earthsci.catalog.ui; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.net.URL; import org.eclipse.e4.core.contexts.IEclipseContext; import org.jmock.Expectations; import org.jmock.Mockery; import org.junit.Before; import org.junit.Test; import au.gov.ga.earthsci.catalog.AbstractCatalogTreeNode; import au.gov.ga.earthsci.catalog.ICatalogTreeNode; import au.gov.ga.earthsci.layer.tree.ILayerNode; import au.gov.ga.earthsci.layer.tree.ILayerTreeNode; import au.gov.ga.earthsci.layer.worldwind.ITreeModel; /** * Unit tests for the {@link CatalogBrowserController} * * @author James Navin (james.navin@ga.gov.au) */ public class CatalogBrowserControllerTest { private CatalogBrowserController classUnderTest; private ITreeModel currentLayerModel; private ILayerTreeNode rootNode; private Mockery mockContext; @Before public void setup() { mockContext = new Mockery(); currentLayerModel = mockContext.mock(ITreeModel.class); rootNode = mockContext.mock(ILayerTreeNode.class); mockContext.checking(new Expectations() { { { allowing(currentLayerModel).getRootNode(); will(returnValue(rootNode)); } } }); classUnderTest = new CatalogBrowserController(); classUnderTest.setCurrentLayerModel(currentLayerModel); } // ************************ // areAllLayerNodes() // ************************ @Test public void testAreAllLayerNodesWithNull() { ICatalogTreeNode[] nodes = null; assertTrue(classUnderTest.areAllLayerNodes(nodes)); } @Test public void testAreAllLayerNodesWithEmpty() { ICatalogTreeNode[] nodes = new ICatalogTreeNode[0]; assertTrue(classUnderTest.areAllLayerNodes(nodes)); } @Test public void testAreAllLayerNodesWithSingleLayerNode() { DummyCatalogNode node0 = new DummyCatalogNode(); node0.layerNode = true; ICatalogTreeNode[] nodes = new ICatalogTreeNode[] { node0 }; assertTrue(classUnderTest.areAllLayerNodes(nodes)); } @Test public void testAreAllLayerNodesWithSingleNonLayerNode() { DummyCatalogNode node0 = new DummyCatalogNode(); node0.layerNode = false; ICatalogTreeNode[] nodes = new ICatalogTreeNode[] { node0 }; assertFalse(classUnderTest.areAllLayerNodes(nodes)); } @Test public void testAreAllLayerNodesWithLayerNodesNoNulls() { DummyCatalogNode node0 = new DummyCatalogNode(); DummyCatalogNode node1 = new DummyCatalogNode(); DummyCatalogNode node2 = new DummyCatalogNode(); DummyCatalogNode node3 = new DummyCatalogNode(); node0.layerNode = true; node1.layerNode = true; node2.layerNode = true; node3.layerNode = true; ICatalogTreeNode[] nodes = new ICatalogTreeNode[] { node0, node1, node2, node3 }; assertTrue(classUnderTest.areAllLayerNodes(nodes)); } @Test public void testAreAllLayerNodesWithLayerNodesNulls() { DummyCatalogNode node0 = new DummyCatalogNode(); DummyCatalogNode node1 = new DummyCatalogNode(); DummyCatalogNode node2 = null; DummyCatalogNode node3 = new DummyCatalogNode(); node0.layerNode = true; node1.layerNode = true; node3.layerNode = true; ICatalogTreeNode[] nodes = new ICatalogTreeNode[] { node0, node1, node2, node3 }; assertTrue(classUnderTest.areAllLayerNodes(nodes)); } @Test public void testAreAllLayerNodesWithNonLayerNodesNoNulls() { DummyCatalogNode node0 = new DummyCatalogNode(); DummyCatalogNode node1 = new DummyCatalogNode(); DummyCatalogNode node2 = new DummyCatalogNode(); DummyCatalogNode node3 = new DummyCatalogNode(); node0.layerNode = true; node1.layerNode = true; node2.layerNode = false; node3.layerNode = true; ICatalogTreeNode[] nodes = new ICatalogTreeNode[] { node0, node1, node2, node3 }; assertFalse(classUnderTest.areAllLayerNodes(nodes)); } @Test public void testAreAllLayerNodesWithNonLayerNodesNulls() { DummyCatalogNode node0 = new DummyCatalogNode(); DummyCatalogNode node1 = null; DummyCatalogNode node2 = new DummyCatalogNode(); DummyCatalogNode node3 = new DummyCatalogNode(); node0.layerNode = true; node2.layerNode = false; node3.layerNode = true; ICatalogTreeNode[] nodes = new ICatalogTreeNode[] { node0, node1, node2, node3 }; assertFalse(classUnderTest.areAllLayerNodes(nodes)); } private static class DummyCatalogNode extends AbstractCatalogTreeNode { public DummyCatalogNode() { super(null); } boolean removable; boolean layerNode; String name; @Override public boolean isRemoveable() { return removable; } @Override public boolean isLayerNode() { return layerNode; } @Override public void loadLayer(ILayerNode node, IEclipseContext context) { } @Override public String getName() { return name; } @Override public URL getInformationURL() { return null; } @Override public String getInformationString() { return null; } } }