File: test_iterutils.py

package info (click to toggle)
kitchen 1.2.6-9
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,284 kB
  • sloc: python: 10,749; makefile: 22; sh: 4
file content (62 lines) | stat: -rw-r--r-- 2,007 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# -*- coding: utf-8 -*-
#
import unittest
from nose import tools

from kitchen import iterutils

class TestIterutils(unittest.TestCase):
    iterable_data = (
            [0, 1, 2],
            [],
            (0, 1, 2),
            tuple(),
            set([0, 1, 2]),
            set(),
            dict(a=1, b=2),
            dict(),
            [None],
            [False],
            [0],
            xrange(0, 3),
            iter([1, 2, 3]),
            )
    non_iterable_data = (
            None,
            False,
            True,
            0,
            1.1,
            )

    def test_isiterable(self):
        for item in self.iterable_data:
            tools.ok_(iterutils.isiterable(item) == True)

        for item in self.non_iterable_data:
            tools.ok_(iterutils.isiterable(item) == False)

        # strings
        tools.ok_(iterutils.isiterable('a', include_string=True) == True)
        tools.ok_(iterutils.isiterable('a', include_string=False) == False)
        tools.ok_(iterutils.isiterable('a') == False)
        tools.ok_(iterutils.isiterable(u'a', include_string=True) == True)
        tools.ok_(iterutils.isiterable(u'a', include_string=False) == False)
        tools.ok_(iterutils.isiterable(u'a') == False)

    def test_iterate(self):
        iterutils.iterate(None)
        for item in self.non_iterable_data:
            tools.ok_(list(iterutils.iterate(item)) == [item])

        for item in self.iterable_data[:-1]:
            tools.ok_(list(iterutils.iterate(item)) == list(item))

        # iter() is exhausted after use so we have to test separately
        tools.ok_(list(iterutils.iterate(iter([1, 2, 3]))) == [1, 2, 3])

        # strings
        tools.ok_(list(iterutils.iterate('abc')) == ['abc'])
        tools.ok_(list(iterutils.iterate('abc', include_string=True)) == ['a', 'b', 'c'])
        tools.ok_(list(iterutils.iterate(u'abc')) == [u'abc'])
        tools.ok_(list(iterutils.iterate(u'abc', include_string=True)) == [u'a', u'b', u'c'])