##// END OF EJS Templates
Added tests
zah -
Show More
@@ -16,7 +16,7 import nose.tools as nt
16 16 from nose import SkipTest
17 17
18 18 from IPython.utils.traitlets import (
19 HasTraits, MetaHasTraits, TraitType, Any, CBytes, Dict,
19 HasTraits, MetaHasTraits, TraitType, AllowNone, Any, CBytes, Dict,
20 20 Int, Long, Integer, Float, Complex, Bytes, Unicode, TraitError,
21 21 Undefined, Type, This, Instance, TCPAddress, List, Tuple,
22 22 ObjectName, DottedObjectName, CRegExp, link
@@ -73,7 +73,7 class TestTraitType(TestCase):
73 73 self.assertEqual(a.tt, -1)
74 74
75 75 def test_default_validate(self):
76 class MyIntTT(TraitType):
76 class MyIntTT(AllowNone):
77 77 def validate(self, obj, value):
78 78 if isinstance(value, int):
79 79 return value
@@ -354,29 +354,29 class TestHasTraitsNotify(TestCase):
354 354
355 355 class A(HasTraits):
356 356 listen_to = ['a']
357
357
358 358 a = Int(0)
359 359 b = 0
360
360
361 361 def __init__(self, **kwargs):
362 362 super(A, self).__init__(**kwargs)
363 363 self.on_trait_change(self.listener1, ['a'])
364
364
365 365 def listener1(self, name, old, new):
366 366 self.b += 1
367 367
368 368 class B(A):
369
369
370 370 c = 0
371 371 d = 0
372
372
373 373 def __init__(self, **kwargs):
374 374 super(B, self).__init__(**kwargs)
375 375 self.on_trait_change(self.listener2)
376
376
377 377 def listener2(self, name, old, new):
378 378 self.c += 1
379
379
380 380 def _a_changed(self, name, old, new):
381 381 self.d += 1
382 382
@@ -442,7 +442,7 class TestHasTraits(TestCase):
442 442 def __init__(self, i):
443 443 super(A, self).__init__()
444 444 self.i = i
445
445
446 446 a = A(5)
447 447 self.assertEqual(a.i, 5)
448 448 # should raise TypeError if no positional arg given
@@ -673,6 +673,23 class TraitTestBase(TestCase):
673 673 if hasattr(self, '_default_value'):
674 674 self.assertEqual(self._default_value, self.obj.value)
675 675
676 def test_allow_none(self):
677 if (hasattr(self, '_bad_values') and hasattr(self, '_good_values') and
678 None in self._bad_values):
679 trait=self.obj.traits()['value']
680 if isinstance(trait, AllowNone) and not trait._allow_none:
681 trait._allow_none = True
682 self._bad_values.remove(None)
683 #skip coerce. Allow None casts None to None.
684 self.assign(None)
685 self.assertEqual(self.obj.value,None)
686 self.test_good_values()
687 self.test_bad_values()
688 #tear down
689 trait._allow_none = False
690 self._bad_values.append(None)
691
692
676 693 def tearDown(self):
677 694 # restore default value after tests, if set
678 695 if hasattr(self, '_default_value'):
@@ -830,7 +847,7 class TestObjectName(TraitTestBase):
830 847 _default_value = "abc"
831 848 _good_values = ["a", "gh", "g9", "g_", "_G", u"a345_"]
832 849 _bad_values = [1, "", u"€", "9g", "!", "#abc", "aj@", "a.b", "a()", "a[0]",
833 object(), object]
850 None, object(), object]
834 851 if sys.version_info[0] < 3:
835 852 _bad_values.append(u"þ")
836 853 else:
@@ -845,7 +862,7 class TestDottedObjectName(TraitTestBase):
845 862
846 863 _default_value = "a.b"
847 864 _good_values = ["A", "y.t", "y765.__repr__", "os.path.join", u"os.path.join"]
848 _bad_values = [1, u"abc.€", "_.@", ".", ".abc", "abc.", ".abc."]
865 _bad_values = [1, u"abc.€", "_.@", ".", ".abc", "abc.", ".abc.", None]
849 866 if sys.version_info[0] < 3:
850 867 _bad_values.append(u"t.þ")
851 868 else:
@@ -862,7 +879,7 class TestTCPAddress(TraitTestBase):
862 879
863 880 _default_value = ('127.0.0.1',0)
864 881 _good_values = [('localhost',0),('192.168.0.1',1000),('www.google.com',80)]
865 _bad_values = [(0,0),('localhost',10.0),('localhost',-1)]
882 _bad_values = [(0,0),('localhost',10.0),('localhost',-1), None]
866 883
867 884 class ListTrait(HasTraits):
868 885
@@ -875,7 +892,7 class TestList(TraitTestBase):
875 892 _default_value = []
876 893 _good_values = [[], [1], list(range(10)), (1,2)]
877 894 _bad_values = [10, [1,'a'], 'a']
878
895
879 896 def coerce(self, value):
880 897 if value is not None:
881 898 value = list(value)
@@ -1054,7 +1071,7 class TestLink(TestCase):
1054 1071 count = Int()
1055 1072 a = A(value=9)
1056 1073 b = B(count=8)
1057
1074
1058 1075 # Register callbacks that count.
1059 1076 callback_count = []
1060 1077 def a_callback(name, old, new):
General Comments 0
You need to be logged in to leave comments. Login now