def testUpdateUndo(self): t = Time() t.auto_update = False t20 = t[20] d(trellis.Cell) def checktime(): if t.reached(t20): self.force_rollback() checktime.value self.assertEqual(t._schedule, [t20._when, Max]) self.assertEqual(list(t._events), [t20._when]) self.assertRaises(DummyError, t.advance, 20) self.assertEqual(t._schedule, [t20._when, Max]) self.assertEqual(list(t._events), [t20._when])
def testUpdateUndo(self): t = Time() t.auto_update = False t20 = t[20] @trellis.Cell def checktime(): if t.reached(t20): self.force_rollback() checktime.value self.assertEqual(t._schedule, [t20._when, Max]) self.assertEqual(list(t._events), [t20._when]) self.assertRaises(DummyError, t.advance, 20) self.assertEqual(t._schedule, [t20._when, Max]) self.assertEqual(list(t._events), [t20._when])
def testIndependentNextEventTime(self): # Ensure that next_event_time() never returns a *past* time t = Time() t.auto_update = False t20 = t[20] t40 = t[40] @trellis.Cell def check_reached(): t.reached(t20) t.reached(t40) nt = t.next_event_time(True) self.failIf(nt is not None and nt <= 0) check_reached.value t.advance(25) t.advance(15)
def testScheduleUndo(self): t = Time() t.auto_update = False t20 = t[20] log = [] d(trellis.Cell) def checktime(): t.reached(t20) log.append(t._events[t20._when]) d(trellis.Performer) def err_after_reached(): if len(t._schedule)>1: raise DummyError self.assertRaises(DummyError, checktime.get_value) self.assertEqual(t._schedule, [t20._when, Max]) self.assertEqual(dict(t._events), {t20._when:log[0]}) del checktime self.failUnless(isinstance(log.pop(), trellis.Sensor)) self.assertEqual(dict(t._events), {}) self.assertEqual(log, [])
def testScheduleUndo(self): t = Time() t.auto_update = False t20 = t[20] log = [] @trellis.Cell def checktime(): t.reached(t20) log.append(t._events[t20._when]) @trellis.Performer def err_after_reached(): if len(t._schedule) > 1: raise DummyError self.assertRaises(DummyError, checktime.get_value) self.assertEqual(t._schedule, [t20._when, Max]) self.assertEqual(dict(t._events), {t20._when: log[0]}) del checktime self.failUnless(isinstance(log.pop(), trellis.Sensor)) self.assertEqual(dict(t._events), {}) self.assertEqual(log, [])
def configure_context(self): from peak.events.activity import Time, EventLoop from twisted.internet import reactor Time <<= lambda: Time() Time.time = reactor.getTime EventLoop <<= TwistedEventLoop