def test_setMoves(self): nim = Nim(2) self.assertEqual(len(nim.moves), 3) self.assertTrue((None,-1,0) in nim.moves) self.assertTrue((None,1,-1) in nim.moves) self.assertTrue((None,0,-1) in nim.moves) nim = Nim(4, 0.3122, PlayCondition.Misere) self.assertEqual(nim.rulecode, "0.3122") self.assertEqual(len(nim.moves), 6) self.assertTrue((None,-1,0,0,0) in nim.moves) self.assertTrue((None,0,-1,0,0) in nim.moves) self.assertTrue((None,1,-1,0,0) in nim.moves) self.assertTrue((None,0,1,-1,0) in nim.moves) self.assertTrue((None,1,0,0,-1) in nim.moves) self.assertTrue((None,0,0,1,-1) in nim.moves) nim = Nim(6, 0.3122, PlayCondition.Misere) self.assertEqual(nim.rulecode, "0.312200") self.assertEqual(len(nim.moves), 12) self.assertTrue((None,-1,0,0,0,0,0) in nim.moves) self.assertTrue((None,1,-1,0,0,0,0) in nim.moves) self.assertTrue((None,0,1,-1,0,0,0) in nim.moves) self.assertTrue((None,0,0,1,-1,0,0) in nim.moves) self.assertTrue((None,0,0,0,1,-1,0) in nim.moves) self.assertTrue((None,0,0,0,0,1,-1) in nim.moves) self.assertTrue((None,0,-1,0,0,0,0) in nim.moves) self.assertTrue((None,1,0,0,-1,0,0) in nim.moves) self.assertTrue((None,0,1,0,0,-1,0) in nim.moves) self.assertTrue((None,0,0,1,0,0,-1) in nim.moves) self.assertTrue((None,1,0,0,0,-1,0) in nim.moves) self.assertTrue((None,0,1,0,0,0,-1) in nim.moves)
def test_zeroTupleAbove(self): nim = Nim() t = (None,1,2,3,4) self.assertEqual(nim.zeroTupleAbove(t,1), (None,1,0,0,0)) self.assertEqual(nim.zeroTupleAbove(t,2), (None,1,2,0,0)) self.assertEqual(nim.zeroTupleAbove(t,3), (None,1,2,3,0)) self.assertEqual(nim.zeroTupleAbove(t,4), (None,1,2,3,4))
def test_zeroTupleBelow(self): nim = Nim() t = (None,1,2,3,4) self.assertEqual(nim.zeroTupleBelow(t,1), (None,1,2,3,4)) self.assertEqual(nim.zeroTupleBelow(t,2), (None,0,2,3,4)) self.assertEqual(nim.zeroTupleBelow(t,3), (None,0,0,3,4)) self.assertEqual(nim.zeroTupleBelow(t,4), (None,0,0,0,4))
def test_example4(self): nim = Nim(4, 0.3122, PlayCondition.Misere) nim.run() self.assertEqual(len(nim.p_positions()), 8) self.assertTrue((None,1,0,0,0) in nim.p_positions()) self.assertTrue((None,0,2,0,0) in nim.p_positions()) self.assertTrue((None,0,0,1,0) in nim.p_positions()) self.assertTrue((None,0,2,1,0) in nim.p_positions()) self.assertTrue((None,1,0,0,1) in nim.p_positions()) self.assertTrue((None,0,3,0,1) in nim.p_positions()) self.assertTrue((None,0,1,1,1) in nim.p_positions()) self.assertTrue((None,0,3,1,1) in nim.p_positions()) self.assertEqual(nim.rectangle, (None,2,4,2,2)) self.assertEqual(nim.preperiod, (None,0,2,1,0)) self.assertEqual(nim.period(), (None,2,2,1,2))
def test_example3_5(self): nim = Nim(3, None, PlayCondition.Misere) nim.run() self.assertEqual(len(nim.p_positions()), 5) self.assertTrue((None,1,0,0) in nim.p_positions()) self.assertTrue((None,0,2,0) in nim.p_positions()) self.assertTrue((None,1,1,1) in nim.p_positions()) self.assertTrue((None,0,0,2) in nim.p_positions()) self.assertTrue((None,0,2,2) in nim.p_positions()) self.assertEqual(nim.rectangle, (None,2,3,3)) self.assertEqual(nim.preperiod, (None,0,1,1)) self.assertEqual(nim.period(), (None,2,2,2))
def test_example2(self): nim = Nim(2) nim.run() self.assertEqual(len(nim.p_positions()), 1) self.assertEqual(nim.p_positions(), [(None,0,0)]) self.assertEqual(nim.rectangle, (None,2,2)) self.assertEqual(nim.preperiod, (None,0,0))
def test_incrementTupleWithCarry(self): nim = Nim(4) nim.rectangle = (None,2,2,2,2) t = nim.incrementTupleWithCarry(nim.origen) self.assertEqual(t, (None,1,0,0,0)) self.assertEqual(nim.inc_dim, 1) t = nim.incrementTupleWithCarry((None,2,1,0,0)) self.assertEqual(t, (None,0,2,0,0)) self.assertEqual(nim.inc_dim, 2) t = nim.incrementTupleWithCarry((None,2,2,0,0)) self.assertEqual(t, (None,0,0,1,0)) self.assertEqual(nim.inc_dim, 3)
def test_example5(self): nim = Nim(6, 0.3122, PlayCondition.Misere) nim.run() self.assertEqual(nim.rectangle, (None,2,5,2,4,4,4)) self.assertEqual(nim.preperiod, (None,0,3,1,2,2,2))