fixed typo in calculation of arrowheadwidth
[PyX/mjg.git] / test / unit / test_data.py
blob2a9a38dd3283a54602f8312ad575e4f974141b02
1 import unittest, StringIO, ConfigParser, types
3 from pyx import *
5 class DataTestCase(unittest.TestCase):
7 def testAccess(self):
8 mydata = data.data([[1, 2, 3], [4, 5, 6]], ["a", "b", "b"])
9 assert mydata.getcolumnno("a") == 0
10 assert mydata.getcolumnno(1) == 1
11 try:
12 mydata.getcolumnno(3)
13 assert 0, "ColumnError expected"
14 except data.ColumnError: pass
15 try:
16 mydata.getcolumnno("b")
17 assert 0, "ColumnError expected"
18 except data.ColumnError: pass
19 try:
20 mydata.getcolumnno("c")
21 assert 0, "ColumnError expected"
22 except data.ColumnError: pass
23 assert mydata.getcolumn("a") == [1, 4]
24 assert mydata.getcolumn(1) == [2, 5]
26 def testAdd(self):
27 mydata = data.data([[1], [2]], ["a"])
28 mydata.addcolumn("b=2*a")
29 mydata.addcolumn("2*$1*a")
30 assert mydata.titles == ["a", "b", None]
31 assert mydata.data == [[1, 2.0, 4.0], [2, 4.0, 16.0]]
33 a = "nothing"
34 two = 2
35 f = lambda x: x*x
36 mydata = data.data([[1], [2]], ["a"])
37 mydata.addcolumn("b=two*a", context=locals())
38 mydata.addcolumn("two*$-1*a", context=locals())
39 mydata.addcolumn("two*$(-1)*a", context=locals())
40 mydata.addcolumn("f($-1)", context=locals())
41 assert mydata.titles == ["a", "b", None, None, None]
42 assert mydata.data == [[1, 2.0, 4.0, 8.0, 64.0], [2, 4.0, 16.0, 64.0, 4096.0]]
44 def testFile(self):
45 teststr = """#a
47 1 eins
48 2 "2"
49 3 x"x
50 """
51 mydata = data.datafile(StringIO.StringIO(teststr))
52 assert mydata.titles == [None, "a", None]
53 assert len(mydata.data) == 4
54 assert mydata.data[0] == [1, 0.0, None]
55 assert mydata.data[1] == [2, 1.0, "eins"]
56 assert mydata.data[2] == [3, 2.0, "2"]
57 assert mydata.data[3] == [4, 3.0, "x\"x"]
59 def testSec(self):
60 teststr = """[sec1]
61 opt1=bla1
62 opt2=bla2
63 val=1
64 val=2
66 [sec2]
67 opt1=bla1
68 opt2=bla2
69 val=2
70 val=1
72 [sec1]
73 opt3=bla3"""
75 mydata = data.sectionfile(StringIO.StringIO(teststr))
77 configfile = ConfigParser.ConfigParser()
78 configfile.optionxform = str
79 configfile.readfp(StringIO.StringIO(teststr))
81 sec1 = list(mydata.getcolumn("section"))
82 sec1.sort()
83 sec2 = list(configfile.sections())
84 sec2.sort()
85 assert sec1 == sec2
87 for line in mydata.data:
88 sec = line[0]
89 for i in range(1, len(mydata.titles)):
90 opt = mydata.titles[i]
91 if type(line[i]) == types.FloatType:
92 assert configfile.getfloat(sec, opt) == line[i]
93 elif type(line[i]) == types.StringType:
94 assert configfile.get(sec, opt) == line[i]
95 else:
96 assert not configfile.has_option(sec, opt)
98 suite = unittest.TestSuite((unittest.makeSuite(DataTestCase, 'test'), ))
100 if __name__ == "__main__":
101 runner = unittest.TextTestRunner()
102 runner.run(suite)