Package mvpa :: Package tests :: Module test_hamster
[hide private]
[frames] | no frames]

Source Code for Module mvpa.tests.test_hamster

  1  #emacs: -*- mode: python-mode; py-indent-offset: 4; indent-tabs-mode: nil -*- 
  2  #ex: set sts=4 ts=4 sw=4 et: 
  3  ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## 
  4  # 
  5  #   See COPYING file distributed along with the PyMVPA package for the 
  6  #   copyright and license terms. 
  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   
18 -class HamsterHelperTests(unittest.TestCase):
19
20 - def testSpecification(self):
21 22 # more than 1 positional 23 self.failUnlessRaises(ValueError, Hamster, "1", 2) 24 # do not mix positional 25 self.failUnlessRaises(ValueError, Hamster, "1", bu=123) 26 # need to be a string 27 self.failUnlessRaises(ValueError, Hamster, 1) 28 # dump cannot be assigned 29 self.failUnlessRaises(ValueError, Hamster, dump=123) 30 # need to be an existing file 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
38 - def testSimpleStorage(self):
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 # dump 57 hamster.dump(filename) 58 self.failUnless(hamster.asdict() == total_dict) 59 60 # load 61 hamster2 = Hamster(filename) 62 63 # check if we re-stored all the keys 64 k = hamster.__dict__.keys(); 65 k2 = hamster2.__dict__.keys(); 66 self.failUnless(set(k) == set(k2)) 67 68 # identity should be lost 69 self.failUnless(hamster.ex1 is hamster.ex1) 70 self.failUnless(not (hamster.ex1 is hamster2.ex1)) 71 72 # lets compare 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 # not sure if that is a feature or a bug 81 self.failUnless(hamster.boo is hamster2.boo) 82 83 # cleanup 84 os.remove(filename)
85
86 - def testAssignment(self):
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
104 -def suite():
105 return unittest.makeSuite(HamsterHelperTests)
106 107 108 if __name__ == '__main__': 109 import runner 110