def test_data_is_9_expect_1l(self): self.assertEqual(main(9), { 'small': 0, 'medium': 0, 'large': 1, 'bulk': 0 })
def test_data_is_10_expect_2m_1b(self): self.assertEqual(main(10), { 'small': 0, 'medium': 2, 'large': 0, 'bulk': 1 })
def test_data_is_36_expect_4l_2b(self): self.assertEqual(main(36), { 'small': 0, 'medium': 0, 'large': 4, 'bulk': 2 })
def test_data_is_100_expect_1s_11l_4b(self): self.assertEqual(main(100), { 'small': 1, 'medium': 0, 'large': 11, 'bulk': 4 })
def test_data_is_33_expect_1m_3l_2b(self): self.assertEqual(main(33), { 'small': 0, 'medium': 1, 'large': 3, 'bulk': 2 })
def test_data_is_27_expect_1m_2l_1b(self): self.assertEqual(main(27), { 'small': 0, 'medium': 0, 'large': 3, 'bulk': 1 })
def test_data_is_21_expect_1s_2l_1b(self): self.assertEqual(main(21), { 'small': 1, 'medium': 0, 'large': 2, 'bulk': 1 })
def test_data_validation_input_is_string(self): self.assertEqual(main('test string'), 'Input data should be an integer in the range 1-100')
def test_items_cover(self): for qty in range(1, 101): boxes = main(qty) self.assertLessEqual(qty, (boxes['small'] * 3 + boxes['medium'] * 6 + boxes['large'] * 9))
def test_data_validation_input_is_negative(self): self.assertEqual(main(-1), 'Input data should be an integer in the range 1-100')
def test_data_validation_input_is_out_of_range(self): self.assertEqual(main(101), 'Input data should be an integer in the range 1-100') self.assertEqual(main(0), 'Input data should be an integer in the range 1-100')