def test_save(self): n0 = Nonogram("black", [[1], [2], [3, 4]], [[1, 3], [2, 5]]) self.assertEqual(n0.save(), { "type": "black", "row": [[1], [2], [3, 4]], "column": [[1, 3], [2, 5]] })
def test_load(self): n0 = Nonogram("black", [[1], [2], [3, 4]], [[1, 3], [2, 5]]) n1 = Nonogram.load({ "type": "black", "row": [[1], [2], [3, 4]], "column": [[1, 3], [2, 5]] }) self.assertEqual(n0, n1)
def test_get_layout_and_solution_line(self): n0 = Nonogram("black", [[1], [2], [3, 4]], [[1, 3], [2, 5]]) ss0 = SolutionStep(n0) x, y = ss0.shape() for i in xrange(x): l, s = ss0.row_layout(i), ss0.row_lineup(i) rl = n0.row_layout(i) for j in xrange(len(rl)): self.assertEqual(l[j].value(), rl[j])
def test_save_and_load_using_file(self): handler, tmpfile = tempfile.mkstemp(prefix="nonogram_") try: n0 = Nonogram("black", [[1], [2], [3, 4]], [[1, 3], [2, 5]]) n0.save_to_file(tmpfile) n1 = Nonogram.load_from_file(tmpfile) self.assertEqual(n0, n1) finally: os.close(handler) os.remove(tmpfile)
def test_detect_and_compare(self): test_data = self.getLayoutData() detector = Detector() for image, layout in test_data: n0 = Nonogram.load_from_file(layout) n1 = detector.recognize(image) self.assertEqual(n0, n1, "Detection failed: %s" % layout)
def test_all_indexes_is_unique(self): n0 = Nonogram("black", [[1], [2], [3, 4]], [[1, 3], [2, 5]]) ss0 = SolutionStep(n0) x_size, y_size = n0.shape() indexes = 0 ids = set() for i in xrange(y_size): rl = n0.row_layout(i) for j in xrange(len(rl)): indexes = indexes + 1 ids.add(ss0.row[i][j]) for i in xrange(x_size): cl = n0.col_layout(i) for j in xrange(len(cl)): indexes = indexes + 1 ids.add(ss0.column[i][j]) self.assertEqual(len(ids), indexes)
def test_space_size(self): n0 = Nonogram("black", [[1], [2], [3, 4]], [[1, 3], [2, 5]]) self.assertEqual(n0.space_size(), 1) # todo n1 = Nonogram("color", [[1], [2], [3, 4]], [[1, 3], [2, 5]]) self.assertEqual(n1.space_size(), 0)
def test_solve_and_compare(self): test_data = self.getSolutionData() mySolver = Solver() for layout, solution in test_data: s0 = Solution.load_from_file(solution) print s0 n0 = Nonogram.load_from_file(layout) s1 = mySolver.solve(n0) print s1 self.assertEqual(s0, s1, "Solution failed: %s" % solution)
def test_shape_layout_getter(self): n0 = Nonogram("black", [[1], [2], [3, 4]], [[1, 3], [2, 5]]) self.assertEqual(n0.shape(), (2, 3)) self.assertEqual(n0.row_layout(0), [1]) self.assertEqual(n0.row_layout(1), [2]) self.assertEqual(n0.row_layout(2), [3, 4]) self.assertEqual(n0.col_layout(0), [1, 3]) self.assertEqual(n0.col_layout(1), [2, 5])
def test_equal_to(self): n0 = Nonogram("black", [[1], [2], [3, 4]], [[1, 3], [2, 5]]) n_type = Nonogram("color", [[1], [2], [3, 4]], [[1, 3], [2, 5]]) n_row1 = Nonogram("black", [[1], [2], [3, 4], [3, 4]], [[1, 3], [2, 5]]) n_row2 = Nonogram("black", [[1], [2], [4, 3]], [[1, 3], [2, 5]]) n_col1 = Nonogram("black", [[1], [2], [3, 4]], [[1, 3], [2, 5], [2, 5]]) n_col2 = Nonogram("black", [[1], [2], [3, 4]], [[1, 3], [5, 2]]) n1 = Nonogram("black", [[1], [2], [3, 4]], [[1, 3], [2, 5]]) self.assertNotEqual(n0, None) self.assertNotEqual(n0, n_type, "Type check") self.assertNotEqual(n0, n_row1, "Extra row") self.assertNotEqual(n0, n_row2, "Value in row isn't equal") self.assertNotEqual(n0, n_col1, "Extra column") self.assertNotEqual(n0, n_col2, "Value in column isn't equal") self.assertEqual(n0, n0, "The same") self.assertEqual(n0, n1, "The same")
def test_from_nonogram(self): n0 = Nonogram("black", [[1], [2], [3, 4]], [[1, 3], [2, 5]]) ss0 = SolutionStep(n0) self.assertEqual(n0.shape(), ss0.shape()) x_size, y_size = n0.shape() for i in xrange(y_size): rl = n0.row_layout(i) for j in xrange(len(rl)): self.assertEqual(ss0.row[i][j].value(), rl[j]) for i in xrange(x_size): cl = n0.col_layout(i) for j in xrange(len(cl)): self.assertEqual(ss0.column[i][j].value(), cl[j])