models: Add a BrowserModel for use by the repobrowser
[git-cola.git] / jsonpickle / tests / util_tests.py
blob41cd2ad681c76dffc4bf76610c2ca46d47fbadc4
1 # -*- coding: utf-8 -*-
3 # Copyright (C) 2008 John Paulett (john -at- 7oars.com)
4 # All rights reserved.
6 # This software is licensed as described in the file COPYING, which
7 # you should have received as part of this distribution.
9 import unittest
10 import doctest
11 import time
12 import datetime
14 import jsonpickle.util
15 from jsonpickle.util import *
16 from jsonpickle.tests.classes import Thing, ListSubclass, DictSubclass
18 class IsPrimitiveTestCase(unittest.TestCase):
19 def test_int(self):
20 self.assertTrue(is_primitive(0))
21 self.assertTrue(is_primitive(3))
22 self.assertTrue(is_primitive(-3))
24 def test_float(self):
25 self.assertTrue(is_primitive(0))
26 self.assertTrue(is_primitive(3.5))
27 self.assertTrue(is_primitive(-3.5))
28 self.assertTrue(is_primitive(float(3)))
30 def test_long(self):
31 self.assertTrue(is_primitive(long(3)))
33 def test_bool(self):
34 self.assertTrue(is_primitive(True))
35 self.assertTrue(is_primitive(False))
37 def test_None(self):
38 self.assertTrue(is_primitive(None))
40 def test_str(self):
41 self.assertTrue(is_primitive('hello'))
42 self.assertTrue(is_primitive(''))
44 def test_unicode(self):
45 self.assertTrue(is_primitive(u'hello'))
46 self.assertTrue(is_primitive(u''))
47 self.assertTrue(is_primitive(unicode('hello')))
49 def test_list(self):
50 self.assertFalse(is_primitive([]))
51 self.assertFalse(is_primitive([4, 4]))
53 def test_dict(self):
54 self.assertFalse(is_primitive({'key':'value'}))
55 self.assertFalse(is_primitive({}))
57 def test_tuple(self):
58 self.assertFalse(is_primitive((1, 3)))
59 self.assertFalse(is_primitive((1,)))
61 def test_set(self):
62 self.assertFalse(is_primitive(set([1, 3])))
64 def test_object(self):
65 self.assertFalse(is_primitive(Thing('test')))
67 class IsCollection(unittest.TestCase):
68 def test_list(self):
69 self.assertTrue(is_list([1, 2]))
71 def test_set(self):
72 self.assertTrue(is_set(set([1, 2])))
74 def test_tuple(self):
75 self.assertTrue(is_tuple((1, 2)))
77 def test_dict(self):
78 self.assertFalse(is_list({'key':'value'}))
79 self.assertFalse(is_set({'key':'value'}))
80 self.assertFalse(is_tuple({'key':'value'}))
82 def test_other(self):
83 self.assertFalse(is_list(1))
84 self.assertFalse(is_set(1))
85 self.assertFalse(is_tuple(1))
87 class IsDictionary(unittest.TestCase):
88 def test_dict(self):
89 self.assertTrue(is_dictionary({'key':'value'}))
91 def test_list(self):
92 self.assertFalse(is_dictionary([1, 2]))
94 class IsDictionarySubclass(unittest.TestCase):
95 def test_subclass(self):
96 self.assertTrue(is_dictionary_subclass(DictSubclass()))
98 def test_dict(self):
99 self.assertFalse(is_dictionary_subclass({'key':'value'}))
101 class IsCollectionSubclass(unittest.TestCase):
102 def test_subclass(self):
103 self.assertTrue(is_collection_subclass(ListSubclass()))
105 def test_list(self):
106 self.assertFalse(is_collection_subclass([]))
108 class IsNonComplex(unittest.TestCase):
109 def setUp(self):
110 self.time = time.struct_time('123456789')
112 def test_time_struct(self):
113 self.assertTrue(is_noncomplex(self.time))
115 def test_other(self):
116 self.assertFalse(is_noncomplex('a'))
118 class IsRepr(unittest.TestCase):
119 def setUp(self):
120 self.time = datetime.datetime.now()
122 def test_datetime(self):
123 self.assertTrue(is_repr(self.time))
125 def test_date(self):
126 self.assertTrue(is_repr(self.time.date()))
128 def test_time(self):
129 self.assertTrue(is_repr(self.time.time()))
131 def test_timedelta(self):
132 self.assertTrue(is_repr(datetime.timedelta(4)))
134 def test_object(self):
135 self.assertFalse(is_repr(object()))
137 def suite():
138 suite = unittest.TestSuite()
139 suite.addTest(unittest.makeSuite(IsPrimitiveTestCase))
140 suite.addTest(unittest.makeSuite(IsCollection))
141 suite.addTest(unittest.makeSuite(IsDictionary))
142 suite.addTest(unittest.makeSuite(IsDictionarySubclass))
143 suite.addTest(unittest.makeSuite(IsCollectionSubclass))
144 suite.addTest(unittest.makeSuite(IsNonComplex))
145 suite.addTest(unittest.makeSuite(IsRepr))
146 suite.addTest(doctest.DocTestSuite(jsonpickle.util))
147 return suite
149 if __name__ == '__main__':
150 unittest.main(defaultTest='suite')