def test_listofstrings(self): """Test list of strings""" # test default separators self.assertEqual(ListOfStrings.SEPARATOR_LIST, ',') dest = ['a', 'b'] txt = ListOfStrings.SEPARATOR_LIST.join(dest) res = ListOfStrings(txt) self.assertEqual(res, dest) self.assertEqual(str(res), txt) # retest with space separated separator res = ListOfStrings(txt.replace(ListOfStrings.SEPARATOR_LIST, ListOfStrings.SEPARATOR_LIST + ' ')) self.assertEqual(res, dest)
def test_listofstrings(self): """Test list of strings""" # test default separators self.assertEqual(ListOfStrings.SEPARATOR_LIST, ',') dest = ['a', 'b'] txt = ListOfStrings.SEPARATOR_LIST.join(dest) res = ListOfStrings(txt) self.assertEqual(res, dest) self.assertEqual(str(res), txt) # retest with space separated separator res = ListOfStrings(txt.replace(ListOfStrings.SEPARATOR_LIST, ListOfStrings.SEPARATOR_LIST + ' ')) self.assertEqual(res, dest) # empty string yields a list with an empty string self.assertEqual(ListOfStrings(''), ['']) # empty entries are retained self.assertEqual(ListOfStrings('a,,b'), ['a', '', 'b'])
def test_dictofstrings(self): """Test dict of strings""" # test default separators self.assertEqual(DictOfStrings.SEPARATOR_DICT, ';') self.assertEqual(DictOfStrings.SEPARATOR_KEY_VALUE, ':') # start with simple one because the conversion to string is ordered dest = {'a': 'b'} txt = DictOfStrings.SEPARATOR_KEY_VALUE.join(dest.items()[0]) res = DictOfStrings(txt) self.assertEqual(res, dest) self.assertEqual(str(res), txt) # test with auto convert list to dict class Tmp(DictOfStrings): KEYLESS_ENTRIES = ['first'] __str__ = DictOfStrings.__str__ dest2 = {'first': 'first_value'} dest2.update(dest) txt2 = DictOfStrings.SEPARATOR_DICT.join([dest2['first'], txt]) res = Tmp(txt2) self.assertEqual(res, dest2) self.assertEqual(str(res), txt2) # retest with space separated separator txt2 = txt.replace(DictOfStrings.SEPARATOR_KEY_VALUE, DictOfStrings.SEPARATOR_KEY_VALUE + ' ') res = ListOfStrings( txt2.replace(DictOfStrings.SEPARATOR_DICT, DictOfStrings.SEPARATOR_DICT + ' ')) # more complex one dest = {'a': 'b', 'c': 'd'} tmp = [ DictOfStrings.SEPARATOR_KEY_VALUE.join(item) for item in dest.items() ] txt = DictOfStrings.SEPARATOR_DICT.join(tmp) res = DictOfStrings(txt) self.assertEqual(res, dest) # test ALLOWED_KEYS class Tmp(DictOfStrings): ALLOWED_KEYS = ['x'] self.assertErrorRegex(ValueError, "allowed", Tmp, txt)
def _from_string(self, txt): """Convert from comma-separated string""" res = ListOfStrings._from_string(self, txt) return [Patch(x) for x in res]