allow empty return value for realpolyroots
[PyX/mjg.git] / test / unit / test_data.py
blob43ac28d9de816525bfd8669a087e748d2ce95e1f
1 import sys
2 if sys.path[0] != "../..":
3 sys.path.insert(0, "../..")
5 import unittest
7 import StringIO
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.columndata[0], [1, 2])
15 self.failUnlessEqual(mydata.columns["a"], [1, 4])
16 self.failUnlessEqual(mydata.columndata[2], [2, 5])
17 self.failUnlessEqual("c" in mydata.columns.keys(), 0)
19 def testData(self):
20 mydata = data.list([[1], [2]], a=1)
21 mydata2 = data.data(mydata, a="2*a", b="2*$1*a", c="4*$(i)*a*$(-1)", context={"i":1})
22 self.failUnlessEqual(mydata.columns["a"], [1, 2])
23 self.failUnlessAlmostEqual(mydata2.columns["a"][0], 2.0)
24 self.failUnlessAlmostEqual(mydata2.columns["a"][1], 4.0)
25 self.failUnlessAlmostEqual(mydata2.columns["b"][0], 2.0)
26 self.failUnlessAlmostEqual(mydata2.columns["b"][1], 8.0)
27 self.failUnlessAlmostEqual(mydata2.columns["c"][0], 4.0)
28 self.failUnlessAlmostEqual(mydata2.columns["c"][1], 32.0)
29 mydata3 = data.data(mydata2, a="b", b="2*c")
30 self.failUnlessEqual(mydata3.columns["a"], mydata2.columns["b"])
31 self.failUnlessAlmostEqual(mydata3.columns["b"][0], 2*mydata2.columns["c"][0])
32 self.failUnlessAlmostEqual(mydata3.columns["b"][1], 2*mydata2.columns["c"][1])
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.columndata[0], [1, 2])
40 self.failUnlessAlmostEqual(mydata2.columns["b"][0], 2.0)
41 self.failUnlessAlmostEqual(mydata2.columns["b"][1], 4.0)
42 self.failUnlessAlmostEqual(mydata2.columns["c"][0], 2.0)
43 self.failUnlessAlmostEqual(mydata2.columns["c"][1], 8.0)
44 self.failUnlessAlmostEqual(mydata2.columns["d"][0], 1.0)
45 self.failUnlessAlmostEqual(mydata2.columns["d"][1], 4.0)
47 def testFile(self):
48 testfile = StringIO.StringIO("""#a
50 1 eins
51 2 "2"
52 3 x"x""")
53 mydata = data.file(testfile, row=0, a="a", b=2)
54 self.failUnlessEqual(mydata.columns["row"], [1, 2, 3, 4])
55 self.failUnlessAlmostEqual(mydata.columns["a"][0], 0.0)
56 self.failUnlessAlmostEqual(mydata.columns["a"][1], 1.0)
57 self.failUnlessAlmostEqual(mydata.columns["a"][2], 2.0)
58 self.failUnlessAlmostEqual(mydata.columns["a"][3], 3.0)
59 self.failUnlessEqual(mydata.columns["b"][0], None)
60 self.failUnlessEqual(mydata.columns["b"][1], "eins")
61 self.failUnlessEqual(mydata.columns["b"][2], "2")
62 self.failUnlessEqual(mydata.columns["b"][3], "x\"x")
63 testfile = StringIO.StringIO("""#a
73 9""")
74 mydata = data.file(testfile, title="title", skiphead=3, skiptail=2, every=2, row=0)
75 self.failUnlessEqual(mydata.columns["row"], [4, 6, 8])
76 self.failUnlessEqual(mydata.title, "title")
78 def testSec(self):
79 testfile = StringIO.StringIO("""[sec1]
80 opt1=a1
81 opt2=a2
82 val=1
83 val=2
85 [sec2]
86 opt1=a4
87 opt2=a5
88 val=2
89 val=1
91 [sec1]
92 opt3=a3""")
93 mydata = data.conffile(testfile, sec=0, a="opt1", b="opt2", c="opt3", d="val")
94 self.failUnlessEqual(mydata.columns["sec"], ["sec1", "sec2"])
95 self.failUnlessEqual(mydata.columns["a"], ["a1", "a4"])
96 self.failUnlessEqual(mydata.columns["b"], ["a2", "a5"])
97 self.failUnlessEqual(mydata.columns["c"], ["a3", None])
98 self.failUnlessAlmostEqual(mydata.columns["d"][0], 2.0)
99 self.failUnlessAlmostEqual(mydata.columns["d"][1], 1.0)
101 def testParamfunction(self):
102 mydata = data.paramfunction("k", 0, 9, "x, y = k, -k", points=10)
103 for i in range(10):
104 self.failUnlessEqual(mydata.columns["x"][i], i)
105 self.failUnlessEqual(mydata.columns["y"][i], -i)
108 if __name__ == "__main__":
109 unittest.main()