Contact: fumanchu@aminus.org

Log in as guest/dejavu to create tickets

root/tags/1.4.0/test/test_analysis.py

Revision 96 (checked in by fumanchu, 3 years ago)

Lots of changes to the test suite. Partially fixes #23.

  • Property svn:eol-style set to native
Line 
1 import datetime
2 import unittest
3
4 from dejavu import analysis
5
6
7 class Thing(object):
8     def __init__(self, color, size, date):
9         self.color = color
10         self.size = size
11         self.date = date
12
13 things = []
14 for color, year in [('red', 2004), ('yellow', 2003),
15                     ('blue', 2002), ('green', 2001)]:
16     d = datetime.date(year, 1, 1)
17     for size in xrange(5):
18         things.append(Thing(color, size, d))
19
20
21 class CrossTabTests(unittest.TestCase):
22    
23     def test_creation(self):
24         ctab = analysis.CrossTab()
25         ctab = analysis.CrossTab(things)
26    
27     def test_count(self):
28         ctab = analysis.CrossTab(things, 'color', 'size')
29         self.assertEqual(ctab.results()[0],
30                          {('blue',): {0: 1, 1: 1, 2: 1, 3: 1, 4: 1},
31                           ('yellow',): {0: 1, 1: 1, 2: 1, 3: 1, 4: 1},
32                           ('green',): {0: 1, 1: 1, 2: 1, 3: 1, 4: 1},
33                           ('red',): {0: 1, 1: 1, 2: 1, 3: 1, 4: 1}},
34                          )
35         ctab = analysis.CrossTab(things, ('color', lambda x: x.date.year), 'size')
36         self.assertEqual(ctab.results()[0],
37                          {('blue', 2002): {0: 1, 1: 1, 2: 1, 3: 1, 4: 1},
38                           ('yellow', 2003): {0: 1, 1: 1, 2: 1, 3: 1, 4: 1},
39                           ('green', 2001): {0: 1, 1: 1, 2: 1, 3: 1, 4: 1},
40                           ('red', 2004): {0: 1, 1: 1, 2: 1, 3: 1, 4: 1}},
41                          )
42    
43     def test_sum(self):
44         ctab = analysis.CrossTab(things, (), 'size')
45         self.assertEqual(ctab.results()[0], {(): {0: 4, 1: 4, 2: 4, 3: 4, 4: 4}})
46         ctab.source[0].size = 4
47         self.assertEqual(ctab.results()[0], {(): {0: 3, 1: 4, 2: 4, 3: 4, 4: 5}})
48         ctab.groups = (lambda x: x.date.year,)
49         self.assertEqual(ctab.results(),
50                          ({(2001,): {0: 1, 1: 1, 2: 1, 3: 1, 4: 1},
51                            (2002,): {0: 1, 1: 1, 2: 1, 3: 1, 4: 1},
52                            (2003,): {0: 1, 1: 1, 2: 1, 3: 1, 4: 1},
53                            (2004,): {      1: 1, 2: 1, 3: 1, 4: 2}},
54                           [0, 1, 2, 3, 4])
55                          )
56         ctab.groups = ('size',)
57         ctab.pivot = lambda x: x.date.year
58         self.assertEqual(ctab.results(),
59                          ({(0,): {2001: 1, 2002: 1, 2003: 1,        },
60                            (1,): {2001: 1, 2002: 1, 2003: 1, 2004: 1},
61                            (2,): {2001: 1, 2002: 1, 2003: 1, 2004: 1},
62                            (3,): {2001: 1, 2002: 1, 2003: 1, 2004: 1},
63                            (4,): {2001: 1, 2002: 1, 2003: 1, 2004: 2}},
64                           [2001, 2002, 2003, 2004])
65                          )
66
67
68 if __name__ == "__main__":
69     unittest.main(__name__)
70
Note: See TracBrowser for help on using the browser.