1
2
3
4
5
6
7
8
9 """Unit tests for PyMVPA Hamster"""
10
11 import os
12 import unittest
13 from tempfile import mktemp
14 import numpy as N
15
16 from mvpa.misc.io.hamster import *
17
19
21
22
23 self.failUnlessRaises(ValueError, Hamster, "1", 2)
24
25 self.failUnlessRaises(ValueError, Hamster, "1", bu=123)
26
27 self.failUnlessRaises(ValueError, Hamster, 1)
28
29 self.failUnlessRaises(ValueError, Hamster, dump=123)
30
31 self.failUnlessRaises(IOError, Hamster, "/dev/ZUMBARGAN123")
32
33 hh=Hamster(budda=1, z=[123], fuga="123"); hh.h1=123;
34 delattr(hh, 'budda')
35 self.failUnless(`hh` == "Hamster(fuga='123', h1=123, z=[123])")
36
37
39 ex1 = """eins zwei drei
40 0 1 2
41 3 4 5
42 """
43 ex2 = {'d1': N.random.normal(size=(4,4))}
44
45 hamster = Hamster(ex1=ex1)
46 hamster.d = ex2
47 hamster.boo = HamsterHelperTests
48
49 total_dict = {'ex1' : ex1,
50 'd' : ex2,
51 'boo' : HamsterHelperTests}
52 self.failUnless(hamster.asdict() == total_dict)
53 self.failUnless(set(hamster.registered) == set(['ex1', 'd', 'boo']))
54
55 filename = mktemp('mvpa', 'test')
56
57 hamster.dump(filename)
58 self.failUnless(hamster.asdict() == total_dict)
59
60
61 hamster2 = Hamster(filename)
62
63
64 k = hamster.__dict__.keys();
65 k2 = hamster2.__dict__.keys();
66 self.failUnless(set(k) == set(k2))
67
68
69 self.failUnless(hamster.ex1 is hamster.ex1)
70 self.failUnless(not (hamster.ex1 is hamster2.ex1))
71
72
73 self.failUnless(hamster.ex1 == hamster2.ex1)
74
75 self.failUnless(hamster.d.keys() == hamster2.d.keys())
76 self.failUnless((hamster.d['d1'] == hamster2.d['d1']).all())
77
78
79 self.failUnless(hamster.boo == hamster2.boo)
80
81 self.failUnless(hamster.boo is hamster2.boo)
82
83
84 os.remove(filename)
85
87 ex1 = """eins zwei drei
88 0 1 2
89 3 4 5
90 """
91 ex2 = {'d1': N.random.normal(size=(4,4))}
92
93 h = Hamster(ex1=ex1)
94 h.ex2 = ex2
95 self.failUnless(hasattr(h, 'ex2'))
96 h.ex2 = None
97 self.failUnless(h.ex2 is None)
98 h.ex2 = 123
99 self.failUnless(h.ex2 == 123)
100 h.has_key = 123
101
102
103
106
107
108 if __name__ == '__main__':
109 import runner
110