def test_parse_error(self): # parse() gives parse error for bad strings try: Foo.parse(i1="2.3", s2=1.1) except ValueError, e: self.assert_( str(e) in [ "invalid literal for int(): 2.3", "invalid literal for int() with base 10: '2.3'", ] )
def test_new_parse_all(self): expected = { "foo_id": 42, "i1": 101, "s1": "alpha", "d1": date(2006,6,6), } actual = Foo.new(foo_id=42, i1=101, s1="alpha", d1=date(2006,6,6)) self.assertEquals(expected, actual) actual = Foo.parse(foo_id="42", i1="101", s1="alpha", d1="2006-06-06") self.assertEquals(expected, actual) # parse some fields str actual = Foo.parse(foo_id="42", i1=101, s1="alpha", d1=date(2006,6,6)) self.assertEquals(expected, actual)
def test_parse_auto_id(self): expected = { "foo_id": None, "i1": 0, "s1": "", "d1": None, } actual = Foo.parse(foo_id=None) self.assertEquals(expected, actual)
def test_new_parse_some_fields(self): expected = { "foo_id": 42, "i1": 0, "s1": "alpha", "d1": None, } actual = Foo.new(foo_id=42, s1="alpha") self.assertEquals(expected, actual) actual = Foo.parse(foo_id="42", s1="alpha") self.assertEquals(expected, actual)
def test_new_parse_unkown_cols(self): # DONT copy unknown columns expected = { "foo_id": None, "i1": 16, "s1": "", "d1": None, } actual = Foo.new(i1=16, s2="beta") self.assertEquals(expected, actual) actual = Foo.parse(i1="16", s2="beta") self.assertEquals(expected, actual)
def test_new_parse_clone(self): # new() and parse() should return a new dictionary expected = { "foo_id": 42, "i1": 0, "s1": "alpha", "d1": None, } actual = Foo.new(**expected) self.assertEquals(expected, actual) self.assertFalse(actual is expected) actual = Foo.parse(**expected) self.assertEquals(expected, actual) self.assertFalse(actual is expected)
def test_parse_empty_string(self): # parse() replaces empty strings with default value expected = { "foo_id": None, "i1": 0, "s1": "", "d1": None, } actual = Foo.parse(foo_id="", i1="", s1="", d1="") self.assertEquals(expected, actual) expected = { "bi": None, "bs": "", "bd": None, "bdt1": None, "bb": False, } actual = Bar.parse(bi="", bs="", bd="", bdt1="", bb="") self.assertEquals(expected, actual)
def test_new_parse_defaults(self): expected = { "foo_id": None, "i1": 0, "s1": "", "d1": None, } actual = Foo.new() self.assertEquals(expected, actual) actual = Foo.parse() self.assertEquals(expected, actual) expected = { "bi": None, "bs": "", "bd": None, "bdt1": None, "bb": False, } actual = Bar.new() self.assertEquals(expected, actual) actual = Bar.parse() self.assertEquals(expected, actual)
def test_parse_bad_values(self): # parse() does not allow non-string bad values try: Foo.parse(i1=2.3, s2=1.1) except TypeError, e: self.assertEquals("IntCol 'i1': int expected, got float", str(e))