import org.junit.Before;
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
import java.util.stream.IntStream;
import static org.junit.Assert.assertEquals;
public class MakingWiredConnectionsTest {
private boolean isFeasable;
private List<GraphVertex> expected;
private List<GraphVertex> G;
private List<GraphVertex> figureNineteenDotEight;
@Test
public void isAnyPlacementFeasible1() throws Exception {
isFeasable = true;
expected = figureNineteenDotEight;
test(isFeasable, expected, G);
}
@Test
public void isAnyPlacementFeasible2() throws Exception {
isFeasable = true;
expected = figureNineteenDotEight;
G.get(3).data = 1;
G.get(16).data = 0;
test(isFeasable, expected, G);
}
@Test
public void isAnyPlacementFeasible3() throws Exception {
isFeasable = false;
GraphVertex a = new GraphVertex(1);
GraphVertex b = new GraphVertex(0);
GraphVertex c = new GraphVertex(1);
a.edges.addAll(Arrays.asList(b,c));
b.edges.addAll(Arrays.asList(a,c));
c.edges.addAll(Arrays.asList(a,b));
GraphVertex d = new GraphVertex(1);
GraphVertex e = new GraphVertex(0);
GraphVertex f = new GraphVertex(1);
d.edges.addAll(Arrays.asList(e,f));
e.edges.addAll(Arrays.asList(d,f));
f.edges.addAll(Arrays.asList(d,e));
expected = Arrays.asList(a,b,c,d,e,f);
G = Arrays.asList(a,b,c,d,e,f);
test(isFeasable, expected, G);
}
private void test(boolean isFeasable, List<GraphVertex> expected, List<GraphVertex> G) {
assertEquals(isFeasable, MakingWiredConnections.isAnyPlacementFeasible(G));
assertEquals(expected, G);
}
@Before
public void setup() {
IntStream.range(0,2).forEach(
x -> {
GraphVertex a = new GraphVertex(1);
GraphVertex b = new GraphVertex(0);
GraphVertex c = new GraphVertex(1);
GraphVertex d = new GraphVertex(0);
GraphVertex e = new GraphVertex(1);
GraphVertex f = new GraphVertex(1);
GraphVertex g = new GraphVertex(0);
GraphVertex h = new GraphVertex(0);
GraphVertex i = new GraphVertex(0);
GraphVertex j = new GraphVertex(1);
GraphVertex k = new GraphVertex(1);
GraphVertex l = new GraphVertex(1);
GraphVertex m = new GraphVertex(0);
GraphVertex n = new GraphVertex(0);
GraphVertex o = new GraphVertex(1);
GraphVertex p = new GraphVertex(1);
GraphVertex q = new GraphVertex(1);
GraphVertex r = new GraphVertex(0);
GraphVertex s = new GraphVertex(0);
GraphVertex t = new GraphVertex(1);
GraphVertex u = new GraphVertex(1);
GraphVertex v = new GraphVertex(0);
a.edges.addAll(Arrays.asList(b,d));
b.edges.addAll(Arrays.asList(a,c,e));
c.edges.addAll(Arrays.asList(b,g));
d.edges.addAll(Arrays.asList(a,e,f));
e.edges.addAll(Arrays.asList(b,d,g,i));
f.edges.addAll(Arrays.asList(d,h,i));
g.edges.addAll(Arrays.asList(e,j));
h.edges.addAll(Arrays.asList(f,k,l));
i.edges.addAll(Arrays.asList(f,j,l));
j.edges.addAll(Arrays.asList(g,i,m));
k.edges.addAll(Arrays.asList(h,n));
l.edges.addAll(Arrays.asList(h,i,m,n));
m.edges.addAll(Arrays.asList(j,l,o));
n.edges.addAll(Arrays.asList(k,l,p,q));
o.edges.addAll(Arrays.asList(m,r));
p.edges.addAll(Arrays.asList(n,s));
q.edges.addAll(Arrays.asList(n,r,s));
r.edges.addAll(Arrays.asList(o,t));
s.edges.addAll(Arrays.asList(p,q,u));
t.edges.addAll(Arrays.asList(r,v));
u.edges.addAll(Arrays.asList(s,v));
v.edges.addAll(Arrays.asList(t,u));
switch (x) {
case 0:
figureNineteenDotEight = Arrays.asList(
a,b,c,d,e,f,
g,h,i,j,k,l,
m,n,o,p,q,r,
s,t,u,v
);
break;
case 1:
G = Arrays.asList(
a,b,c,d,e,f,
g,h,i,j,k,l,
m,n,o,p,q,r,
s,t,u,v
);
}
}
);
}
}