From 283c17a74cf11f40b822807f2d9f52644136c749 Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Mon, 26 Mar 2007 00:14:33 +0000 Subject: [PATCH] start to implement a test environment to run seperate components seperately. --- tests/enigma.py | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/fake_time.py | 10 +++++ tests/test_timer.py | 9 +++++ 3 files changed, 122 insertions(+) create mode 100644 tests/enigma.py create mode 100644 tests/fake_time.py create mode 100644 tests/test_timer.py diff --git a/tests/enigma.py b/tests/enigma.py new file mode 100644 index 0000000..9c700ae --- /dev/null +++ b/tests/enigma.py @@ -0,0 +1,103 @@ +# fake-enigma + +import fake_time + +class slot: + def __init__(self): + self.list = [ ] + + def get(self): + return self.list + + def __call__(self): + for x in self.list: + x() + +timers = set() + +import time + +##################### ENIGMA BASE + +class eTimer: + def __init__(self): + self.timeout = slot() + self.next_activation = None + + def start(self, msec, singleshot = False): + self.next_activation = time.time() + msec / 1000.0 + self.msec = msec + self.singleshot = singleshot + timers.add(self) + + def stop(): + timers.remove(self) + + def __repr__(self): + return "" % (repr(self.timeout), repr(self.next_activation), repr(self.singleshot)) + + def do(self): + if self.singleshot: + self.stop() + self.next_activation += self.msec / 1000.0 + print "next activation now %d " % self.next_activation + self.timeout() + +def runIteration(): + running_timers = list(timers) + assert len(running_timers), "no running timers, so nothing will ever happen!" + running_timers.sort(key=lambda x: x.next_activation) + print running_timers + + next_timer = running_timers[0] + + now = time.time() + delay = next_timer.next_activation - now + + if delay > 0: + time.sleep(delay) + now += delay + + while len(running_timers) and running_timers[0].next_activation <= now: + running_timers[0].do() + running_timers = running_timers[1:] + +stopped = False + +def stop(): + global stopped +# print "STOP NOW" +# stopped = True + +def run(): + stoptimer = eTimer() + stoptimer.start(10000) + stoptimer.timeout.get().append(stop) + while not stopped: + runIteration() + + +##################### ENIGMA GUI + +eSize = None +ePoint = None +gFont = None +eWindow = None +eLabel = None +ePixmap = None +eWindowStyleManager = None +loadPNG = None +addFont = None +gRGB = None +eWindowStyleSkinned = None + +##################### ENIGMA CONFIG + +import Components.config + +my_config = [ +"config.skin.primary_skin=None\n" +] + +Components.config.config.unpickle(my_config) + diff --git a/tests/fake_time.py b/tests/fake_time.py new file mode 100644 index 0000000..09f88b4 --- /dev/null +++ b/tests/fake_time.py @@ -0,0 +1,10 @@ +import time + +real_time = time.time + +time_offset = real_time() + +def my_time(): + return real_time() - time_offset + +time.time = my_time diff --git a/tests/test_timer.py b/tests/test_timer.py new file mode 100644 index 0000000..e1672e7 --- /dev/null +++ b/tests/test_timer.py @@ -0,0 +1,9 @@ +import enigma + +import RecordTimer + +t = RecordTimer.RecordTimer() + + +# run virtual environment +enigma.run() -- 2.7.4