2 if sys
.path
[0] != "../..":
3 sys
.path
.insert(0, "../..")
7 import StringIO
, ConfigParser
, types
10 class DataTestCase(unittest
.TestCase
):
13 mydata
= data
.data([[1, 2, 3], [4, 5, 6]], ["a", "b", "b"])
14 self
.failUnlessEqual(mydata
.getcolumnno("a"), 0)
15 self
.failUnlessEqual(mydata
.getcolumnno(1), 1)
16 self
.failUnlessRaises(data
.ColumnError
, mydata
.getcolumnno
, 3)
17 self
.failUnlessRaises(data
.ColumnError
, mydata
.getcolumnno
, "b")
18 self
.failUnlessRaises(data
.ColumnError
, mydata
.getcolumnno
, "c")
19 self
.failUnlessEqual(mydata
.getcolumn("a"), [1, 4])
20 self
.failUnlessEqual(mydata
.getcolumn(1), [2, 5])
23 mydata
= data
.data([[1], [2]], ["a"])
24 mydata
.addcolumn("b=2*a")
25 mydata
.addcolumn("2*$1*a")
26 #mydata.addcolumn("2*$(i)*a", context={"i":1}) # not supported
27 self
.failUnlessEqual(mydata
.titles
, ["a", "b", None])
28 self
.failUnlessEqual(mydata
.data
, [[1, 2.0, 4.0], [2, 4.0, 16.0]])
33 mydata
= data
.data([[1], [2]], ["a"])
34 mydata
.addcolumn("b=two*a", context
=locals())
35 mydata
.addcolumn("two*$(-1)*a", context
=locals())
36 mydata
.addcolumn("two*$(-1)*a", context
=locals())
37 mydata
.addcolumn("f($(-1))", context
=locals())
38 self
.failUnlessEqual(mydata
.titles
, ["a", "b", None, None, None])
39 self
.failUnlessEqual(mydata
.data
, [[1, 2.0, 4.0, 8.0, 64.0], [2, 4.0, 16.0, 64.0, 4096.0]])
48 mydata
= data
.datafile(StringIO
.StringIO(teststr
))
49 self
.failUnlessEqual(mydata
.titles
, [None, "a", None])
50 self
.failUnlessEqual(len(mydata
.data
), 4)
51 self
.failUnlessEqual(mydata
.data
[0], [1, 0.0, None])
52 self
.failUnlessEqual(mydata
.data
[1], [2, 1.0, "eins"])
53 self
.failUnlessEqual(mydata
.data
[2], [3, 2.0, "2"])
54 self
.failUnlessEqual(mydata
.data
[3], [4, 3.0, "x\"x"])
72 mydata
= data
.sectionfile(StringIO
.StringIO(teststr
))
74 configfile
= ConfigParser
.ConfigParser()
75 configfile
.optionxform
= str
76 configfile
.readfp(StringIO
.StringIO(teststr
))
78 sec1
= list(mydata
.getcolumn("section"))
80 sec2
= list(configfile
.sections())
82 self
.failUnlessEqual(sec1
, sec2
)
84 for line
in mydata
.data
:
86 for i
in range(1, len(mydata
.titles
)):
87 opt
= mydata
.titles
[i
]
88 if type(line
[i
]) == types
.FloatType
:
89 self
.failUnlessEqual(configfile
.getfloat(sec
, opt
), line
[i
])
90 elif type(line
[i
]) == types
.StringType
:
91 self
.failUnlessEqual(configfile
.get(sec
, opt
), line
[i
])
93 self
.failIf(configfile
.has_option(sec
, opt
))
96 if __name__
== "__main__":