def setUp(self):
     self.include_levels = ['Kids', 'Easy', 'Moderate']
     self.test_cases = [
         x for x in su.SAMPLE_PUZZLES if x['level'] in self.include_levels
     ]
     self.pt = pt.PuzzleTester(puzzle_class=su.SudokuPuzzle)
     self.pt.add_test_cases(self.test_cases)
    def test_results(self):
        """Check test results"""
        solver = su.SudokuSolver()
        self.assertEqual(3, len(self.pt.get_test_results()))
        self.pt.run_tests(solver)
        self.assertEqual(4, len(self.pt.get_test_results()))
        self.assertEqual(1, len(self.pt.get_solver_labels()))

        results = self.pt.get_test_results()
        newpt = pt.PuzzleTester(puzzle_class=su.SudokuPuzzle)
        newpt.set_test_results(results)
        self.assertEqual(self.pt.get_test_results(), newpt.get_test_results())
    def test_class_init_and_add_cases(self):
        """Test we can create class and add test cases"""
        self.assertTrue(isinstance(self.pt, pt.PuzzleTester))

        self.pt.add_test_cases(self.test_cases)
        self.assertEqual(3, self.pt.num_test_cases())

        # Add some bad cases
        self.assertRaises(ValueError, self.pt.add_test_cases, 'banana')
        self.assertRaises(ValueError, self.pt.add_test_cases,
                          ['banana', 'vodka'])

        # Add test cases without labels
        self.pt = pt.PuzzleTester(ls.LatinSquare)
        for tc in self.test_cases:
            del tc['label']
        self.pt.add_test_cases(self.test_cases)
        self.assertEqual(3, self.pt.num_test_cases())
    def setUp(self):
        self.pt = pt.PuzzleTester(ls.LatinSquare)
        self.test_cases = []

        for i, puz in enumerate(TEST_PUZZLE_STRINGS):
            self.test_cases.append({'label': f"test {i}", 'puzzle': puz})
 def test_from_file(self):
     """Can load test data from file"""
     tester = pt.PuzzleTester(ls.LatinSquare)
     tester.add_test_cases(pt.from_file("data/sudoku_9x9/hardest.txt"))
     self.assertEqual(13, tester.num_test_cases())