def test_emit_mass_stored_3(self): """ Corner case: emitting 0 mass does not affect mass stored. """ emitter = MarbleEmitter(self.__mock_prototype, 0, stored_mass=13) emitter.emit() self.assertEqual(emitter._Emitter__stored_mass.item(), 13)
def test_emit_mass_stored_2(self): """ Base case: emitting negative mass increases mass stored. """ emitter = MarbleEmitter(MockPrototype(-1), 0, stored_mass=-1) emitter.emit() self.assertEqual(emitter._Emitter__stored_mass.item(), 0)
def test_delay_2(self): """ Base case: cannot emit right after previous emit, when delay > 0. """ delay = 10 emitter = MarbleEmitter(self.__mock_prototype, delay) emitter.register_time_passed(delay) emitter.emit() self.assertFalse(emitter.can_emit())
def test_emit_mass_stored_1(self): """ Base case: emitting positive mass decreases mass stored. """ emitter = MarbleEmitter(self.__massfull_prototype, 0, stored_mass=self.__mass) emitter.emit() self.assertEqual(emitter._Emitter__stored_mass.item(), 0)
def test_delay_3(self): """ Base case: can emit second time after enough time passed. """ delay = 10 emitter = MarbleEmitter(self.__mock_prototype, delay) emitter.register_time_passed(delay) emitter.emit() emitter.register_time_passed(delay) self.assertTrue(emitter.can_emit())
def test_emit_massfull_3(self): """ Base case: can emit negative massfull Marble when negative mass stored. (Should not raise any errors) """ neg_mass_prototype = MockPrototype(-1) emitter = MarbleEmitter(neg_mass_prototype, 0, stored_mass=-1) try: emitter.emit() except: self.fail("Operation should not raise errors")
def test_emit_massfull_2(self): """ Base case: can emit massfull Marble when sufficient mass stored. """ emitter = MarbleEmitter(self.__massfull_prototype, 0, stored_mass=self.__mass) try: emitter.emit() except: self.fail("Operation should not raise errors")
def test_emit_1(self): """ Corner case: throw error when trying to emit too early after previous emit. """ delay = 10 emitter = MarbleEmitter(self.__mock_prototype, delay) emitter.register_time_passed(delay) emitter.emit() emitter.register_time_passed(delay / 2) self.assertRaises(RuntimeError, emitter.emit)
def test_emit_output_type(self): """ Output should be a EmittedMarble, not just a normal Marble. """ prototype = Marble(ZERO, ZERO, ZERO, 0, None, None) delay = 0 emitter = MarbleEmitter(prototype, delay) output = emitter.emit() self.assertIsInstance(output, EmittedMarble)