Beispiel #1
0
    def test_neither_set(self):
        c = Cell(9, 0, 0)
        self.assertIsNone(c.value())
        self.assertIsNotNone(c.possible_vals())
        self.assertEqual(9, c.possible_count())

        for x in self.__test_maxes:
            s = set(range(1, x + 1))
            c = Cell(x, 0, 0)
            self.assertEqual(s, c.possible_vals())
Beispiel #2
0
    def test_possible_val_mod(self):
        # Change the set returned by the possible val method, make sure it stays the same.

        c = Cell(9, 0, 0, poss_vals=frozenset({2, 3, 4}))

        ret_set = c.possible_vals()
        ret_set.add(5)

        self.assertEqual(4, len(ret_set))
        self.assertEqual(3, len(c.possible_vals()))

        self.assertEqual(3, c.possible_count())
Beispiel #3
0
    def test_value_poss_exclusive(self):

        c = Cell(9, 0, 0, 4)

        self.assertEqual(4, c.value())
        self.assertEqual(-1, c.possible_count())
        self.assertIsNone(c.possible_vals())

        c = Cell(9, 0, 0, poss_vals=frozenset({2, 3, 4}))

        self.assertIsNone(c.value())
        self.assertEqual({2, 3, 4}, c.possible_vals())
        self.assertEqual(3, c.possible_count())
Beispiel #4
0
    def test_set_possible_value(self):

        c = Cell(9, 0, 0, poss_vals=frozenset({1}))

        c2 = c.set_possible_value(2)
        self.assertEqual({1}, c.possible_vals())
        self.assertEqual({1, 2}, c2.possible_vals())

        # Out of range checks
        with self.assertRaises(ValueError):
            c.set_possible_value(0)

        with self.assertRaises(ValueError):
            c.set_possible_value(-1)

        with self.assertRaises(ValueError):
            c.set_possible_value(10)

        # Make sure setting a possible value on a set value doesn't change the value.
        c = Cell(9, 0, 0, 4)
        c2 = c.set_possible_value(5)

        self.assertFalse(c2.has_possible_val(5))
        self.assertEqual(-1, c2.possible_count())
        self.assertEqual(4, c2.value())
Beispiel #5
0
    def test_clear_possible_value(self):

        c = Cell(9, 0, 0, poss_vals=frozenset({2, 3, 4}))

        c2 = c

        for i in range(1, 10):
            c2 = c2.clear_possible_value(i)

        self.assertEqual({2, 3, 4}, c.possible_vals())
        self.assertEqual(set(), c2.possible_vals())

        c2 = c.clear_possible_value(5)
        self.assertEqual(c, c2)

        c2 = c.clear_possible_value(4)
        self.assertEqual({2, 3}, c2.possible_vals())
        self.assertEqual({2, 3, 4}, c.possible_vals())

        c = Cell(9, 0, 0, 4)
Beispiel #6
0
    def test_possible_values(self):

        for x in self.__test_maxes:
            vals = frozenset(range(1, x + 1))
            Cell(x, 0, 0, poss_vals=vals)

            with self.assertRaises(ValueError):
                vals = frozenset(range(0, x + 1))
                Cell(x, 0, 0, poss_vals=vals)

            with self.assertRaises(ValueError):
                vals = frozenset(range(1, x + 2))
                Cell(x, 0, 0, poss_vals=vals)

        s = frozenset({2, 3, 4})
        c = Cell(9, 0, 0, poss_vals=s)
        self.assertEqual(s, c.possible_vals())

        s = frozenset({4, 2, 9})
        c = Cell(9, 0, 0, poss_vals=s)
        self.assertEqual(s, c.possible_vals())