monkey-patch for mathpazo bug
[PyX/mjg.git] / test / unit / test_data.py
blobadc6cb076115fdcb638de6c14e997a7046de5d9a
1 import sys
2 if sys.path[0] != "../..":
3 sys.path.insert(0, "../..")
5 import unittest
7 import os
8 from pyx.graph import data
10 class DataTestCase(unittest.TestCase):
12 def testList(self):
13 mydata = data.list([[1, 2, 3], [4, 5, 6]], a=1, b=2)
14 self.failUnlessEqual(mydata.getcolumnnumber("a"), 1)
15 self.failUnlessEqual(mydata.getcolumnnumber(2), 2)
16 self.failUnlessRaises(KeyError, mydata.getcolumnnumber, "c")
17 self.failUnlessEqual(mydata.getcolumn("a"), [1, 4])
18 self.failUnlessEqual(mydata.getcolumn(2), [2, 5])
20 def testData(self):
21 mydata = data.list([[1], [2]], a=1)
22 mydata2 = data.data(mydata, a="2*a", b="2*$1*a", c="4*$(i)*a*$(-1)", context={"i":1})
23 self.failUnlessEqual(mydata.points[0][0], 1)
24 self.failUnlessEqual(mydata.points[1][0], 2)
25 self.failUnlessAlmostEqual(mydata2.points[0][mydata2.columns["a"]], 2.0)
26 self.failUnlessAlmostEqual(mydata2.points[1][mydata2.columns["a"]], 4.0)
27 self.failUnlessAlmostEqual(mydata2.points[0][mydata2.columns["b"]], 2.0)
28 self.failUnlessAlmostEqual(mydata2.points[1][mydata2.columns["b"]], 8.0)
29 self.failUnlessAlmostEqual(mydata2.points[0][mydata2.columns["c"]], 4.0)
30 self.failUnlessAlmostEqual(mydata2.points[1][mydata2.columns["c"]], 32.0)
31 mydata3 = data.data(mydata2, a=2, b=3)
32 self.failUnlessEqual(mydata3.points, mydata2.points)
34 a = "nothing"
35 two = 2
36 f = lambda x: x*x
37 mydata = data.list([[1], [2]], a=1)
38 mydata2 = data.data(mydata, b="two*a", c="two*$1*a", d="f($1)", context=locals())
39 self.failUnlessEqual(mydata.points[0][0], 1)
40 self.failUnlessEqual(mydata.points[1][0], 2)
41 self.failUnlessAlmostEqual(mydata2.points[0][mydata2.columns["b"]], 2.0)
42 self.failUnlessAlmostEqual(mydata2.points[1][mydata2.columns["b"]], 4.0)
43 self.failUnlessAlmostEqual(mydata2.points[0][mydata2.columns["c"]], 2.0)
44 self.failUnlessAlmostEqual(mydata2.points[1][mydata2.columns["c"]], 8.0)
45 self.failUnlessAlmostEqual(mydata2.points[0][mydata2.columns["d"]], 1.0)
46 self.failUnlessAlmostEqual(mydata2.points[1][mydata2.columns["d"]], 4.0)
48 def testFile(self):
49 testfile = open("test_data.dat", "w")
50 testfile.write("""#a
52 1 eins
53 2 "2"
54 3 x"x""")
55 testfile.close()
56 mydata = data.file("test_data.dat", a="a", b=2)
57 self.failUnlessEqual(len(mydata.columns.keys()), 2)
58 self.failUnlessEqual(len(mydata.points), 4)
59 self.failUnlessEqual(mydata.points[0][0], 1)
60 self.failUnlessEqual(mydata.points[1][0], 2)
61 self.failUnlessEqual(mydata.points[2][0], 3)
62 self.failUnlessEqual(mydata.points[3][0], 4)
63 self.failUnlessAlmostEqual(mydata.points[0][mydata.columns["a"]], 0.0)
64 self.failUnlessAlmostEqual(mydata.points[1][mydata.columns["a"]], 1.0)
65 self.failUnlessAlmostEqual(mydata.points[2][mydata.columns["a"]], 2.0)
66 self.failUnlessAlmostEqual(mydata.points[3][mydata.columns["a"]], 3.0)
67 self.failUnlessEqual(mydata.points[0][mydata.columns["b"]], None)
68 self.failUnlessEqual(mydata.points[1][mydata.columns["b"]], "eins")
69 self.failUnlessEqual(mydata.points[2][mydata.columns["b"]], "2")
70 self.failUnlessEqual(mydata.points[3][mydata.columns["b"]], "x\"x")
71 os.unlink("test_data.dat")
73 def testSec(self):
74 testfile = open("test_data.dat", "w")
75 testfile.write("""[sec1]
76 opt1=bla1
77 opt2=bla2
78 val=1
79 val=2
81 [sec2]
82 opt1=bla1
83 opt2=bla2
84 val=2
85 val=1
87 [sec1]
88 opt3=bla3""")
89 testfile.close()
90 mydata = data.conffile("test_data.dat", a="opt1", b="opt2", c="opt3", d="val")
91 self.failUnlessEqual(len(mydata.columns.keys()), 4)
92 self.failUnlessEqual(len(mydata.points), 2)
93 self.failUnlessEqual(mydata.points[0][0], "sec1")
94 self.failUnlessEqual(mydata.points[1][0], "sec2")
95 self.failUnlessEqual(mydata.points[0][mydata.columns["a"]], "bla1")
96 self.failUnlessEqual(mydata.points[0][mydata.columns["b"]], "bla2")
97 self.failUnlessEqual(mydata.points[0][mydata.columns["c"]], "bla3")
98 self.failUnlessAlmostEqual(mydata.points[0][mydata.columns["d"]], 2.0)
99 self.failUnlessEqual(mydata.points[1][mydata.columns["a"]], "bla1")
100 self.failUnlessEqual(mydata.points[1][mydata.columns["b"]], "bla2")
101 self.failUnlessEqual(mydata.points[1][mydata.columns["c"]], None)
102 self.failUnlessAlmostEqual(mydata.points[1][mydata.columns["d"]], 1.0)
103 os.unlink("test_data.dat")
106 if __name__ == "__main__":
107 unittest.main()