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)
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)
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) })
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) ])
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())
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)})
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)