Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/tests/units/toolkit/coroutine.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/units/toolkit/coroutine.py')
-rwxr-xr-xtests/units/toolkit/coroutine.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/units/toolkit/coroutine.py b/tests/units/toolkit/coroutine.py
new file mode 100755
index 0000000..95738d0
--- /dev/null
+++ b/tests/units/toolkit/coroutine.py
@@ -0,0 +1,31 @@
+#!/usr/bin/env python
+# sugar-lint: disable
+
+from __init__ import tests
+
+from sugar_network.toolkit.coroutine import Spooler, spawn, sleep
+
+
+class CoroutineTest(tests.Test):
+
+ def test_Spooler_ContinuousFeeding(self):
+ spooler = Spooler()
+ events = []
+
+ def consumer(num):
+ while True:
+ events[num].append(spooler.wait())
+
+ for i in range(10):
+ events.append([])
+ spawn(consumer, i)
+ sleep(.1)
+
+ for i in range(10):
+ spooler.notify_all(i)
+ sleep(.1)
+ self.assertEqual([range(10)] * 10, events)
+
+
+if __name__ == '__main__':
+ tests.main()