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'])
|