##// END OF EJS Templates
Merge pull request #14 from minrk/cast-tuple...
Jonathan Frederic -
r15474:97a6a598 merge
parent child Browse files
Show More
@@ -886,8 +886,13 b' class TestList(TraitTestBase):'
886 886 obj = ListTrait()
887 887
888 888 _default_value = []
889 _good_values = [[], [1], list(range(10))]
890 _bad_values = [10, [1,'a'], 'a', (1,2)]
889 _good_values = [[], [1], list(range(10)), (1,2)]
890 _bad_values = [10, [1,'a'], 'a']
891
892 def coerce(self, value):
893 if value is not None:
894 value = list(value)
895 return value
891 896
892 897 class LenListTrait(HasTraits):
893 898
@@ -898,8 +903,13 b' class TestLenList(TraitTestBase):'
898 903 obj = LenListTrait()
899 904
900 905 _default_value = [0]
901 _good_values = [[1], list(range(2))]
902 _bad_values = [10, [1,'a'], 'a', (1,2), [], list(range(3))]
906 _good_values = [[1], [1,2], (1,2)]
907 _bad_values = [10, [1,'a'], 'a', [], list(range(3))]
908
909 def coerce(self, value):
910 if value is not None:
911 value = list(value)
912 return value
903 913
904 914 class TupleTrait(HasTraits):
905 915
@@ -910,8 +920,13 b' class TestTupleTrait(TraitTestBase):'
910 920 obj = TupleTrait()
911 921
912 922 _default_value = None
913 _good_values = [(1,), None,(0,)]
914 _bad_values = [10, (1,2), [1],('a'), ()]
923 _good_values = [(1,), None, (0,), [1]]
924 _bad_values = [10, (1,2), ('a'), ()]
925
926 def coerce(self, value):
927 if value is not None:
928 value = tuple(value)
929 return value
915 930
916 931 def test_invalid_args(self):
917 932 self.assertRaises(TypeError, Tuple, 5)
@@ -927,8 +942,13 b' class TestLooseTupleTrait(TraitTestBase):'
927 942 obj = LooseTupleTrait()
928 943
929 944 _default_value = (1,2,3)
930 _good_values = [(1,), None, (0,), tuple(range(5)), tuple('hello'), ('a',5), ()]
931 _bad_values = [10, 'hello', [1], []]
945 _good_values = [(1,), None, [1], (0,), tuple(range(5)), tuple('hello'), ('a',5), ()]
946 _bad_values = [10, 'hello', {}]
947
948 def coerce(self, value):
949 if value is not None:
950 value = tuple(value)
951 return value
932 952
933 953 def test_invalid_args(self):
934 954 self.assertRaises(TypeError, Tuple, 5)
@@ -1210,6 +1210,7 b' class Container(Instance):'
1210 1210 To be subclassed by overriding klass.
1211 1211 """
1212 1212 klass = None
1213 _cast_types = ()
1213 1214 _valid_defaults = SequenceTypes
1214 1215 _trait = None
1215 1216
@@ -1273,6 +1274,8 b' class Container(Instance):'
1273 1274 raise TraitError(e)
1274 1275
1275 1276 def validate(self, obj, value):
1277 if isinstance(value, self._cast_types):
1278 value = self.klass(value)
1276 1279 value = super(Container, self).validate(obj, value)
1277 1280 if value is None:
1278 1281 return value
@@ -1298,6 +1301,7 b' class Container(Instance):'
1298 1301 class List(Container):
1299 1302 """An instance of a Python list."""
1300 1303 klass = list
1304 _cast_types = (tuple,)
1301 1305
1302 1306 def __init__(self, trait=None, default_value=None, minlen=0, maxlen=sys.maxsize,
1303 1307 allow_none=True, **metadata):
@@ -1354,15 +1358,27 b' class List(Container):'
1354 1358 self.length_error(obj, value)
1355 1359
1356 1360 return super(List, self).validate_elements(obj, value)
1361
1362 def validate(self, obj, value):
1363 value = super(List, self).validate(obj, value)
1364 if value is None:
1365 return value
1366
1367 value = self.validate_elements(obj, value)
1368
1369 return value
1370
1357 1371
1358 1372
1359 class Set(Container):
1373 class Set(List):
1360 1374 """An instance of a Python set."""
1361 1375 klass = set
1376 _cast_types = (tuple, list)
1362 1377
1363 1378 class Tuple(Container):
1364 1379 """An instance of a Python tuple."""
1365 1380 klass = tuple
1381 _cast_types = (list,)
1366 1382
1367 1383 def __init__(self, *traits, **metadata):
1368 1384 """Tuple(*traits, default_value=None, allow_none=True, **medatata)
General Comments 0
You need to be logged in to leave comments. Login now