Esempio n. 1
0
    def test_add_multiple(self):
        self.assertEqual(Floor().add([MICRO1, GEN1]),
                         Floor([MICRO1, GEN1]))

        # add to nonempty floor
        self.assertEqual(Floor([GEN1, GEN2]).add([MICRO1, MICRO2]),
                         Floor([GEN1, GEN2, MICRO1, MICRO2]))
Esempio n. 2
0
    def test_get_possible_buildings__2_objects(self):
        b = Building([Floor(), Floor([MICRO1, MICRO2]), Floor(), Floor()])
        possibilities = [
            (Floor([MICRO1]), Floor([MICRO2])),
            (Floor([MICRO2]), Floor([MICRO1])),

            (Floor([MICRO1, MICRO2]), Floor()),
        ]
        self.assert_possible_buildings(b, 1, [0, 2], possibilities)
Esempio n. 3
0
    def test_get_possible_buildings__bounded(self):
        empty = Floor()
        full = Floor([MICRO1, MICRO2])
        possibilities = [
            (Floor([MICRO1]), Floor([MICRO2])),
            (Floor([MICRO2]), Floor([MICRO1])),

            (full, empty),
        ]

        # up
        b = Building([full] + [empty] * 3)
        self.assert_possible_buildings(b, 0, [1], possibilities)

        # down
        b = Building([empty] * 3 + [full])
        self.assert_possible_buildings(b, 3, [2], possibilities)
Esempio n. 4
0
    def test_move(self):
        b = Building([Floor([MICRO1]), Floor(), Floor(), Floor([MICRO2])])

        self.assertIsNone(b.move_objects_up(3, []))
        self.assertIsNone(b.move_objects_down(0, []))

        pos, b = b.move_objects_up(0, [MICRO1])
        self.assertEqual(pos, 1)
        self.assertEqual(b, Building([Floor(),
                                      Floor([MICRO1]),
                                      Floor(),
                                      Floor([MICRO2])]))

        pos, b = b.move_objects_down(3, [MICRO2])
        self.assertEqual(pos, 2)
        self.assertEqual(b, Building([Floor(),
                                      Floor([MICRO1]),
                                      Floor([MICRO2]),
                                      Floor()]))
Esempio n. 5
0
 def test_remove_multiple(self):
     self.assertEqual(Floor().remove([MICRO1, GEN1]), Floor())
     self.assertEqual(Floor([GEN2, MICRO2]).remove([MICRO1, GEN2]),
                      Floor([MICRO2]))
Esempio n. 6
0
    def test_remove_single(self):
        # remove from empty floor
        self.assertEqual(Floor().remove(MICRO1), Floor())
        self.assertEqual(Floor().remove(GEN1), Floor())

        # remove non-member
        floor = Floor([GEN2, MICRO2])
        self.assertEqual(floor.remove(MICRO1), floor)
        self.assertEqual(floor.remove(GEN1), floor)

        # remove member
        self.assertEqual(floor.remove(MICRO2), Floor([GEN2]))
        self.assertEqual(floor.remove(GEN2), Floor([MICRO2]))
Esempio n. 7
0
    def test_add_single(self):
        # add to empty floor
        self.assertEqual(Floor().add(MICRO1), Floor([MICRO1]))
        self.assertEqual(Floor().add(GEN1), Floor([GEN1]))

        # add to nonempty floor
        self.assertEqual(Floor([GEN1, GEN2, MICRO2]).add(MICRO1),
                         Floor([GEN1, GEN2, MICRO2, MICRO1]))

        self.assertEqual(Floor([MICRO1, GEN2, MICRO2]).add(GEN1),
                         Floor([MICRO1, GEN2, MICRO2, GEN1]))

        # add member
        floor = Floor([GEN1, GEN2, MICRO2])
        self.assertEqual(floor.add(MICRO2), floor)
        self.assertEqual(floor.add(GEN2), floor)
Esempio n. 8
0
 def test_get_possible_buildings__1_object(self):
     empty = Floor()
     full = Floor([MICRO1])
     b = Building([empty, full, empty, empty])
     self.assert_possible_buildings(b, 1, [0, 2], [(full, empty)])
Esempio n. 9
0
 def test_get_possible_buildings__empty_floor(self):
     b = Building([Floor([MICRO1, MICRO2]), Floor(), Floor(), Floor()])
     self.assert_possible_buildings(b, 1, [0, 2], [])
Esempio n. 10
0
 def assert_is_possible(self, objects, expected):
     assertion = self.assertTrue if expected else self.assertFalse
     return assertion(Floor(objects).is_possible())
Esempio n. 11
0
 def build_building(moved, remaining, index):
     floors = [Floor()] * 4
     floors[position] = remaining
     floors[index] = moved
     return index, Building(floors)
Esempio n. 12
0
 def is_possible(self):
     possible = Building([Floor(), Floor(), Floor(), Floor()])
     impossible = Building([Floor([MICRO1, GEN2]),
                            Floor(), Floor(), Floor()])
     self.assertTrue(possible.is_possible())
     self.assertFalse(impossible.is_possible())