[WIP] Added scheduler

This commit is contained in:
2023-04-16 21:46:17 +02:00
parent 39ca803d36
commit aabbfeaa92
51 changed files with 572 additions and 71 deletions

View File

@@ -3,7 +3,9 @@ import traceback
import unittest
from cpl_core.console import Console
from cpl_reactive_extensions import Subject
from cpl_reactive_extensions.observable import Observable
from cpl_reactive_extensions.operators import debounce_time
from cpl_reactive_extensions.subject.subject import Subject
from cpl_reactive_extensions.interval import Interval
from cpl_reactive_extensions.operators.take import take
from cpl_reactive_extensions.operators.take_until import take_until
@@ -65,3 +67,17 @@ class ObservableOperatorTestCase(unittest.TestCase):
unsubscriber.next(None)
unsubscriber.complete()
self.assertEqual(count, timer * 10 - 1)
def test_debounce_time(self):
def call(x):
x.next(1)
x.next(2)
x.next(3)
x.next(4)
x.next(5)
x.next(6)
x.complete()
observable = Observable(call)
observable.pipe(debounce_time(600)).subscribe(lambda x: Console.write_line("Hey", x))

View File

@@ -5,11 +5,11 @@ from datetime import datetime
from threading import Timer
from cpl_core.console import Console
from cpl_reactive_extensions.behavior_subject import BehaviorSubject
from cpl_reactive_extensions.subject.behavior_subject import BehaviorSubject
from cpl_reactive_extensions.interval import Interval
from cpl_reactive_extensions.observable import Observable
from cpl_reactive_extensions.subject import Subject
from cpl_reactive_extensions.subscriber import Observer
from cpl_reactive_extensions.subject.subject import Subject
from cpl_reactive_extensions.internal.subscriber import Observer
class ReactiveTestCase(unittest.TestCase):

View File

@@ -1,7 +1,8 @@
import unittest
from unittests_reactive_extenstions.observable_operator import ObservableOperatorTestCase
from unittests_reactive_extenstions.observable_operator_test_case import ObservableOperatorTestCase
from unittests_reactive_extenstions.reactive_test_case import ReactiveTestCase
from unittests_reactive_extenstions.scheduler_test_case import SchedulerTestCase
class ReactiveTestSuite(unittest.TestSuite):
@@ -11,6 +12,7 @@ class ReactiveTestSuite(unittest.TestSuite):
loader = unittest.TestLoader()
self.addTests(loader.loadTestsFromTestCase(ReactiveTestCase))
self.addTests(loader.loadTestsFromTestCase(ObservableOperatorTestCase))
self.addTests(loader.loadTestsFromTestCase(SchedulerTestCase))
def run(self, *args):
super().run(*args)

View File

@@ -0,0 +1,36 @@
import time
import unittest
from datetime import datetime
from cpl_core.console import Console
from cpl_reactive_extensions.scheduler.async_scheduler import async_scheduler
from cpl_reactive_extensions.timer import Timer
class SchedulerTestCase(unittest.TestCase):
def setUp(self):
pass
def test_timer(self):
count = 0
def task():
nonlocal count
Console.write_line(datetime.now(), "Hello world")
count += 1
timer = Timer(100, task)
time.sleep(0.25)
self.assertEqual(count, 2)
timer.clear()
def test_schedule(self):
count = 0
def task():
nonlocal count
Console.write_line(datetime.now(), "Hello world")
count += 1
async_scheduler.schedule(task, 100)
time.sleep(2)

View File

@@ -0,0 +1,21 @@
import time
from datetime import datetime
from cpl_core.console import Console
from cpl_reactive_extensions.timer import Timer
def test_timer():
is_working = False
def task():
nonlocal is_working
Console.write_line(datetime.now(), "Hello world")
is_working = True
timer = Timer(100, task)
time.sleep(0.2)
timer.clear()
test_timer()

View File

@@ -2,9 +2,9 @@
"ProjectSettings": {
"Name": "unittests_reactive_extenstions",
"Version": {
"Major": "0",
"Minor": "0",
"Micro": "0"
"Major": "2023",
"Minor": "4",
"Micro": "dev170"
},
"Author": "",
"AuthorEmail": "",
@@ -16,7 +16,7 @@
"LicenseName": "",
"LicenseDescription": "",
"Dependencies": [
"cpl-core>=2023.4.0"
"cpl-core>=2023.4.dev170"
],
"DevDependencies": [
"cpl-cli>=2023.4.0"