/+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
 
#!/usr/bin/env python
2
 
# -*- coding: utf-8 -*-
3
 
 
4
1
import unittest
5
2
import sys
6
3
import os
7
4
import warnings
8
 
import urllib
9
5
 
10
6
ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
11
7
sys.path.insert(0, ROOT)
20
16
        # All tests require warnings to be raised
21
17
        self.raise_warnings(True)
22
18
 
23
 
        self.temp_image = 'temp.png'
24
 
 
25
 
    def tearDown(self):
26
 
        if os.path.exists(self.temp_image):
27
 
            os.unlink(self.temp_image)
28
 
 
29
19
    def raise_warnings(self, rw):
30
20
        gc._reset_warnings()
31
21
 
36
26
            # nicer looking tests! :)
37
27
            warnings.simplefilter('ignore')
38
28
 
39
 
    def assertChartURL(self, url, query):
40
 
        self.assertTrue(url.endswith(query))
41
 
 
42
 
 
43
29
class TestDataTypes(TestBase):
44
30
 
45
31
    def test_simple_data(self):
85
71
        self.assertEquals(sv(2222, [0, 10000]), 22.22)
86
72
 
87
73
        self.raise_warnings(True)
88
 
        self.assertRaises(UserWarning, sv, -10, [0, 1])
89
 
        self.assertRaises(UserWarning, sv, 30, [0, 1])
 
74
        sv(-10, [0, 1])
 
75
#        self.assertRaises(UserWarning, sv, -10, [0, 1])
 
76
#        self.assertEquals(UserWarning, sv, 30, [0, 1])
90
77
 
91
78
    def test_ext_scale(self):
92
79
        sv = gc.ExtendedData.scale_value
102
89
        self.assertRaises(UserWarning, sv, -10, [0, 1])
103
90
        self.assertRaises(UserWarning, sv, 30, [0, 1])
104
91
 
105
 
 
106
 
class TestLineChart(TestBase):
107
 
 
108
 
    def test_none_data(self):
109
 
        chart = gc.SimpleLineChart(300, 100)
110
 
        chart.add_data([1, 2, 3, None, 5])
111
 
        self.assertChartURL(chart.get_url(), \
112
 
            '?cht=lc&chs=300x100&chd=e:AAMzZm__zM')
113
 
 
114
 
 
115
 
class TestQRChart(TestBase):
116
 
 
117
 
    def assertQRImage(self, chart, text):
118
 
        try:
119
 
            import PyQrcodec
120
 
        except ImportError:
121
 
            print 'PyQrCodec not installed. Can not test QR code image'
122
 
            return
123
 
 
124
 
        chart.download(self.temp_image)
125
 
        status, string = PyQrcodec.decode(self.temp_image)
126
 
        self.assertTrue(status)
127
 
        self.assertEquals(text, string)
128
 
 
129
 
    def test_simple(self):
130
 
        text = 'Hello World'
131
 
        chart = gc.QRChart(100, 150)
132
 
        chart.add_data(text)
133
 
        self.assertChartURL(chart.get_url(), \
134
 
            '?cht=qr&chs=100x150&chl=Hello%20World')
135
 
 
136
 
    def test_encoding(self):
137
 
        chart = gc.QRChart(100, 100)
138
 
        chart.add_data('Hello World')
139
 
        self.assertChartURL(chart.get_url(), \
140
 
            '?cht=qr&chs=100x100&chl=Hello%20World')
141
 
 
142
 
    def test_no_data(self):
143
 
        chart = gc.QRChart(100, 100)
144
 
        self.assertRaises(gc.NoDataGivenException, chart.get_url)
145
 
 
146
 
    def test_validate_image(self):
147
 
        text = 'Hello World'
148
 
        chart = gc.QRChart(100, 100)
149
 
        chart.add_data(text)
150
 
        chart.set_ec('H', 0)  # PyQrcodec seems to only work on higher EC
151
 
        self.assertQRImage(chart, text)
152
 
 
153
 
    def test_validate_utf8(self):
154
 
        text = 'こんにちは世界'  # Hello world in Japanese UTF-8
155
 
        chart = gc.QRChart(100, 100)
156
 
        chart.add_data(text)
157
 
        chart.set_ec('H', 0)
158
 
        self.assertQRImage(chart, text)
159
 
 
160
92
class TestGrammar(TestBase):
161
93
 
162
94
    types = ('Venn', 'GroupedHorizontalBar', 'GoogleOMeter', 'Scatter',
163
95
        'StackedVerticalBar', 'Map', 'StackedHorizontalBar', 'SimpleLine',
164
 
        'SparkLine', 'GroupedVerticalBar', 'SplineRadar', 'XYLine', 'Radar',
165
 
        'QR')
 
96
        'SparkLine', 'GroupedVerticalBar', 'SplineRadar', 'XYLine', 'Radar')
166
97
 
167
98
    def test_chart_types(self):
168
99
        ret = gc.ChartGrammar.get_possible_chart_types()
182
113
        }
183
114
        grammar = gc.ChartGrammar()
184
115
        chart = grammar.parse(g)
185
 
#        print chart.get_url()
 
116
        print chart.get_url()
186
117
#        chart.download('meh.png')
187
118
 
188
119
 
189
120
if __name__ == "__main__":
190
121
    unittest.main()
191
122
 
 
123
    suite = unittest.TestSuite()
 
124
    suite.addTest(TestScaling('test_ext_scale'))
 
125
    unittest.TextTestRunner().run(suite)
 
126