6
ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
7
sys.path.insert(0, ROOT)
9
import pygooglechart as gc
12
class TestBase(unittest.TestCase):
16
# All tests require warnings to be raised
17
self.raise_warnings(True)
19
def raise_warnings(self, rw):
23
warnings.simplefilter('error')
25
# Don't print out warnings if we're expecting them--so we can have
26
# nicer looking tests! :)
27
warnings.simplefilter('ignore')
29
class TestDataTypes(TestBase):
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')
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')
41
def test_ext_data(self):
42
s = gc.ExtendedData([[0, 1, 4095]])
43
self.assertEquals(repr(s), 'chd=e:AAAB..')
46
class TestScaling(TestBase):
48
def test_simple_scale(self):
49
sv = gc.SimpleData.scale_value
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)
59
self.raise_warnings(True)
60
self.assertRaises(UserWarning, sv, -10, [0, 1])
61
self.assertRaises(UserWarning, sv, 30, [0, 1])
63
def test_text_scale(self):
64
sv = gc.TextData.scale_value
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)
73
self.raise_warnings(True)
75
# self.assertRaises(UserWarning, sv, -10, [0, 1])
76
# self.assertEquals(UserWarning, sv, 30, [0, 1])
78
def test_ext_scale(self):
79
sv = gc.ExtendedData.scale_value
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)
88
self.raise_warnings(True)
89
self.assertRaises(UserWarning, sv, -10, [0, 1])
90
self.assertRaises(UserWarning, sv, 30, [0, 1])
92
class TestGrammar(TestBase):
94
types = ('Venn', 'GroupedHorizontalBar', 'GoogleOMeter', 'Scatter',
95
'StackedVerticalBar', 'Map', 'StackedHorizontalBar', 'SimpleLine',
96
'SparkLine', 'GroupedVerticalBar', 'SplineRadar', 'XYLine', 'Radar')
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)
103
def test_google_chart(self):
105
'type': 'GoogleOMeter',
109
'x_range': [ 0, 10 ],
114
grammar = gc.ChartGrammar()
115
chart = grammar.parse(g)
116
print chart.get_url()
117
# chart.download('meh.png')
120
if __name__ == "__main__":
123
suite = unittest.TestSuite()
124
suite.addTest(TestScaling('test_ext_scale'))
125
unittest.TextTestRunner().run(suite)