@Test public void record_average_with_two_model_stats_information_from_simple_vertices_should_change() { VertexStatsRecorder recorder = new VertexStatsRecorder(); Vertex simple = VertexFactory.makeSimpleVertex(); Vertex simple2 = VertexFactory.makeSimpleVertex(); Vertex simple3 = VertexFactory.makeSimpleVertex(); Vertex simple4 = VertexFactory.makeSimpleVertex(); simple.addNeighbour(simple2).addNeighbour(simple3).addNeighbour(simple4); simple2.addNeighbour(simple3).addNeighbour(simple4); simple3.addNeighbour(simple4); simple.publishYourStatsOn(recorder); simple2.publishYourStatsOn(recorder); simple3.publishYourStatsOn(recorder); simple4.publishYourStatsOn(recorder); Map<PlainTextStatsComponents, Integer> expected = new HashMap<PlainTextStatsComponents, Integer>(); int counter = 2; expected.put( PlainTextStatsComponents.NOfVertices, VertexVoteAccepter.DivideAndRound(4, counter)); expected.put(PlainTextStatsComponents.NOfEdges, VertexVoteAccepter.DivideAndRound(6, counter)); expected.put( PlainTextStatsComponents.NOfSources, VertexVoteAccepter.DivideAndRound(1, counter)); expected.put(PlainTextStatsComponents.NOfSinks, VertexVoteAccepter.DivideAndRound(1, counter)); expected.put(PlainTextStatsComponents.NOfWhites, VertexVoteAccepter.DivideAndRound(2, counter)); Assert.assertTrue(recorder.average(counter).isSimpleVerticesVotesEquals(expected)); Assert.assertFalse( recorder .average(counter) .isSimpleVerticesVotesEquals(new HashMap<PlainTextStatsComponents, Integer>())); }
@Test public void check_divide_and_round_utility_method() { Assert.assertEquals(1, VertexVoteAccepter.DivideAndRound(4, 4)); Assert.assertEquals(2, VertexVoteAccepter.DivideAndRound(4, 2)); Assert.assertEquals(1, VertexVoteAccepter.DivideAndRound(1, 4)); Assert.assertEquals(0, VertexVoteAccepter.DivideAndRound(0, 4)); Assert.assertEquals(4, VertexVoteAccepter.DivideAndRound(16, 4)); Assert.assertEquals(4, VertexVoteAccepter.DivideAndRound(16, 5)); }
@Test public void record_average_with_two_model_stats_information_from_connected_components() { VertexStatsRecorder recorder = new VertexStatsRecorder(); ConnectedComponentWrapperVertex simple = VertexFactory.makeConnectedComponentWrapperVertex(); ConnectedComponentWrapperVertex simple2 = VertexFactory.makeConnectedComponentWrapperVertex(); ConnectedComponentWrapperVertex simple3 = VertexFactory.makeConnectedComponentWrapperVertex(); ConnectedComponentWrapperVertex simple4 = VertexFactory.makeConnectedComponentWrapperVertex(); simple.includeMember(VertexFactory.makeSimpleVertex()); simple.includeMember(VertexFactory.makeSimpleVertex()); simple.includeMember(VertexFactory.makeSimpleVertex()); simple.addNeighbour(simple2); simple2.includeMember(VertexFactory.makeSimpleVertex()); simple2.addNeighbour(simple3).addNeighbour(simple4); simple3.includeMember(VertexFactory.makeSimpleVertex()); simple3.includeMember(VertexFactory.makeSimpleVertex()); simple3.addNeighbour(simple4); simple4.includeMember(VertexFactory.makeSimpleVertex()); simple4.includeMember(VertexFactory.makeSimpleVertex()); simple4.includeMember(VertexFactory.makeSimpleVertex()); simple.publishYourStatsOn(recorder); simple2.publishYourStatsOn(recorder); simple3.publishYourStatsOn(recorder); simple4.publishYourStatsOn(recorder); int counter = 1; Map<PlainTextStatsComponents, Integer> expectedFor3members = new HashMap<PlainTextStatsComponents, Integer>(); expectedFor3members.put( PlainTextStatsComponents.NOfComponents, VertexVoteAccepter.DivideAndRound(2, counter)); expectedFor3members.put( PlainTextStatsComponents.NOfSources, VertexVoteAccepter.DivideAndRound(1, counter)); expectedFor3members.put( PlainTextStatsComponents.NOfSinks, VertexVoteAccepter.DivideAndRound(1, counter)); expectedFor3members.put( PlainTextStatsComponents.NOfWhites, VertexVoteAccepter.DivideAndRound(0, counter)); expectedFor3members.put( PlainTextStatsComponents.NOfEdges, VertexVoteAccepter.DivideAndRound(1, counter)); Map<PlainTextStatsComponents, Integer> expectedFor2members = new HashMap<PlainTextStatsComponents, Integer>(); expectedFor2members.put( PlainTextStatsComponents.NOfComponents, VertexVoteAccepter.DivideAndRound(1, counter)); expectedFor2members.put( PlainTextStatsComponents.NOfSources, VertexVoteAccepter.DivideAndRound(0, counter)); expectedFor2members.put( PlainTextStatsComponents.NOfSinks, VertexVoteAccepter.DivideAndRound(0, counter)); expectedFor2members.put( PlainTextStatsComponents.NOfWhites, VertexVoteAccepter.DivideAndRound(1, counter)); expectedFor2members.put( PlainTextStatsComponents.NOfEdges, VertexVoteAccepter.DivideAndRound(1, counter)); Map<PlainTextStatsComponents, Integer> expectedFor1members = new HashMap<PlainTextStatsComponents, Integer>(); expectedFor1members.put( PlainTextStatsComponents.NOfComponents, VertexVoteAccepter.DivideAndRound(1, counter)); expectedFor1members.put( PlainTextStatsComponents.NOfSources, VertexVoteAccepter.DivideAndRound(0, counter)); expectedFor1members.put( PlainTextStatsComponents.NOfSinks, VertexVoteAccepter.DivideAndRound(0, counter)); expectedFor1members.put( PlainTextStatsComponents.NOfWhites, VertexVoteAccepter.DivideAndRound(1, counter)); expectedFor1members.put( PlainTextStatsComponents.NOfEdges, VertexVoteAccepter.DivideAndRound(2, counter)); Assert.assertTrue(recorder.average(counter).isComponentsVotesEquals(3, expectedFor3members)); Assert.assertTrue(recorder.average(counter).isComponentsVotesEquals(2, expectedFor2members)); Assert.assertTrue(recorder.average(counter).isComponentsVotesEquals(1, expectedFor1members)); }