Exemple #1
0
    def test_nominal(self):
        numbers = Subject()
        windows = Subject()

        expected_numbers = [[1, 2], [3, 4, 5]]
        expected_error = None
        actual_numbers = []
        actual_error = None

        def on_next(i):
            actual_numbers.append(i)

        def on_error(e):
            nonlocal actual_error
            actual_error = e

        numbers.buffer(windows).subscribe(on_next=on_next, on_error=on_error)

        numbers.on_next(1)
        numbers.on_next(2)
        windows.on_next(True)
        numbers.on_next(3)
        numbers.on_next(4)
        numbers.on_next(5)
        windows.on_next(True)

        self.assertEqual(None, actual_error)
        self.assertEqual(expected_numbers, actual_numbers)
Exemple #2
0
    def test_error(self):
        numbers = Subject()
        windows = Subject()

        expected_numbers = []
        expected_error = None
        actual_numbers = []
        actual_error = None

        def on_next(i):
            actual_numbers.append(i)

        def on_error(e):
            nonlocal actual_error
            actual_error = e

        numbers.buffer(windows).subscribe(on_next=on_next, on_error=on_error)

        numbers.on_next(1)
        numbers.on_next(2)
        numbers.on_error(ValueError())

        self.assertIsInstance(actual_error, ValueError)
        self.assertEqual(expected_numbers, actual_numbers)
from rx import Observable
from rx.subjects import Subject
import time
import threading

numbers = Subject()
windows = Subject()
numbers.buffer(windows).subscribe(
    on_next=lambda i: print("on_next {}".format(i)),
    on_error=lambda e: print("on_error: {}".format(e)),
    on_completed=lambda: print("on_completed")
)

numbers.on_next(1)
numbers.on_next(2)
windows.on_next(True)
numbers.on_next(3)
numbers.on_next(4)
numbers.on_next(5)
windows.on_next(True)
from rx import Observable
from rx.subjects import Subject
import time
import threading

window_selector = None


def closing_selector():
    print("closing_selector")
    global window_selector
    window_selector = Subject()
    return window_selector


numbers = Subject()
numbers.buffer(closing_selector).subscribe(
    on_next=lambda i: print("on_next {}".format(i)),
    on_error=lambda e: print("on_error: {}".format(e)),
    on_completed=lambda: print("on_completed"))

numbers.on_next(1)
numbers.on_next(2)
numbers.on_next(3)
window_selector.on_completed()
numbers.on_next(4)
numbers.on_next(5)
window_selector.on_completed()