Example #1
0
def test_transform_not_none():
    def transform(x):
        return x + 2

    intended = map(transform, [e for e in elems if e is not None])
    use = Piper()[:transform:]
    assert list(use.run(elems)) == list(intended)
Example #2
0
def test_transform_if_keeping_none():
    numbers = [1, 2, 3, 4, None, 5, 6, 7, 8]

    def transform(x):
        return x + 2

    intended = [transform(x) if x is not None else x for x in numbers]
    use = Piper()[:transform:lambda x: None]
    assert list(use.run(numbers)) == list(intended)
Example #3
0
def test_transform_if_even():
    numbers = [1, 2, 3, 4, 5, 6, 7, 8]

    def transform(x):
        return x + 2

    def condition(x):
        return x % 2 == 0

    intended = [transform(x) for x in numbers if condition(x)]
    use = Piper()[condition:transform:]
    assert list(use.run(numbers)) == list(intended)
Example #4
0
def test_transform_if_even_odds_are_none():
    numbers = [1, 2, 3, 4, 5, 6, 7, 8]

    def transform(x):
        return x + 2

    def condition(x):
        return x % 2 == 0

    intended = [transform(x) if condition(x) else None for x in numbers]
    use = Piper()[condition:transform:lambda x: None]
    assert list(use.run(numbers)) == list(intended)
Example #5
0
def test_transform_if():
    numbers = [1, 2, 3, 4, 5, 6, 7, 8]

    def transform(x):
        return x + 2

    def condition(x):
        return x < 6

    intended = map(transform, filter(condition, numbers))
    use = Piper()[condition:transform:]
    assert list(use.run(numbers)) == list(intended)
Example #6
0
def test_transform_rails():
    numbers = [1, 2, 3, 4, 5, 6, 7, 8]

    def transform(x):
        return x + 2

    def condition(x):
        return x < 6

    def negative_transform(x):
        return "faulty {}".format(x)

    intended = [
        transform(x) if condition(x) else negative_transform(x)
        for x in numbers
    ]
    use = Piper()[condition:transform:negative_transform]
    assert list(use.run(numbers)) == list(intended)
Example #7
0
def test_fizzbuzz3():
    v = list((Piper()[lambda x: isinstance(x, int):(lambda x: (x, ""))]
              [lambda x: x[0] % 3 != 0::lambda x: (x[0], x[1] + "fizz")]
              [lambda x: x[0] % 5 != 0::lambda x: (x[0], x[1] + "buzz")]).run(
                  [1, 2, None, 3, 4, None, 5]))
    print(v)
    for observed, expected in zip(v, [1, 2, 3, 4, 5]):
        assert observed[0] == expected
        if expected % 3 == 0: assert "fizz" in observed[1]
        if expected % 5 == 0: assert "buzz" in observed[1]
Example #8
0
def test_match_int2():
    class TA(int):
        pass

    class TB(int):
        pass

    class TC(int):
        pass

    sequence = [TA(0), TB(0), TC(0), 0, None]
    p = (Piper()[int::lambda x: x + 1, TA::lambda x: x + 2,
                 TB::lambda x: x + 3, TC::lambda x: x + 4,
                 int::lambda x: x + 5, ][::])
    sequence = [TA(0), TB(0), TC(0), 0, "lol"]
    expected_output = [2, 3, 4, 1]
    observed = list(p.run(sequence))
    assert observed == expected_output
Example #9
0
def test_match_int_with_default():
    class TA(int):
        pass

    class TB(int):
        pass

    class TC(int):
        pass

    sequence = [TA(0), TB(0), TC(0), 0, None]
    p = (Piper()[int::lambda x: x + 1, TA::lambda x: x + 2,
                 TB::lambda x: x + 3, TC::lambda x: x + 4,
                 int::lambda x: x + 5, ::lambda x: str(x)])
    sequence = [TA(0), TB(0), TC(0), 0, "lol", 3.3]
    expected_output = [2, 3, 4, 1, "lol", "3.3"]
    observed = list(p.run(sequence))
    assert observed == expected_output
Example #10
0
def test_match_int_with_condition():
    class TA(int):
        pass

    class TB(int):
        pass

    class TC(int):
        pass

    sequence = [TA(0), TB(0), TC(0), 0, None]
    p = (Piper()[int:lambda x: x > 4:100, TA::lambda x: x + 2,
                 TB::lambda x: x + 3, TC::lambda x: x + 4,
                 int::lambda x: -100, ])
    sequence = [TA(0), TB(0), TC(0), 2, 9, "lol", None]
    expected_output = [2, 3, 4, -100, 100, None, None]
    observed = list(p.run(sequence))
    assert observed == expected_output
Example #11
0
def test_match_int_with_condition_and_default():
    class TA(int):
        pass

    class TB(int):
        pass

    class TC(int):
        pass

    p = (Piper()[int:lambda x: x > 4:100, TA::lambda x: x + 2,
                 TB::lambda x: x + 3, TC::lambda x: x + 4, int::lambda x: -100,
                 str::42, :lambda x: hasattr(x, "__add__"):64, ::314])
    sequence, expected_output = zip(
        *[(TA(0), 2), (TB(0),
                       3), (TC(0),
                            4), (2, -100), (9, 100), ("lol",
                                                      42), (None,
                                                            314), (3.7, 64)])
    sequence = list(sequence)
    expected_output = list(expected_output)
    observed = list(p.run(sequence))
    assert observed == expected_output
Example #12
0
def test_filter_out_none():
    assert list(Piper()[::].run(elems)) == [x for x in elems if x is not None]
Example #13
0
def test_transform2_none():
    intended = [x if x is not None else "muoio" for x in elems]
    use = Piper()[::lambda x: "muoio"]
    assert list(use.run(elems)) == intended
Example #14
0
def test_fizzbuzz1():
    v = list((Piper()[lambda x: isinstance(x, int)::]).run(
        [1, 2, None, 3, 4, None, 5]))
    assert v == [1, 2, 3, 4, 5]
Example #15
0
def test_fizzbuzz0():
    v = list((Piper()).run([1, 2, 3, 4, 5]))
    assert v == [1, 2, 3, 4, 5]
Example #16
0
def test_fizzbuzz2():
    v = list((Piper()[lambda x: isinstance(x, int):(lambda x: (x, ""))]).run(
        [1, 2, None, 3, 4, None, 5]))
    assert v == [(i, "") for i in [1, 2, 3, 4, 5]]