Source

pypy / lib_pypy / pypy_test / test_itertools.py

from py.test import raises
from lib_pypy import itertools

class TestItertools(object):

    def test_compress(self):
        it = itertools.compress(['a', 'b', 'c'], [0, 1, 0])

        assert list(it) == ['b']

    def test_compress_diff_len(self):
        it = itertools.compress(['a'], [])
        raises(StopIteration, it.next)

    def test_product(self):
        l = [1, 2]
        m = ['a', 'b']

        prodlist = itertools.product(l, m)
        assert list(prodlist) == [(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')]

    def test_product_repeat(self):
        l = [1, 2]
        m = ['a', 'b']

        prodlist = itertools.product(l, m, repeat=2)
        ans = [(1, 'a', 1, 'a'), (1, 'a', 1, 'b'), (1, 'a', 2, 'a'),
               (1, 'a', 2, 'b'), (1, 'b', 1, 'a'), (1, 'b', 1, 'b'),
               (1, 'b', 2, 'a'), (1, 'b', 2, 'b'), (2, 'a', 1, 'a'),
               (2, 'a', 1, 'b'), (2, 'a', 2, 'a'), (2, 'a', 2, 'b'),
               (2, 'b', 1, 'a'), (2, 'b', 1, 'b'), (2, 'b', 2, 'a'),
               (2, 'b', 2, 'b')]
        assert list(prodlist) == ans

    def test_product_diff_sizes(self):
        l = [1, 2]
        m = ['a']

        prodlist = itertools.product(l, m)
        assert list(prodlist) == [(1, 'a'), (2, 'a')]

        l = [1]
        m = ['a', 'b']
        prodlist = itertools.product(l, m)
        assert list(prodlist) == [(1, 'a'), (1, 'b')]

    def test_product_toomany_args(self):
        l = [1, 2]
        m = ['a']
        raises(TypeError, itertools.product, l, m, repeat=1, foo=2)
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.