Exemple #1
0
    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]]
        })
Exemple #2
0
    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)
Exemple #3
0
    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])
Exemple #4
0
    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)
Exemple #5
0
    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)
Exemple #6
0
    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)
Exemple #7
0
    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)
Exemple #8
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)
Exemple #9
0
    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])
Exemple #10
0
    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")
Exemple #11
0
    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])