@Test public void returnsConnections() { Set<Layer> layers = new HashSet<Layer>(); Layer topLayer = new Layer(); Layer middleLayer = new Layer(); Layer bottomLayer = new Layer(); Connections firstConnection = new FullyConnected(topLayer, middleLayer, 0, 0); Connections secondConnection = new FullyConnected(middleLayer, bottomLayer, 0, 0); topLayer.addConnection(firstConnection); middleLayer.addConnection(firstConnection); middleLayer.addConnection(secondConnection); bottomLayer.addConnection(secondConnection); layers.add(topLayer); layers.add(middleLayer); layers.add(bottomLayer); network.setLayers(layers); List<Connections> connections = network.getConnections(); assertTrue(connections.contains(firstConnection)); assertTrue(connections.contains(secondConnection)); }
@Test public void addLayerToANullLayerList() { Layer topLayer = new Layer(); network.setLayers(null); assertTrue(network.addLayer(topLayer)); assertEquals(topLayer, network.getOutputLayer()); }
@Test public void addLayersAddsLayersToNullLayerList() { network.setLayers(null); List<Layer> layers = new ArrayList<Layer>(); layers.add(new Layer()); layers.add(new Layer()); network.addLayers(layers); assertEquals(2, network.getLayers().size()); }
@Test public void canSetLayersOnAnUninitializedNetwork() { assertEquals(0, network.getLayers().size()); Set<Layer> layers = new HashSet<Layer>(); layers.add(new Layer()); layers.add(new Layer()); layers.add(new Layer()); network.setLayers(layers); assertEquals(layers, network.getLayers()); }
@Test public void removesNonexistentLayer() { Set<Layer> layers = new HashSet<Layer>(); Layer topLayer = new Layer(); Layer middleLayer = new Layer(); Layer bottomLayer = new Layer(); layers.add(topLayer); layers.add(middleLayer); layers.add(bottomLayer); network.setLayers(layers); assertTrue(network.removeLayer(new Layer())); }
@Test public void returnsConnectionBetweenTwoLayers() { Set<Layer> layers = new HashSet<Layer>(); Layer topLayer = new Layer(); Layer middleLayer = new Layer(); Connections firstConnection = new FullyConnected(topLayer, middleLayer, 0, 0); topLayer.addConnection(firstConnection); layers.add(topLayer); layers.add(middleLayer); network.setLayers(layers); assertEquals(firstConnection, network.getConnection(topLayer, middleLayer)); assertEquals(firstConnection, network.getConnection(middleLayer, topLayer)); }
@Test public void returnsNullWhenThereIsntAConnectingLayer() { Set<Layer> layers = new HashSet<Layer>(); Layer topLayer = new Layer(); Layer middleLayer = new Layer(); Layer bottomLayer = new Layer(); Connections firstConnection = new FullyConnected(topLayer, middleLayer, 0, 0); topLayer.addConnection(firstConnection); layers.add(topLayer); layers.add(middleLayer); network.setLayers(layers); assertNull(network.getConnection(topLayer, bottomLayer)); assertNull(network.getConnection(bottomLayer, topLayer)); }
@Test public void returnsInputLayer() { Set<Layer> layers = new HashSet<Layer>(); Layer topLayer = new Layer(); Layer middleLayer = new Layer(); Layer bottomLayer = new Layer(); Connections firstConnection = new FullyConnected(topLayer, middleLayer, 0, 0); Connections secondConnection = new FullyConnected(middleLayer, bottomLayer, 0, 0); topLayer.addConnection(firstConnection); middleLayer.addConnection(firstConnection); middleLayer.addConnection(secondConnection); bottomLayer.addConnection(secondConnection); layers.add(topLayer); layers.add(middleLayer); layers.add(bottomLayer); network.setLayers(layers); assertEquals(topLayer, network.getInputLayer()); }
@Test public void removesTopLayer() { Set<Layer> layers = new HashSet<Layer>(); Layer topLayer = new Layer(); Layer middleLayer = new Layer(); Layer bottomLayer = new Layer(); Connections firstConnection = new FullyConnected(topLayer, middleLayer, 0, 0); Connections secondConnection = new FullyConnected(middleLayer, bottomLayer, 0, 0); topLayer.addConnection(firstConnection); middleLayer.addConnection(firstConnection); middleLayer.addConnection(secondConnection); bottomLayer.addConnection(secondConnection); layers.add(topLayer); layers.add(middleLayer); layers.add(bottomLayer); network.setLayers(layers); assertTrue(network.removeLayer(topLayer)); }
@Test public void removeLayerFromNullLayerList() { network.setLayers(null); assertFalse(network.removeLayer(new Layer())); }
@Test public void returnsEmptySetOfConnectionsOnNullLayers() { network.setLayers(null); assertEquals(0, network.getConnections().size()); }