Example #1
0
    def test_put_in_ideal_slots(self):
        b = HybridBay(4, 3)
        b.populate([[
            Container(6, 4),
            Container(3, 3),
            Container(1, 2),
            Container(0, 1)
        ], [
            Container(9, 5),
            Container(7, 4),
            Container(4, 3),
            Container(2, 2)
        ]])

        extra_movement = b.put(Container(10, 5))
        self.assertEqual(0, extra_movement)
        expect_res = '(  ,  )(10,05)(  ,  )(  ,  )\n' \
                     '(09,05)(07,04)(04,03)(02,02)\n' \
                     '(06,04)(03,03)(01,02)(00,01)\n'
        self.assertEqual(expect_res, str(b))

        extra_movement = b.put(Container(5, 3))
        self.assertEqual(1, extra_movement)
        expect_res = '(  ,  )(10,05)(  ,  )(05,03)\n' \
                     '(09,05)(07,04)(04,03)(02,02)\n' \
                     '(06,04)(03,03)(01,02)(00,01)\n'
        self.assertEqual(expect_res, str(b))
 def test_stack_get_available(self):
     s = Stack(3, 0)
     self.assertEqual(s.get_available_index(), 0)
     s.put(Container(1, 1))
     s.put(Container(2, 1))
     s.put(Container(3, 1))
     self.assertEqual(s.get_available_index(), 3)
Example #3
0
 def test_take(self):
     b = BasicBay(4, 3)
     b.populate([[
         Container(1, 1),
         Container(2, 2),
         Container(3, 3),
         Container(4, 4)
     ], [
         Container(5, 5),
         Container(6, 6),
         Container(7, 7),
         Container(8, 8)
     ], [None, Container(9, 9), None,
         Container(9, 9)]])
     rh = b.take(3)
     self.assertEqual(rh, 1)
     expect_res = '(  ,  )(09,09)(  ,  )(09,09)\n' \
                  '(05,05)(06,06)(  ,  )(08,08)\n'  \
                  '(01,01)(02,02)(07,07)(04,04)\n'
     self.assertEqual(str(b), expect_res)
     rh = b.take(2)
     self.assertEqual(rh, 2)
     expect_res = '(  ,  )(  ,  )(  ,  )(09,09)\n' \
                  '(05,05)(09,09)(  ,  )(08,08)\n'  \
                  '(01,01)(06,06)(07,07)(04,04)\n'
     self.assertEqual(str(b), expect_res)
 def test_stack_find(self):
     s = Stack(3, 0)
     s.put(Container(1, 1))
     s.put(Container(2, 1))
     s.put(Container(3, 1))
     self.assertEqual(s.find_by_weight(3), 2)
     self.assertEqual(s.find_by_weight(2), 1)
     self.assertEqual(s.find_by_weight(1), 0)
Example #5
0
 def test_manager_update(self):
     stacks = [Stack(3, 0), Stack(3, 1), Stack(3, 2)]
     m = AvailableSlotManger(stacks)
     stacks[0].put(Container(1, 1))
     stacks[0].put(Container(1, 1))
     stacks[1].put(Container(1, 1))
     m.update(stacks[0])
     m.update(stacks[1])
     available_slots = m.get()
     self.assertEqual(available_slots, {
         0: Slot(0, 2),
         1: Slot(1, 1),
         2: Slot(2, 0)
     })
Example #6
0
 def test_put(self):
     b = VerticalBay(4, 3)
     b.populate([[
         Container(9, 4),
         Container(6, 3),
         Container(3, 2),
         Container(0, 1)
     ], [Container(10, 4), None, None, None]])
     extra_move = b.put(Container(1, 1))
     self.assertEqual(extra_move, 1)
     expect_res = '(  ,  )(  ,  )(  ,  )(  ,  )\n' \
                  '(10,04)(  ,  )(  ,  )(01,01)\n' \
                  '(09,04)(06,03)(03,02)(00,01)\n'
     self.assertEqual(str(b), expect_res)
     extra_move = b.put(Container(4, 2))
     self.assertEqual(extra_move, 1)
     expect_res = '(  ,  )(  ,  )(  ,  )(  ,  )\n' \
                  '(10,04)(  ,  )(04,02)(01,01)\n' \
                  '(09,04)(06,03)(03,02)(00,01)\n'
     self.assertEqual(str(b), expect_res)
     extra_move = b.put(Container(11, 4))
     self.assertEqual(extra_move, 0)
     expect_res = '(11,04)(  ,  )(  ,  )(  ,  )\n' \
                  '(10,04)(  ,  )(04,02)(01,01)\n' \
                  '(09,04)(06,03)(03,02)(00,01)\n'
     self.assertEqual(str(b), expect_res)
 def test_stack_get(self):
     s = Stack(3, 0)
     s.put(Container(1, 1))
     s.put(Container(2, 1))
     s.put(Container(3, 1))
     self.assertEqual(s.get(0), Container(1, 1))
     self.assertEqual(s.get(1), Container(2, 1))
     self.assertEqual(s.get(2), Container(3, 1))
 def test_iterator_container_generation(self):
     b = HybridBay(3, 2)
     it = ContainerGenerator(6, False).get_iterator(b)
     self.assertEqual(list(it), [
         Container(5, 4),
         Container(4, 3),
         Container(3, 3),
         Container(2, 2),
         Container(1, 2),
         Container(0, 1)
     ])
Example #9
0
 def test_populate(self):
     b = BasicBay(4, 2)
     b.populate([[
         Container(1, 1),
         Container(1, 1),
         Container(2, 2),
         Container(2, 2)
     ], [None, Container(2, 2), None,
         Container(3, 3)]])
     expect_res = '(  ,  )(02,02)(  ,  )(03,03)\n' \
                  '(01,01)(01,01)(02,02)(02,02)\n'
     self.assertEqual(str(b), expect_res)
 def test_stack_is_full_after_multiple_put(self):
     s = Stack(2, 0)
     s.put(Container(1, 1))
     s.put(Container(1, 1))
     self.assertTrue(s.is_full())
Example #11
0
 def test_manager_initialization(self):
     stacks = [Stack(2, 0), Stack(2, 1)]
     stacks[0].put(Container(1, 1))
     m = AvailableSlotManger(stacks)
     available_slots = m.get()
     self.assertEqual(available_slots, {0: Slot(0, 1), 1: Slot(1, 0)})
Example #12
0
 def test_put(self):
     b = RandomBay(4, 3)
     b.populate([[
         Container(1, 1),
         Container(2, 2),
         Container(3, 3),
         Container(4, 4)
     ], [
         Container(5, 5),
         Container(6, 6),
         Container(7, 7),
         Container(8, 8)
     ], [None, Container(9, 9), None, None]])
     b.put(Container(1, 1))
     expect_res = '(  ,  )(09,09)(  ,  )(01,01)\n' \
                  '(05,05)(06,06)(07,07)(08,08)\n' \
                  '(01,01)(02,02)(03,03)(04,04)\n'
     self.assertEqual(str(b), expect_res)
     b.put(Container(2, 2))
     expect_res = '(  ,  )(09,09)(02,02)(01,01)\n' \
                  '(05,05)(06,06)(07,07)(08,08)\n' \
                  '(01,01)(02,02)(03,03)(04,04)\n'
     self.assertEqual(str(b), expect_res)