Ejemplo n.º 1
0
 def test_reject_timezone(self):
     try:
         BSON.from_dict({u'test zone dst' :
                         datetime.datetime(1993, 4, 4, 2, tzinfo=SomeZone())})
     except NotImplementedError:
         return
     raise ValueError("datetime with zone didn't error")
Ejemplo n.º 2
0
    def test_custom_class(self):
        self.assert_(isinstance(BSON.from_dict({}).to_dict(), dict))
        self.assertFalse(isinstance(BSON.from_dict({}).to_dict(), SON))
        self.assert_(isinstance(BSON.from_dict({}).to_dict(SON), SON))

        self.assertEqual(1, BSON.from_dict({"x": 1}).to_dict(SON)["x"])

        x = BSON.from_dict({"x": [{"y": 1}]})
        self.assert_(isinstance(x.to_dict(SON)["x"][0], SON))
Ejemplo n.º 3
0
 def query(col, spec, fields, skip, limit):
     data = [
         _ZERO, 
         _make_c_string(col), 
         struct.pack('<ii', skip, limit),
         BSON.from_dict(spec or {}),
     ]
     if fields:
         data.append(BSON.from_dict(dict.fromkeys(fields, 1)))
     return "".join(data)
Ejemplo n.º 4
0
 def update(col, spec, doc, upsert, multi):
     colname = _make_c_string(col)
     flags = 0
     if upsert:
         flags |= 1 << 0
     if multi:
         flags |= 1 << 1
     fmt = '<i%dsi' % len(colname)
     part = struct.pack(fmt, 0, colname, flags)
     return "%s%s%s" % (part, BSON.from_dict(spec), BSON.from_dict(doc))
Ejemplo n.º 5
0
 def get_size(self):
     """
     return the size of the underlying bson object
     """
     try:
         size = len(BSON.from_dict(self))
     except:
         self._process_custom_type('bson', self, self.structure)
         size = len(BSON.from_dict(self))
         self._process_custom_type('python', self, self.structure)
     return size
Ejemplo n.º 6
0
    def test_utf8(self):
        w = {u"aéあ": u"aéあ"}
        self.assertEqual(w, BSON.from_dict(w).to_dict())

        x = {u"aéあ".encode("utf-8"): u"aéあ".encode("utf-8")}
        self.assertEqual(w, BSON.from_dict(x).to_dict())

        y = {"hello": u"aé".encode("iso-8859-1")}
        self.assertRaises(InvalidStringData, BSON.from_dict, y)

        z = {u"aé".encode("iso-8859-1"): "hello"}
        self.assertRaises(InvalidStringData, BSON.from_dict, z)
Ejemplo n.º 7
0
    def test_null_character(self):
        doc = {"a": "\x00"}
        self.assertEqual(doc, BSON.from_dict(doc).to_dict())

        doc = {"a": u"\x00"}
        self.assertEqual(doc, BSON.from_dict(doc).to_dict())

        self.assertRaises(InvalidDocument, BSON.from_dict, {"\x00": "a"})
        self.assertRaises(InvalidDocument, BSON.from_dict, {u"\x00": "a"})

        self.assertRaises(InvalidDocument, BSON.from_dict, {"a": re.compile("ab\x00c")})
        self.assertRaises(InvalidDocument, BSON.from_dict, {"a": re.compile(u"ab\x00c")})
Ejemplo n.º 8
0
    def test_move_id(self):
        self.assertEqual("\x19\x00\x00\x00\x02_id\x00\x02\x00\x00\x00a\x00"
                         "\x02a\x00\x02\x00\x00\x00a\x00\x00",
                         BSON.from_dict(SON([("a", "a"), ("_id", "a")])))

        self.assertEqual("\x2c\x00\x00\x00"
                         "\x02_id\x00\x02\x00\x00\x00b\x00"
                         "\x03b\x00"
                         "\x19\x00\x00\x00\x02a\x00\x02\x00\x00\x00a\x00"
                         "\x02_id\x00\x02\x00\x00\x00a\x00\x00\x00",
                         BSON.from_dict(SON([("b", SON([("a", "a"), ("_id", "a")])),
                                             ("_id", "b")])))
Ejemplo n.º 9
0
def main():
    connection = Connection()
    runner = BenchmarkRunner(10000, connection.server_info()["gitVersion"])

    runner.run_benchmark(Encode(small, "small"))
    runner.run_benchmark(Encode(medium, "medium"))
    runner.run_benchmark(Encode(large, "large"))

    runner.run_benchmark(Decode(BSON.from_dict(small), "small"))
    runner.run_benchmark(Decode(BSON.from_dict(medium), "medium"))
    runner.run_benchmark(Decode(BSON.from_dict(large), "large"))

    runner.run_benchmark(Insert(connection.benchmark, medium, "medium"))

    runner.run_benchmark(FindOne(connection.benchmark.medium_no_index, {"x": 5000}, "medium"))
Ejemplo n.º 10
0
 def test_aware_datetime(self):
     aware = datetime.datetime(1993, 4, 4, 2, tzinfo=SomeZone())
     utc_naive = (aware - aware.utcoffset()).replace(tzinfo=None)
     self.assertEqual(datetime.datetime(1993, 4, 3, 16, 45), utc_naive)
     after = BSON.from_dict({"date": aware}).to_dict()["date"]
     self.assertEqual(None, after.tzinfo)
     self.assertEqual(utc_naive, after)
Ejemplo n.º 11
0
def main():
    connection = Connection()
    runner = BenchmarkRunner(10000, connection.server_info()["gitVersion"])

    runner.run_benchmark(Encode(small, "small"))
    runner.run_benchmark(Encode(medium, "medium"))
    runner.run_benchmark(Encode(large, "large"))

    runner.run_benchmark(Decode(BSON.from_dict(small), "small"))
    runner.run_benchmark(Decode(BSON.from_dict(medium), "medium"))
    runner.run_benchmark(Decode(BSON.from_dict(large), "large"))

    runner.run_benchmark(Insert(connection.benchmark, medium, "medium"))

    runner.run_benchmark(
        FindOne(connection.benchmark.medium_no_index, {"x": 5000}, "medium"))
Ejemplo n.º 12
0
 def test_ordered_dict(self):
     try:
         from collections import OrderedDict
     except ImportError:
         raise SkipTest()
     d = OrderedDict([("one", 1), ("two", 2), ("three", 3), ("four", 4)])
     self.assertEqual(d, BSON.from_dict(d).to_dict(as_class=OrderedDict))
Ejemplo n.º 13
0
    def test_data_files(self):
        # TODO don't hardcode this, actually clone the repo
        data_files = "../mongo-qa/modules/bson_tests/tests/*/*.xson"
        generate = True

        for file_name in glob.glob(data_files):
            f = open(file_name, "r")
            xml = f.read()
            f.close()

            try:
                doc = SON.from_xml(xml)
                bson = BSON.from_dict(doc)
            except UnsupportedTag:
                print "skipped file %s: %s" % (file_name, sys.exc_info()[1])
                continue

            try:
                f = open(file_name.replace(".xson", ".bson"), "rb")
                expected = f.read()
                f.close()

                self.assertEqual(bson, expected, file_name)
                self.assertEqual(doc, bson.to_dict(), file_name)

            except IOError:
                if generate:
                    print "generating .bson for %s" % file_name

                    f = open(file_name.replace(".xson", ".bson"), "w")
                    f.write(bson)
                    f.close()
Ejemplo n.º 14
0
    def test_from_then_to_dict(self):

        def helper(dict):
            self.assertEqual(dict, (BSON.from_dict(dict)).to_dict())
        helper({})
        helper({"test": u"hello"})
        self.assert_(isinstance(BSON.from_dict({"hello": "world"})
                                .to_dict()["hello"],
                                   types.UnicodeType))
        helper({"mike": -10120})
        helper({"long": long(10)})
        helper({"really big long": 2147483648})
        helper({u"hello": 0.0013109})
        helper({"something": True})
        helper({"false": False})
        helper({"an array": [1, True, 3.8, u"world"]})
        helper({"an object": {"test": u"something"}})
        helper({"a binary": Binary("test", 100)})
        helper({"a binary": Binary("test", 128)})
        helper({"a binary": Binary("test", 254)})
        helper({"another binary": Binary("test")})
        helper(SON([(u'test dst', datetime.datetime(1993, 4, 4, 2))]))
        helper({"big float": float(10000000000)})

        def from_then_to_dict(dict):
            return dict == (BSON.from_dict(dict)).to_dict()

        qcheck.check_unittest(self, from_then_to_dict,
                              qcheck.gen_mongo_dict(3))
Ejemplo n.º 15
0
    def test_data_files(self):
        # TODO don't hardcode this, actually clone the repo
        data_files = "../mongo-qa/modules/bson_tests/tests/*/*.xson"
        generate = True

        for file_name in glob.glob(data_files):
            f = open(file_name, "r")
            xml = f.read()
            f.close()

            try:
                doc = SON.from_xml(xml)
                bson = BSON.from_dict(doc)
            except UnsupportedTag:
                print "skipped file %s: %s" % (file_name, sys.exc_info()[1])
                continue

            try:
                f = open(file_name.replace(".xson", ".bson"), "rb")
                expected = f.read()
                f.close()

                self.assertEqual(bson, expected, file_name)
                self.assertEqual(doc, bson.to_dict(), file_name)

            except IOError:
                if generate:
                    print "generating .bson for %s" % file_name

                    f = open(file_name.replace(".xson", ".bson"), "w")
                    f.write(bson)
                    f.close()
Ejemplo n.º 16
0
 def test_aware_datetime(self):
     aware = datetime.datetime(1993, 4, 4, 2, tzinfo=FixedOffset(555, "SomeZone"))
     as_utc = (aware - aware.utcoffset()).replace(tzinfo=utc)
     self.assertEqual(datetime.datetime(1993, 4, 3, 16, 45, tzinfo=utc), as_utc)
     after = BSON.from_dict({"date": aware}).to_dict(tz_aware=True)["date"]
     self.assertEqual(utc, after.tzinfo)
     self.assertEqual(as_utc, after)
Ejemplo n.º 17
0
    def test_from_then_to_dict(self):
        def helper(dict):
            self.assertEqual(dict, (BSON.from_dict(dict)).to_dict())

        helper({})
        helper({"test": u"hello"})
        self.assert_(
            isinstance(
                BSON.from_dict({
                    "hello": "world"
                }).to_dict()["hello"], types.UnicodeType))
        helper({"mike": -10120})
        helper({"long": long(10)})
        helper({"really big long": 2147483648})
        helper({u"hello": 0.0013109})
        helper({"something": True})
        helper({"false": False})
        helper({"an array": [1, True, 3.8, u"world"]})
        helper({"an object": {"test": u"something"}})
        helper({"a binary": Binary("test", 100)})
        helper({"a binary": Binary("test", 128)})
        helper({"a binary": Binary("test", 254)})
        helper({"another binary": Binary("test")})
        helper(SON([(u'test dst', datetime.datetime(1993, 4, 4, 2))]))
        helper({"big float": float(10000000000)})

        def from_then_to_dict(dict):
            return dict == (BSON.from_dict(dict)).to_dict()

        qcheck.check_unittest(self, from_then_to_dict,
                              qcheck.gen_mongo_dict(3))
Ejemplo n.º 18
0
 def test_naive_decode(self):
     aware = datetime.datetime(1993, 4, 4, 2, tzinfo=FixedOffset(555, "SomeZone"))
     naive_utc = (aware - aware.utcoffset()).replace(tzinfo=None)
     self.assertEqual(datetime.datetime(1993, 4, 3, 16, 45), naive_utc)
     after = BSON.from_dict({"date": aware}).to_dict()["date"]
     self.assertEqual(None, after.tzinfo)
     self.assertEqual(naive_utc, after)
Ejemplo n.º 19
0
 def insert(col, doc_or_docs):
     try:
         doc_or_docs.fromkeys
         doc_or_docs = [doc_or_docs]
     except AttributeError:
         pass
     doc_data = "".join(BSON.from_dict(doc) for doc in doc_or_docs)
     colname = _make_c_string(col)
     return "%s%s%s" % (_ZERO, colname, doc_data)
Ejemplo n.º 20
0
 def test_dates(self):
     doc = {"early": datetime.datetime(1686, 5, 5), "late": datetime.datetime(2086, 5, 5)}
     try:
         self.assertEqual(doc, BSON.from_dict(doc).to_dict())
     except ValueError:
         # Ignore ValueError when no C ext, since it's probably
         # a problem w/ 32-bit Python - we work around this in the
         # C ext, though.
         if pymongo.has_c():
             raise
Ejemplo n.º 21
0
    def test_uuid(self):
        if not should_test_uuid:
            raise SkipTest()

        id = uuid.uuid4()
        transformed_id = (BSON.from_dict({"id": id})).to_dict()["id"]

        self.assert_(isinstance(transformed_id, uuid.UUID))
        self.assertEqual(id, transformed_id)
        self.assertNotEqual(uuid.uuid4(), transformed_id)
Ejemplo n.º 22
0
    def test_uuid(self):
        if not should_test_uuid:
            raise SkipTest()

        id = uuid.uuid4()
        transformed_id = (BSON.from_dict({"id": id})).to_dict()["id"]

        self.assert_(isinstance(transformed_id, uuid.UUID))
        self.assertEqual(id, transformed_id)
        self.assertNotEqual(uuid.uuid4(), transformed_id)
Ejemplo n.º 23
0
 def subscribe(self, col, spec):
     """Subscribe to updates of document in col identified by spec."""
     data = [
         "\x00\x00\x00\x00",
         _make_c_string("%s@%s" % (self._pubsub_id, col)), 
         struct.pack('<ii', 0, 0),
         BSON.from_dict(spec),
     ]
     msg = "".join(data)
     yield self._put_request(OP_SUBSCRIBE, msg)
     yield response('')
Ejemplo n.º 24
0
def get_doc_size(doc):
    """
    Get document size in bytes

    :Parameters:
        - `doc`: string or dict

    """
    if not isinstance(doc, dict):
        doc = json.loads(doc)

    return len(BSON.encode(doc))
Ejemplo n.º 25
0
 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"))
Ejemplo n.º 26
0
def get_doc_size(doc):
    """
    Get document size in bytes

    :Parameters:
        - `doc`: string or dict

    """
    if not isinstance(doc, dict):
        doc = json.loads(doc)

    return len(BSON.encode(doc))
Ejemplo n.º 27
0
    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"))
Ejemplo n.º 28
0
def main():
    xml_file = sys.argv[1]
    out_file = sys.argv[2]

    f = open(xml_file, "r")
    xml = f.read()
    f.close()

    f = open(out_file, "w")
    doc = SON.from_xml(xml)
    bson = BSON.from_dict(doc)
    f.write(bson)
    f.close()

    assert doc == bson.to_dict()
Ejemplo n.º 29
0
def main():
    xml_file = sys.argv[1]
    out_file = sys.argv[2]

    f = open(xml_file, "r")
    xml = f.read()
    f.close()

    f = open(out_file, "w")
    doc = SON.from_xml(xml)
    bson = BSON.from_dict(doc)
    f.write(bson)
    f.close()

    assert doc == bson.to_dict()
Ejemplo n.º 30
0
 def test_subclasses(self):
     # make sure we can serialize subclasses of native Python types.
     class _myint(int):
         pass
     class _myfloat(float):
         pass
     class _myunicode(unicode):
         pass
     d = {'a' : _myint(42), 'b' : _myfloat(63.9),
          'c' : _myunicode('hello world')
         }
     d2 = BSON.from_dict(d).to_dict()
     for key, value in d2.iteritems():
         orig_value = d[key]
         orig_type = orig_value.__class__.__bases__[0]
         self.assertEqual(type(value), orig_type)
         self.assertEqual(value, orig_type(value))
Ejemplo n.º 31
0
 def test_unicode_regex(self):
     regex = re.compile(u'revisi\xf3n')
     BSON.from_dict({"regex": regex}).to_dict()
Ejemplo n.º 32
0
 def test_tuple(self):
     self.assertEqual({"tuple": [1, 2]},
                       BSON.from_dict({"tuple": (1, 2)}).to_dict())
Ejemplo n.º 33
0
    def test_overflow(self):
        self.assert_(BSON.from_dict({"x": 9223372036854775807L}))
        self.assertRaises(OverflowError, BSON.from_dict, {"x": 9223372036854775808L})

        self.assert_(BSON.from_dict({"x": -9223372036854775808L}))
        self.assertRaises(OverflowError, BSON.from_dict, {"x": -9223372036854775809L})
Ejemplo n.º 34
0
 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())
Ejemplo n.º 35
0
 def serialize_report(self, output_file, report_data):
     self.load_bson()
     bson_data = BSON.encode(report_data, check_keys=True)
     with open(output_file, "wb") as fp:
         fp.write(bson_data)
Ejemplo n.º 36
0
 def from_then_to_dict(dict):
     return dict == (BSON.from_dict(dict)).to_dict()
Ejemplo n.º 37
0
 def helper(dict):
     self.assertEqual(dict, (BSON.from_dict(dict)).to_dict())
Ejemplo n.º 38
0
 def from_then_to_dict(dict):
     return dict == (BSON.from_dict(dict)).to_dict()
Ejemplo n.º 39
0
 def test_tuple(self):
     self.assertEqual({"tuple": [1, 2]},
                      BSON.from_dict({
                          "tuple": (1, 2)
                      }).to_dict())
Ejemplo n.º 40
0
 def helper(dict):
     self.assertEqual(dict, (BSON.from_dict(dict)).to_dict())
Ejemplo n.º 41
0
 def test_data_serialization(self, data):
     self.load_bson()
     BSON.encode(data, check_keys=True)
Ejemplo n.º 42
0
 def test_data_serialization(self, data):
     self.load_bson()
     BSON.encode(data, check_keys=True)
Ejemplo n.º 43
0
 def run(self, iterations):
     for _ in range(iterations):
         BSON.from_dict(self.__doc)
Ejemplo n.º 44
0
 def test_dst(self):
     d = {"x": datetime.datetime(1993, 4, 4, 2)}
     self.assertEqual(d, BSON.from_dict(d).to_dict())
Ejemplo n.º 45
0
    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", 0)}),
                         "\x14\x00\x00\x00\x05\x74\x65\x73\x74\x00\x04\x00\x00"
                         "\x00\x00\x74\x65\x73\x74\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")
Ejemplo n.º 46
0
    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")