1
exercism fetch python rectangles

rectangles_test.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import unittest

from rectangles import count


# Tests adapted from `problem-specifications//canonical-data.json` @ v1.0.0

class WordTest(unittest.TestCase):
    def test_no_rows(self):
        self.assertEqual(count([]), 0)

    def test_no_columns(self):
        self.assertEqual(count(['']), 0)

    def test_no_rectangles(self):
        self.assertEqual(count([' ']), 0)

    def test_one_rectangle(self):
        lines = ['+-+',
                 '| |',
                 '+-+']
        self.assertEqual(count(lines), 1)

    def test_two_rectangles_without_shared_parts(self):
        lines = ['  +-+',
                 '  | |',
                 '+-+-+',
                 '| |  ',
                 '+-+  ']
        self.assertEqual(count(lines), 2)

    def test_five_rectangles_with_shared_parts(self):
        lines = ['  +-+',
                 '  | |',
                 '+-+-+',
                 '| | |',
                 '+-+-+']
        self.assertEqual(count(lines), 5)

    def test_rectangle_of_height_1_is_counted(self):
        lines = ['+--+',
                 '+--+']
        self.assertEqual(count(lines), 1)

    def test_rectangle_of_width_1_is_counted(self):
        lines = ['++',
                 '||',
                 '++']
        self.assertEqual(count(lines), 1)

    def test_1x1_square_is_counted(self):
        lines = ['++',
                 '++']
        self.assertEqual(count(lines), 1)

    def test_only_complete_rectangles_are_counted(self):
        lines = ['  +-+',
                 '    |',
                 '+-+-+',
                 '| | -',
                 '+-+-+']
        self.assertEqual(count(lines), 1)

    def test_rectangles_can_be_of_different_sizes(self):
        lines = ['+------+----+',
                 '|      |    |',
                 '+---+--+    |',
                 '|   |       |',
                 '+---+-------+']
        self.assertEqual(count(lines), 3)

    def test_corner_is_required_for_a_rectangle_to_be_complete(self):
        lines = ['+------+----+',
                 '|      |    |',
                 '+------+    |',
                 '|   |       |',
                 '+---+-------+']
        self.assertEqual(count(lines), 2)

    def test_large_input_with_many_rectangles(self):
        lines = ['+---+--+----+',
                 '|   +--+----+',
                 '+---+--+    |',
                 '|   +--+----+',
                 '+---+--+--+-+',
                 '+---+--+--+-+',
                 '+------+  | |',
                 '          +-+']
        self.assertEqual(count(lines), 60)


if __name__ == '__main__':
    unittest.main()