package vroom.common.utilities.graphs; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.junit.Before; import org.junit.Test; public class CutTest { int size = 20; CompleteGraph graph; Cut cut; @Before public void setUp() { double[][] capacityMatrix = new double[size][size]; double[][] costMatrix = new double[size][size]; for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { capacityMatrix[i][j] = 1; } } graph = new CompleteGraph(true, costMatrix, capacityMatrix); cut = new Cut(graph); } @Test public void testAddNode() { for (int i = 0; i < size; i++) { assertTrue("Cut should not contain node " + i, cut.add(i)); assertTrue("Cut should contain node " + i, cut.contains(i)); } } @Test public void testRemoveNode() { for (int i = 0; i < size; i++) { cut.add(i); } for (int i = 0; i < size; i++) { assertTrue("Cut should contain node " + i, cut.remove(i)); assertTrue("Cut should not contain node " + i, !cut.contains(i)); } } @Test public void testGetCut() { boolean[] contains = new boolean[size]; for (int k = 1; k < size; k++) { int elem = 0; for (int i = 0; i <= k; i++) { cut.add(i); contains[i] = true; elem++; } for (int i : cut.getCut()) { assertTrue(contains[i]); } assertEquals(elem, cut.getCut().size()); } } @Test public void testGetComplement() { boolean[] contains = new boolean[size]; for (int k = 1; k < size; k++) { int elem = size; for (int i = 0; i <= k; i++) { cut.add(i); contains[i] = true; elem--; } for (int i : cut.getComplement()) { assertTrue(!contains[i]); } assertEquals(elem, cut.getComplement().size()); } } @Test public void testGetCapacity() { boolean[] contains = new boolean[size]; for (int k = 1; k < size; k++) { int elem = 0; for (int i = 0; i <= k; i++) { cut.add(i); contains[i] = true; elem++; } assertEquals(elem * (size - elem), cut.getCapacity(), 1e-12); } } }