class TestInventoryInternals(unittest.TestCase): """ The Inventory class might be near-useless when not subclassed, but we can still test a handful of its properties. """ def setUp(self): self.i = Inventory() def test_trivial(self): pass def test_add(self): self.assertFalse(self.i.add((0, 0), 1))
class TestInventory(unittest.TestCase): def setUp(self): self.i = Inventory() def test_add_to_inventory(self): self.assertEqual(self.i.holdables, [None] * 9) self.assertEqual(self.i.add((2, 0), 1), 0) self.assertEqual(self.i.holdables[0], (2, 0, 1)) def test_add_to_inventory_sequential(self): self.assertEqual(self.i.holdables, [None] * 9) self.assertEqual(self.i.add((2, 0), 1), 0) self.assertEqual(self.i.holdables[0], (2, 0, 1)) self.assertEqual(self.i.add((2, 0), 1), 0) self.assertEqual(self.i.holdables[0], (2, 0, 2)) self.assertEqual(self.i.holdables[1], None) def test_add_to_inventory_fill_slot(self): self.i.holdables[0] = Slot(2, 0, 50) self.assertEqual(self.i.add((2, 0), 30), 0) self.assertEqual(self.i.holdables[0], (2, 0, 64)) self.assertEqual(self.i.holdables[1], (2, 0, 16)) def test_add_to_inventory_fill_with_stack(self): self.i.storage[0] = Slot(2, 0, 50) self.assertEqual(self.i.add((2, 0), 30), 0) self.assertEqual(self.i.storage[0], (2, 0, 64)) self.assertEqual(self.i.holdables[0], (2, 0, 16)) def test_add_to_full_inventory(self): self.i.storage[:] = [Slot(2, 0, 1)] * 27 self.i.holdables[:] = [Slot(1, 0, 64)] * 27 self.assertEqual(self.i.add((1, 0), 20), 20) def test_add_to_almost_full_inventory(self): self.i.holdables[:] = [Slot(2, 0, 1)] * 9 self.i.storage[:] = [Slot(1, 0, 64)] * 27 self.i.storage[5] = Slot(1, 0, 50) self.assertEqual(self.i.add((1, 0), 20), 6) def test_consume_holdable(self): self.i.holdables[0] = Slot(2, 0, 1) self.assertTrue(self.i.consume((2, 0), 0)) self.assertEqual(self.i.holdables[0], None) def test_consume_holdable_empty(self): self.assertFalse(self.i.consume((2, 0), 0)) def test_consume_holdable_second_slot(self): self.i.holdables[1] = Slot(2, 0, 1) self.assertTrue(self.i.consume((2, 0), 1)) self.assertEqual(self.i.holdables[1], None) def test_consume_holdable_multiple_stacks(self): self.i.holdables[0] = Slot(2, 0, 1) self.i.holdables[1] = Slot(2, 0, 1) # consume second stack self.assertTrue(self.i.consume((2, 0), 1)) self.assertEqual(self.i.holdables[0], (2, 0, 1)) self.assertEqual(self.i.holdables[1], None) # consume second stack a second time self.assertFalse(self.i.consume((2, 0), 1)) self.assertEqual(self.i.holdables[0], (2, 0, 1)) self.assertEqual(self.i.holdables[1], None)