/+junk/pygooglechart-py3k

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/%2Bjunk/pygooglechart-py3k

« back to all changes in this revision

Viewing changes to test/test.py

  • Committer: gak
  • Date: 2008-05-03 07:30:58 UTC
  • Revision ID: git-v1:9342edb8666dde7e843e3eb438f1f6a717aa32fc
- Really added initial unit tests
- Converted setup.py to unix file format
- warnings made when data is being clipped and when data scaling is incorrect
- max_value is now a variable
- pie and google-o-meter chart data is now on the x-axis
- More grammar work

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import unittest
 
2
import sys
 
3
import os
 
4
import warnings
 
5
 
 
6
ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
 
7
sys.path.insert(0, ROOT)
 
8
 
 
9
import pygooglechart as gc
 
10
 
 
11
 
 
12
class TestBase(unittest.TestCase):
 
13
 
 
14
    def setUp(self):
 
15
 
 
16
        # All tests require warnings to be raised
 
17
        self.raise_warnings(True)
 
18
 
 
19
    def raise_warnings(self, rw):
 
20
        gc._reset_warnings()
 
21
 
 
22
        if rw:
 
23
            warnings.simplefilter('error')
 
24
        else:
 
25
            # Don't print out warnings if we're expecting them--so we can have
 
26
            # nicer looking tests! :)
 
27
            warnings.simplefilter('ignore')
 
28
 
 
29
class TestDataTypes(TestBase):
 
30
 
 
31
    def test_simple_data(self):
 
32
        s = gc.SimpleData([range(0, 62), [0, 1, 60, 61]])
 
33
        self.assertEquals(repr(s),
 
34
            'chd=s:ABCDEFGHIJKLMNOPQRSTUVWXYZ'
 
35
            'abcdefghijklmnopqrstuvwxyz0123456789,AB89')
 
36
 
 
37
    def test_text_data(self):
 
38
        s = gc.TextData([[0, 1, 99.9]])
 
39
        self.assertEquals(repr(s), 'chd=t:0.0,1.0,99.9')
 
40
 
 
41
    def test_ext_data(self):
 
42
        s = gc.ExtendedData([[0, 1, 4095]])
 
43
        self.assertEquals(repr(s), 'chd=e:AAAB..')
 
44
 
 
45
 
 
46
class TestScaling(TestBase):
 
47
 
 
48
    def test_simple_scale(self):
 
49
        sv = gc.SimpleData.scale_value
 
50
 
 
51
        self.raise_warnings(False)  # We know some of these give warnings
 
52
        self.assertEquals(sv(-10, [0, 1]), 0)
 
53
        self.assertEquals(sv(0, [0, 1]), 0)
 
54
        self.assertEquals(sv(.5, [0, 1]), 31)
 
55
        self.assertEquals(sv(30, [0, 1]), 61)
 
56
        self.assertEquals(sv(2222, [0, 10000]), 14)
 
57
 
 
58
        # Test for warnings
 
59
        self.raise_warnings(True)
 
60
        self.assertRaises(UserWarning, sv, -10, [0, 1])
 
61
        self.assertRaises(UserWarning, sv, 30, [0, 1])
 
62
 
 
63
    def test_text_scale(self):
 
64
        sv = gc.TextData.scale_value
 
65
 
 
66
        self.raise_warnings(False)
 
67
        self.assertEquals(sv(-10, [0, 1]), 0)
 
68
        self.assertEquals(sv(0, [0, 1]), 0)
 
69
        self.assertEquals(sv(.5, [0, 1]), 50)
 
70
        self.assertEquals(sv(30, [0, 1]), 100)
 
71
        self.assertEquals(sv(2222, [0, 10000]), 22.22)
 
72
 
 
73
        self.raise_warnings(True)
 
74
        sv(-10, [0, 1])
 
75
#        self.assertRaises(UserWarning, sv, -10, [0, 1])
 
76
#        self.assertEquals(UserWarning, sv, 30, [0, 1])
 
77
 
 
78
    def test_ext_scale(self):
 
79
        sv = gc.ExtendedData.scale_value
 
80
 
 
81
        self.raise_warnings(False)
 
82
        self.assertEquals(sv(-10, [0, 1]), 0)
 
83
        self.assertEquals(sv(0, [0, 1]), 0)
 
84
        self.assertEquals(sv(.5, [0, 1]), 2048)
 
85
        self.assertEquals(sv(30, [0, 1]), 4095)
 
86
        self.assertEquals(sv(2222, [0, 10000]), 910)
 
87
 
 
88
        self.raise_warnings(True)
 
89
        self.assertRaises(UserWarning, sv, -10, [0, 1])
 
90
        self.assertRaises(UserWarning, sv, 30, [0, 1])
 
91
 
 
92
class TestGrammar(TestBase):
 
93
 
 
94
    types = ('Venn', 'GroupedHorizontalBar', 'GoogleOMeter', 'Scatter',
 
95
        'StackedVerticalBar', 'Map', 'StackedHorizontalBar', 'SimpleLine',
 
96
        'SparkLine', 'GroupedVerticalBar', 'SplineRadar', 'XYLine', 'Radar')
 
97
 
 
98
    def test_chart_types(self):
 
99
        ret = gc.ChartGrammar.get_possible_chart_types()
 
100
        diff = set(ret).symmetric_difference(set(TestGrammar.types))
 
101
        self.assert_(not diff)
 
102
 
 
103
    def test_google_chart(self):
 
104
        g = {
 
105
            'type': 'GoogleOMeter',
 
106
            'w': 100,
 
107
            'h': 100,
 
108
            'auto_scale': True,
 
109
            'x_range': [ 0, 10 ],
 
110
            'data': [
 
111
                [ 1, 5, 10 ]
 
112
            ],
 
113
        }
 
114
        grammar = gc.ChartGrammar()
 
115
        chart = grammar.parse(g)
 
116
        print chart.get_url()
 
117
#        chart.download('meh.png')
 
118
 
 
119
 
 
120
if __name__ == "__main__":
 
121
    unittest.main()
 
122
 
 
123
    suite = unittest.TestSuite()
 
124
    suite.addTest(TestScaling('test_ext_scale'))
 
125
    unittest.TextTestRunner().run(suite)
 
126