from unittest import TestCase from nim import evaluate, Evaluation class TestNimEvaluator(TestCase): def test_no_heaps(self): self.assertEqual(evaluate([]), Evaluation.WIN) def test_one_empty_heap(self): self.assertEqual(evaluate([0]), Evaluation.WIN) def test_multiple_empty_heaps(self): self.assertEqual(evaluate([0, 0]), Evaluation.WIN) def test_one_nonempty_heap(self): self.assertEqual(evaluate([1]), Evaluation.LOSS) def test_one_nonempty_heap_with_other_empty_heaps(self): self.assertEqual(evaluate([0, 1]), Evaluation.LOSS) def test_two_equal_heaps(self): self.assertEqual(evaluate([1, 1]), Evaluation.WIN) def test_pairs_of_equal_heaps_cancel(self): self.assertEqual(evaluate([1, 2, 2]), Evaluation.LOSS) def test_three_distinct_heaps_that_cancel(self): self.assertEqual(evaluate([3, 2, 1]), Evaluation.WIN) def test_four_distinct_heaps_that_cancel(self): self.assertEqual(evaluate([9, 12, 3, 6]), Evaluation.WIN) def test_distinct_heaps_that_do_not_cancel(self): self.assertEqual(evaluate([9, 12, 3, 7]), Evaluation.LOSS)