74
74
self.assertFalse(is_valid(b("\x05\x00\x00\x00\x00\x00")))
75
75
self.assertFalse(is_valid(b("\x07\x00\x00\x00\x02a\x00\x78\x56\x34\x12")))
76
76
self.assertFalse(is_valid(b("\x09\x00\x00\x00\x10a\x00\x05\x00")))
77
self.assertFalse(is_valid(b("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00")))
78
79
def test_random_data_is_not_bson(self):
79
80
qcheck.check_unittest(self, qcheck.isnt(is_valid),
203
204
# Work around http://bugs.jython.org/issue1728
204
205
if (sys.platform.startswith('java') and
205
sys.version_info[:3] == (2, 5, 2)):
206
sys.version_info[:3] >= (2, 5, 2)):
208
209
def encode_then_decode(doc):
224
225
def test_datetime_encode_decode(self):
225
226
# Negative timestamps
226
dt1 = datetime.datetime(1, 1, 1, 1, 1, 1)
227
dt1 = datetime.datetime(1, 1, 1, 1, 1, 1, 111000)
227
228
dt2 = BSON.encode({"date": dt1}).decode()["date"]
228
229
self.assertEqual(dt1, dt2)
230
dt1 = datetime.datetime(1959, 6, 25, 12, 16, 59)
231
dt1 = datetime.datetime(1959, 6, 25, 12, 16, 59, 999000)
231
232
dt2 = BSON.encode({"date": dt1}).decode()["date"]
232
233
self.assertEqual(dt1, dt2)
234
235
# Positive timestamps
235
dt1 = datetime.datetime(9999, 12, 31, 23, 59, 59)
236
dt1 = datetime.datetime(9999, 12, 31, 23, 59, 59, 999000)
236
237
dt2 = BSON.encode({"date": dt1}).decode()["date"]
237
238
self.assertEqual(dt1, dt2)
239
dt1 = datetime.datetime(2011, 6, 14, 10, 47, 53)
240
dt1 = datetime.datetime(2011, 6, 14, 10, 47, 53, 444000)
240
241
dt2 = BSON.encode({"date": dt1}).decode()["date"]
241
242
self.assertEqual(dt1, dt2)
437
438
from collections import OrderedDict
438
439
except ImportError:
440
raise SkipTest("No OrderedDict")
440
441
d = OrderedDict([("one", 1), ("two", 2), ("three", 3), ("four", 4)])
441
442
self.assertEqual(d, BSON.encode(d).decode(as_class=OrderedDict))