def urbanmain() = {
import M4._
val b_init = Board(Set(King(2,Wht,(4,1)), King(1,Red,(5,8)),
Pawn(4,Wht,(1,1)), Pawn(4,Red,(1,8)),
Pawn(3,Wht,(2,1)), Pawn(2,Red,(2,8)),
Pawn(2,Wht,(3,1)), Pawn(3,Red,(3,8)),
Pawn(1,Wht,(5,1)), Pawn(1,Red,(4,8)),
Pawn(4,Wht,(6,1)), Pawn(3,Red,(6,8)),
Pawn(3,Wht,(7,1)), Pawn(1,Red,(7,8)),
Pawn(2,Wht,(8,1)), Pawn(3,Red,(8,8))))
val pw_c = Pawn(2, Wht, (4,4))
val pw_d = Pawn(3, Red, (4,4))
assert(all_moves(pw_c, b_init) ==
Set(Pawn(2,Wht,(3,5)), Pawn(2,Wht,(2,4)), Pawn(2,Wht,(3,3)), Pawn(2,Wht,(5,5)),
Pawn(2,Wht,(6,4)), Pawn(2,Wht,(4,6)), Pawn(2,Wht,(4,2)), Pawn(2,Wht,(5,3))))
assert(all_moves(pw_d, b_init) ==
Set(Pawn(3,Red,(4,7)), Pawn(3,Red,(5,2)), Pawn(3,Red,(3,2)), Pawn(3,Red,(1,4)),
Pawn(3,Red,(6,3)), Pawn(3,Red,(3,6)), Pawn(3,Red,(2,5)), Pawn(3,Red,(2,3)),
Pawn(3,Red,(4,1)), Pawn(3,Red,(5,6)), Pawn(3,Red,(7,4)), Pawn(3,Red,(6,5))))
}