File: test_series.py

package info (click to toggle)
python-leather 0.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 652 kB
  • sloc: python: 2,385; makefile: 117; sh: 5
file content (96 lines) | stat: -rw-r--r-- 2,654 bytes parent folder | download
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import leather
from leather.utils import X, Y, Z


class TestSeries(leather.LeatherTestCase):
    def test_pairs(self):
        data = [
            ('foo', 1),
            ('bar', 2),
            ('baz', 3)
        ]

        series = leather.Series(data)

        self.assertSequenceEqual(series.values(X), ['foo', 'bar', 'baz'])
        self.assertSequenceEqual(series.values(Y), [1, 2, 3])

    def test_lists(self):
        data = [
            ('foo', 1, 4),
            ('bar', 2, 5),
            ('baz', 3, 6)
        ]

        series = leather.Series(data)

        self.assertSequenceEqual(series.values(X), ['foo', 'bar', 'baz'])
        self.assertSequenceEqual(series.values(Y), [1, 2, 3])

        series = leather.Series(data, x=2, y=0)

        self.assertSequenceEqual(series.values(X), [4, 5, 6])
        self.assertSequenceEqual(series.values(Y), ['foo', 'bar', 'baz'])

        with self.assertRaises(TypeError):
            series = leather.Series(data, x='words')

    def test_dicts(self):
        data = [
            {'a': 'foo', 'b': 1, 'c': 4},
            {'a': 'bar', 'b': 2, 'c': 5},
            {'a': 'baz', 'b': 3, 'c': 6}
        ]

        with self.assertRaises(KeyError):
            series = leather.Series(data)

        series = leather.Series(data, x='c', y='a')

        self.assertSequenceEqual(series.values(X), [4, 5, 6])
        self.assertSequenceEqual(series.values(Y), ['foo', 'bar', 'baz'])

    def test_custom(self):
        class Obj:
            def __init__(self, a, b, c):
                self.a = a
                self.b = b
                self.c = c

        data = [
            Obj('foo', 1, 4),
            Obj('bar', 2, 5),
            Obj('baz', 3, 6)
        ]

        with self.assertRaises(TypeError):
            series = leather.Series(data)

        with self.assertRaises(TypeError):
            series = leather.Series(data, x='words', y='more')

        def get_x(row, i):
            return row.b

        def get_y(row, i):
            return row.c

        series = leather.Series(data, x=get_x, y=get_y)

        self.assertSequenceEqual(series.values(X), [1, 2, 3])
        self.assertSequenceEqual(series.values(Y), [4, 5, 6])


class TestCategorySeries(leather.LeatherTestCase):
    def test_triples(self):
        data = [
            ('foo', 1, 'a'),
            ('bar', 2, 'a'),
            ('baz', 3, 'b')
        ]

        series = leather.CategorySeries(data)

        self.assertSequenceEqual(series.values(X), ['foo', 'bar', 'baz'])
        self.assertSequenceEqual(series.values(Y), [1, 2, 3])
        self.assertSequenceEqual(series.values(Z), ['a', 'a', 'b'])