예제 #1
0
파일: test_buffer.py 프로젝트: lizh06/RxPY
    def test_toggle_closing_mapper_on_error(self):
        class TestException(Exception):
            pass

        ex = TestException("test exception")

        with marbles_testing(timespan=1.0) as (start, cold, hot, exp):

            lookup = {"a": [2, 3], "b": [5], "c": [7], "d": [8, 9]}

            openings = hot("---a-------b------c---d-------|")
            a = cold("         ------1|")
            b = cold("                 ---#", error=ex)
            c = cold("                        ---1|")
            d = cold("                            -----1|")
            source = hot("  -1--2--3--4--5--6---7--8--9---|")
            expected = exp("---------a----#", lookup=lookup, error=ex)
            #               012345678901234567890123456789
            #               0         1         2
            closings = {"a": a, "b": b, "c": c, "d": d}

            def closing_mapper(key):
                return closings[key]

            obs = source.pipe(ops.buffer_toggle(openings, closing_mapper))
            results = start(obs)
            assert results == expected
예제 #2
0
파일: test_buffer.py 프로젝트: lizh06/RxPY
    def test_when_source_on_error(self):
        class TestException(Exception):
            pass

        ex = TestException("test exception")

        with marbles_testing(timespan=1.0) as (start, cold, hot, exp):

            def closing_mapper():
                return cold("-----1|")

            lookup = {"a": [1, 2], "b": [3], "c": [4, 5], "d": [6], "e": [7]}
            #               -----1|
            #                    -----1|
            #                         -----1|
            #                              -----1|
            #                                   -----1|
            source = hot("  -1--2---3--4--5--#", error=ex)
            expected = exp("-----a----b----c-#", lookup=lookup, error=ex)
            #               012345678901234567890123456789
            #               0         1         2

            obs = source.pipe(ops.buffer_when(closing_mapper))
            results = start(obs)
            assert results == expected
예제 #3
0
    def test_concat_repeat(self):
        with marbles_testing() as (start, cold, hot, exp):
            e1 = cold("-e11-e12|")
            e2 = cold("-e21-e22|")
            ex = exp("-e11-e12-e21-e22-e11-e12-e21-e22|")

            obs = e1.pipe(ops.concat(e2), ops.repeat(2))

            results = start(obs)
            assert results == ex
예제 #4
0
파일: test_marbles.py 프로젝트: lizh06/RxPY
    def test_start_with_hot_never(self):
        with marbles_testing() as (start, cold, hot, exp):
            obs = hot("------")
            "          012345678901234567890"

            def create():
                return obs

            results = start(create)
            expected = []
            assert results == expected
예제 #5
0
파일: test_marbles.py 프로젝트: lizh06/RxPY
    def test_start_with_cold_empty(self):
        with marbles_testing() as (start, cold, hot, exp):
            obs = cold("------|")
            "           012345678901234567890"

            def create():
                return obs

            results = start(create)
            expected = [ReactiveTest.on_completed(206)]
            assert results == expected
예제 #6
0
파일: test_marbles.py 프로젝트: lizh06/RxPY
    def test_start_with_cold_and_exp_group(self):
        with marbles_testing() as (start, cold, hot, exp):
            obs = cold("     12--(3,6.5)----(5,#)")
            expected = exp(" 12--(3,6.5)----(5,#)")
            "                012345678901234567890"

            def create():
                return obs

            results = start(create)
            assert results == expected
예제 #7
0
파일: test_marbles.py 프로젝트: lizh06/RxPY
    def test_start_with_hot_and_exp(self):
        with marbles_testing() as (start, cold, hot, exp):
            obs = hot("     --3--4--5-|")
            expected = exp("--3--4--5-|")
            "               012345678901234567890"

            def create():
                return obs

            results = start(create)
            assert results == expected
예제 #8
0
파일: test_marbles.py 프로젝트: lizh06/RxPY
    def test_start_with_cold_no_create_function(self):
        with marbles_testing() as (start, cold, hot, exp):
            obs = cold("12--3-|")
            "           012345678901234567890"

            results = start(obs)
            expected = [
                ReactiveTest.on_next(200.0, 12),
                ReactiveTest.on_next(204.0, 3),
                ReactiveTest.on_completed(206.0),
            ]
            assert results == expected
예제 #9
0
파일: test_marbles.py 프로젝트: lizh06/RxPY
    def test_exp(self):
        with marbles_testing() as (start, cold, hot, exp):
            results = exp("12--3--4--5-|")
            "              012345678901234567890"

            expected = [
                ReactiveTest.on_next(200.0, 12),
                ReactiveTest.on_next(204.0, 3),
                ReactiveTest.on_next(207.0, 4),
                ReactiveTest.on_next(210.0, 5),
                ReactiveTest.on_completed(212.0),
            ]
            assert results == expected
예제 #10
0
파일: test_marbles.py 프로젝트: lizh06/RxPY
    def test_start_with_cold_normal(self):
        with marbles_testing() as (start, cold, hot, exp):
            obs = cold("12--3-|")
            "           012345678901234567890"

            def create():
                return obs

            results = start(create)
            expected = [
                ReactiveTest.on_next(200.0, 12),
                ReactiveTest.on_next(204.0, 3),
                ReactiveTest.on_completed(206.0),
            ]
            assert results == expected
예제 #11
0
파일: test_buffer.py 프로젝트: lizh06/RxPY
    def test_when_closing_only_on_first_item(self):
        with marbles_testing(timespan=1.0) as (start, cold, hot, exp):

            def closing_mapper():
                return cold("-----1--2--3--4--|")

            lookup = {"a": [1, 2], "b": [3], "c": [4, 5], "d": [6], "e": [7]}
            #               -----1--2--3--4--|
            #                    -----1--2--3--4--|
            #                         -----1--2--3--4--|
            #                              -----1--2--3--4--|
            source = hot("  -1--2---3--4--5--6---7--|")
            expected = exp("-----a----b----c----d---(e,|)", lookup=lookup)
            #               012345678901234567890123456789
            #               0         1         2
            obs = source.pipe(ops.buffer_when(closing_mapper))
            results = start(obs)
            assert results == expected
예제 #12
0
파일: test_buffer.py 프로젝트: lizh06/RxPY
    def test_when_closing_on_error(self):
        class TestException(Exception):
            pass

        ex = TestException("test exception")

        with marbles_testing(timespan=1.0) as (start, cold, hot, exp):

            def closing_mapper():
                return cold("-----#", error=ex)

            #               -----#
            source = hot("  -1--2---3--4--5--6---7--|")
            expected = exp("-----#", error=ex)
            #               012345678901234567890123456789
            #               0         1         2
            obs = source.pipe(ops.buffer_when(closing_mapper))
            results = start(obs)
            assert results == expected
예제 #13
0
파일: test_buffer.py 프로젝트: lizh06/RxPY
    def test_toggle_closing_with_only_first_item(self):
        with marbles_testing(timespan=1.0) as (start, cold, hot, exp):

            lookup = {"a": [2, 3], "b": [5], "c": [7], "d": [8, 9]}

            openings = hot("---a-------b------c---d-------|")
            a = cold("         ------1-2-|")
            b = cold("                 ----1-2-|")
            c = cold("                        ---1-2-|")
            d = cold("                            -----1-2|")
            source = hot("  -1--2--3--4--5--6---7--8--9---|")
            expected = exp("---------a-----b-----c-----d--|", lookup=lookup)
            #               012345678901234567890123456789
            #               0         1         2
            closings = {"a": a, "b": b, "c": c, "d": d}

            def closing_mapper(key):
                return closings[key]

            obs = source.pipe(ops.buffer_toggle(openings, closing_mapper))
            results = start(obs)
            assert results == expected
예제 #14
0
from reactivex import operators as ops
from reactivex.testing.marbles import marbles_testing

"""
Tests debounceTime from reactivexjs
https://github.com/ReactiveX/rxjs/blob/master/spec/operators/debounceTime-spec.ts

it should delay all element by the specified time
"""
with marbles_testing(timespan=1.0) as (start, cold, hot, exp):

    e1 = cold("-a--------b------c----|")
    ex = exp("------a--------b------(c,|)")
    expected = ex

    def create():
        return e1.pipe(
            ops.debounce(5),
        )

    results = start(create)
    assert results == expected

print("debounce: results vs expected")
for r, e in zip(results, expected):
    print(r, e)
예제 #15
0
from reactivex import operators as ops
from reactivex.testing.marbles import marbles_testing

"""
Tests MergeMap from reactivexjs
https://github.com/ReactiveX/rxjs/blob/master/spec/operators/mergeMap-spec.ts

it should flat_map many regular interval inners
"""
with marbles_testing(timespan=1.0) as context:
    start, cold, hot, exp = context

    a = cold(" ----a---a----a----(a,|)                     ")
    b = cold("     ----1----b----(b,|)                     ")
    c = cold("                 -------c---c---c----c---(c,|)")
    d = cold("                         -------(d,|)        ")
    e1 = hot("-a---b-----------c-------d------------|      ")
    ex = exp("-----a---(a,1)(a,b)(a,b)c---c---(c,d)c---(c,|)")
    expected = ex

    observableLookup = {"a": a, "b": b, "c": c, "d": d}

    obs = e1.pipe(ops.flat_map(lambda value: observableLookup[value]))

    results = start(obs)
    assert results == expected

print("flat_map: results vs expected")
for r, e in zip(results, expected):
    print(r, e)