File: test_data.py

package info (click to toggle)
pyx3 0.17-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,328 kB
  • sloc: python: 27,656; makefile: 225; ansic: 130; sh: 17
file content (114 lines) | stat: -rw-r--r-- 3,991 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import sys
if sys.path[0] != "../..":
    sys.path.insert(0, "../..")

import unittest

import io
from pyx.graph import data

class DataTestCase(unittest.TestCase):

    def testPoints(self):
        mydata = data.points([[1, 2, 3], [4, 5, 6]], a=1, b=2)
        self.assertEqual(mydata.columndata[0], [1, 2])
        self.assertEqual(mydata.columns["a"], [1, 4])
        self.assertEqual(mydata.columndata[2], [2, 5])
        self.assertEqual("c" in list(mydata.columns.keys()), 0)

    def testValues(self):
        mydata = data.values(a=[1, 4])
        self.assertEqual(mydata.columns["a"], [1, 4])
        self.assertEqual("c" in list(mydata.columns.keys()), 0)

    def testData(self):
        mydata = data.points([[1], [2]], a=1)
        mydata2 = data.data(mydata, a="2*a", b="2*$1*a", c="4*$(i)*a*$(-1)", context={"i":1})
        self.assertEqual(mydata.columns["a"], [1, 2])
        self.assertAlmostEqual(mydata2.columns["a"][0], 2.0)
        self.assertAlmostEqual(mydata2.columns["a"][1], 4.0)
        self.assertAlmostEqual(mydata2.columns["b"][0], 2.0)
        self.assertAlmostEqual(mydata2.columns["b"][1], 8.0)
        self.assertAlmostEqual(mydata2.columns["c"][0], 4.0)
        self.assertAlmostEqual(mydata2.columns["c"][1], 32.0)
        mydata3 = data.data(mydata2, a="b", b="2*c")
        self.assertEqual(mydata3.columns["a"], mydata2.columns["b"])
        self.assertAlmostEqual(mydata3.columns["b"][0], 2*mydata2.columns["c"][0])
        self.assertAlmostEqual(mydata3.columns["b"][1], 2*mydata2.columns["c"][1])

        a = "nothing"
        two = 2
        f = lambda x: x*x
        mydata = data.points([[1], [2]], a=1)
        mydata2 = data.data(mydata, b="two*a", c="two*$1*a", d="f($1)", context=locals())
        self.assertEqual(mydata.columndata[0], [1, 2])
        self.assertAlmostEqual(mydata2.columns["b"][0], 2.0)
        self.assertAlmostEqual(mydata2.columns["b"][1], 4.0)
        self.assertAlmostEqual(mydata2.columns["c"][0], 2.0)
        self.assertAlmostEqual(mydata2.columns["c"][1], 8.0)
        self.assertAlmostEqual(mydata2.columns["d"][0], 1.0)
        self.assertAlmostEqual(mydata2.columns["d"][1], 4.0)

    def testFile(self):
        testfile = io.StringIO("""#a
0
1 eins
2 "2"
3 x"x""")
        mydata = data.file(testfile, row=0, a="a", b=2)
        self.assertEqual(mydata.columns["row"], [1, 2, 3, 4])
        self.assertAlmostEqual(mydata.columns["a"][0], 0.0)
        self.assertAlmostEqual(mydata.columns["a"][1], 1.0)
        self.assertAlmostEqual(mydata.columns["a"][2], 2.0)
        self.assertAlmostEqual(mydata.columns["a"][3], 3.0)
        self.assertEqual(mydata.columns["b"][0], None)
        self.assertEqual(mydata.columns["b"][1], "eins")
        self.assertEqual(mydata.columns["b"][2], "2")
        self.assertEqual(mydata.columns["b"][3], "x\"x")
        testfile = io.StringIO("""#a
0
1
2
3
4
5
6
7
8
9""")
        mydata = data.file(testfile, title="title", skiphead=3, skiptail=2, every=2, row=0)
        self.assertEqual(mydata.columns["row"], [4, 6, 8])
        self.assertEqual(mydata.title, "title")

    def testSec(self):
        testfile = io.StringIO("""[sec1]
opt1=a1
opt2=a2
val=1
val=2

[sec2]
opt1=a4
opt2=a5
val=2
val=1

[sec1]
opt3=a3""")
        mydata = data.conffile(testfile, sec=0, a="opt1", b="opt2", c="opt3", d="val")
        self.assertEqual(mydata.columns["sec"], ["sec1", "sec2"])
        self.assertEqual(mydata.columns["a"], ["a1", "a4"])
        self.assertEqual(mydata.columns["b"], ["a2", "a5"])
        self.assertEqual(mydata.columns["c"], ["a3", None])
        self.assertAlmostEqual(mydata.columns["d"][0], 2.0)
        self.assertAlmostEqual(mydata.columns["d"][1], 1.0)

    def testParamfunction(self):
        mydata = data.paramfunction("k", 0, 9, "x, y = k, -k", points=10)
        for i in range(10):
            self.assertEqual(mydata.columns["x"][i], i)
            self.assertEqual(mydata.columns["y"][i], -i)


if __name__ == "__main__":
    unittest.main()