List<ActorMove> legalMoves = fantomas.getLegalMoves(g);
assertNotNull(legalMoves);
assertEquals(2, legalMoves.size());
ActorMove move = null;
for(ActorMove m : legalMoves) {
assertNotNull(m);
assertNotNull(m.getTargetNode());
if(m.getTargetNode() == n6) {
move = m;
break;
}
}
assertNotNull(move);
assertSame(fantomas, move.getActor());
assertSame(bus, move.getTransportType());
move = null;
for(ActorMove m : legalMoves) {
assertNotNull(m);
assertNotNull(m.getTargetNode());
if(m.getTargetNode() == n2) {
move = m;
break;
}
}
assertNotNull(move);
assertSame(fantomas, move.getActor());
assertSame(tram, move.getTransportType());
// Now place a different actor to node 6
joker.setCurrentPosition(n6);
// Check that legal moves for Fantomas did not change
legalMoves = fantomas.getLegalMoves(g);
assertNotNull(legalMoves);
assertEquals(2, legalMoves.size());
move = null;
for(ActorMove m : legalMoves) {
assertNotNull(m);
assertNotNull(m.getTargetNode());
if(m.getTargetNode() == n6) {
move = m;
break;
}
}
assertNotNull(move);
assertSame(fantomas, move.getActor());
assertSame(bus, move.getTransportType());
move = null;
for(ActorMove m : legalMoves) {
assertNotNull(m);
assertNotNull(m.getTargetNode());
if(m.getTargetNode() == n2) {
move = m;
break;
}
}
assertNotNull(move);
assertSame(fantomas, move.getActor());
assertSame(tram, move.getTransportType());
// Now place a detective to node 2
batman.setCurrentPosition(n2);
// Again, check that legal moves for Fantomas did not change
legalMoves = fantomas.getLegalMoves(g);
assertNotNull(legalMoves);
assertEquals(2, legalMoves.size());
move = null;
for(ActorMove m : legalMoves) {
assertNotNull(m);
assertNotNull(m.getTargetNode());
if(m.getTargetNode() == n6) {
move = m;
break;
}
}
assertNotNull(move);
assertSame(fantomas, move.getActor());
assertSame(bus, move.getTransportType());
move = null;
for(ActorMove m : legalMoves) {
assertNotNull(m);
assertNotNull(m.getTargetNode());
if(m.getTargetNode() == n2) {
move = m;
break;
}
}
assertNotNull(move);
assertSame(fantomas, move.getActor());
assertSame(tram, move.getTransportType());
legalMoves = batman.getLegalMoves(g);
assertNotNull(legalMoves);
assertEquals(4, legalMoves.size());
move = null;
for(ActorMove m : legalMoves) {
assertNotNull(m);
assertNotNull(m.getTargetNode());
if(m.getTargetNode() == n1
&& m.getTransportType() == tram) {
move = m;
break;
}
}
assertNotNull(move);
assertSame(batman, move.getActor());
move = null;
for(ActorMove m : legalMoves) {
assertNotNull(m);
assertNotNull(m.getTargetNode());
if(m.getTargetNode() == n1
&& m.getTransportType() == universal) {
move = m;
break;
}
}
assertNotNull(move);
assertSame(batman, move.getActor());
move = null;
for(ActorMove m : legalMoves) {
assertNotNull(m);
assertNotNull(m.getTargetNode());
if(m.getTargetNode() == n3
&& m.getTransportType() == bus) {
move = m;
break;
}
}
assertNotNull(move);
assertSame(batman, move.getActor());
move = null;
for(ActorMove m : legalMoves) {
assertNotNull(m);
assertNotNull(m.getTargetNode());
if(m.getTargetNode() == n3
&& m.getTransportType() == universal) {
move = m;
break;
}
}
assertNotNull(move);
assertSame(batman, move.getActor());
}