def test_basic_to_dict(self): self.assertEqual({"test": u"hello world"}, BSON("\x1B\x00\x00\x00\x0E\x74\x65\x73\x74\x00\x0C" "\x00\x00\x00\x68\x65\x6C\x6C\x6F\x20\x77\x6F" "\x72\x6C\x64\x00\x00").to_dict()) self.assertEqual([{ "test": u"hello world" }, {}], _to_dicts("\x1B\x00\x00\x00\x0E\x74\x65\x73\x74\x00" "\x0C\x00\x00\x00\x68\x65\x6C\x6C\x6F\x20" "\x77\x6F\x72\x6C\x64\x00\x00\x05\x00\x00" "\x00\x00"))
def test_basic_validation(self): self.assertRaises(TypeError, is_valid, 100) self.assertRaises(TypeError, is_valid, u"test") self.assertRaises(TypeError, is_valid, 10.4) self.failIf(is_valid("test")) # the simplest valid BSON document self.assert_(is_valid("\x05\x00\x00\x00\x00")) self.assert_(is_valid(BSON("\x05\x00\x00\x00\x00"))) self.failIf(is_valid("\x04\x00\x00\x00\x00")) self.failIf(is_valid("\x05\x00\x00\x00\x01")) self.failIf(is_valid("\x05\x00\x00\x00")) self.failIf(is_valid("\x05\x00\x00\x00\x00\x00"))
def test_basic_from_dict(self): self.assertRaises(TypeError, BSON.from_dict, 100) self.assertRaises(TypeError, BSON.from_dict, "hello") self.assertRaises(TypeError, BSON.from_dict, None) self.assertRaises(TypeError, BSON.from_dict, []) self.assertEqual(BSON.from_dict({}), BSON("\x05\x00\x00\x00\x00")) self.assertEqual( BSON.from_dict({"test": u"hello world"}), "\x1B\x00\x00\x00\x02\x74\x65\x73\x74\x00\x0C\x00\x00" "\x00\x68\x65\x6C\x6C\x6F\x20\x77\x6F\x72\x6C\x64\x00" "\x00") self.assertEqual( BSON.from_dict({u"mike": 100}), "\x0F\x00\x00\x00\x10\x6D\x69\x6B\x65\x00\x64\x00\x00" "\x00\x00") self.assertEqual( BSON.from_dict({"hello": 1.5}), "\x14\x00\x00\x00\x01\x68\x65\x6C\x6C\x6F\x00\x00\x00" "\x00\x00\x00\x00\xF8\x3F\x00") self.assertEqual(BSON.from_dict({"true": True}), "\x0C\x00\x00\x00\x08\x74\x72\x75\x65\x00\x01\x00") self.assertEqual( BSON.from_dict({"false": False}), "\x0D\x00\x00\x00\x08\x66\x61\x6C\x73\x65\x00\x00" "\x00") self.assertEqual( BSON.from_dict({"empty": []}), "\x11\x00\x00\x00\x04\x65\x6D\x70\x74\x79\x00\x05\x00" "\x00\x00\x00\x00") self.assertEqual( BSON.from_dict({"none": {}}), "\x10\x00\x00\x00\x03\x6E\x6F\x6E\x65\x00\x05\x00\x00" "\x00\x00\x00") self.assertEqual( BSON.from_dict({"test": Binary("test")}), "\x18\x00\x00\x00\x05\x74\x65\x73\x74\x00\x08\x00\x00" "\x00\x02\x04\x00\x00\x00\x74\x65\x73\x74\x00") self.assertEqual( BSON.from_dict({"test": Binary("test", 128)}), "\x14\x00\x00\x00\x05\x74\x65\x73\x74\x00\x04\x00\x00" "\x00\x80\x74\x65\x73\x74\x00") self.assertEqual(BSON.from_dict({"test": None}), "\x0B\x00\x00\x00\x0A\x74\x65\x73\x74\x00\x00") self.assertEqual( BSON.from_dict({"date": datetime.datetime(2007, 1, 8, 0, 30, 11)}), "\x13\x00\x00\x00\x09\x64\x61\x74\x65\x00\x38\xBE\x1C" "\xFF\x0F\x01\x00\x00\x00") self.assertEqual( BSON.from_dict({"regex": re.compile("a*b", re.IGNORECASE)}), "\x12\x00\x00\x00\x0B\x72\x65\x67\x65\x78\x00\x61\x2A" "\x62\x00\x69\x00\x00") self.assertEqual( BSON.from_dict({"$where": Code("test")}), "\x1F\x00\x00\x00\x0F\x24\x77\x68\x65\x72\x65\x00\x12" "\x00\x00\x00\x05\x00\x00\x00\x74\x65\x73\x74\x00\x05" "\x00\x00\x00\x00\x00") a = ObjectId("\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B") self.assertEqual( BSON.from_dict({"oid": a}), "\x16\x00\x00\x00\x07\x6F\x69\x64\x00\x00\x01\x02\x03" "\x04\x05\x06\x07\x08\x09\x0A\x0B\x00") self.assertEqual( BSON.from_dict({"ref": DBRef("coll", a)}), "\x2F\x00\x00\x00\x03ref\x00\x25\x00\x00\x00\x02$ref" "\x00\x05\x00\x00\x00coll\x00\x07$id\x00\x00\x01\x02" "\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x00\x00")
def test_data_timestamp(self): self.assertEqual({"test": (4, 20)}, BSON("\x13\x00\x00\x00\x11\x74\x65\x73\x74\x00\x04" "\x00\x00\x00\x14\x00\x00\x00\x00").to_dict())