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()
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()
def test_from_xml(self): smorgasbord = """ <twonk> <meta/> <doc> <oid name="_id">285a664923b5fcd8ec000000</oid> <int name="the_answer">42</int> <string name="b">foo</string> <boolean name="c">true</boolean> <number name="pi">3.14159265358979</number> <array name="an_array"> <string name="0">x</string> <string name="1">y</string> <string name="2">z</string> <doc name="3"> <string name="subobject">yup</string> </doc> </array> <date name="now">123144452057</date> <ref name="dbref"> <ns>namespace</ns> <oid>ca5c67496c01d896f7010000</oid> </ref> <regex name="regex"> <pattern>foobar</pattern> <options>i</options> </regex> <code name="$where">this is code</code> <null name="mynull"/> </doc> </twonk> """ self.assertEqual( SON.from_xml(smorgasbord), SON([ (u"_id", ObjectId("\x28\x5A\x66\x49\x23\xB5\xFC" "\xD8\xEC\x00\x00\x00")), (u"the_answer", 42), (u"b", u"foo"), (u"c", True), (u"pi", 3.14159265358979), (u"an_array", [u"x", u"y", u"z", SON([(u"subobject", u"yup")])]), (u"now", datetime.datetime(1973, 11, 26, 6, 47, 32, 57000)), (u"dbref", DBRef( "namespace", ObjectId("\xCA\x5C\x67\x49\x6C\x01" "\xD8\x96\xF7\x01\x00\x00"))), (u"regex", re.compile(u"foobar", re.IGNORECASE)), (u"$where", "this is code"), (u"mynull", None), ]))
def test_from_xml(self): smorgasbord = """ <twonk> <meta/> <doc> <oid name="_id">285a664923b5fcd8ec000000</oid> <int name="the_answer">42</int> <string name="b">foo</string> <boolean name="c">true</boolean> <number name="pi">3.14159265358979</number> <array name="an_array"> <string name="0">x</string> <string name="1">y</string> <string name="2">z</string> <doc name="3"> <string name="subobject">yup</string> </doc> </array> <date name="now">123144452057</date> <ref name="dbref"> <ns>namespace</ns> <oid>ca5c67496c01d896f7010000</oid> </ref> <regex name="regex"> <pattern>foobar</pattern> <options>i</options> </regex> <code name="$where">this is code</code> <null name="mynull"/> </doc> </twonk> """ self.assertEqual( SON.from_xml(smorgasbord), SON( [ (u"_id", ObjectId("\x28\x5A\x66\x49\x23\xB5\xFC" "\xD8\xEC\x00\x00\x00")), (u"the_answer", 42), (u"b", u"foo"), (u"c", True), (u"pi", 3.14159265358979), (u"an_array", [u"x", u"y", u"z", SON([(u"subobject", u"yup")])]), (u"now", datetime.datetime(1973, 11, 26, 6, 47, 32, 57000)), (u"dbref", DBRef("namespace", ObjectId("\xCA\x5C\x67\x49\x6C\x01" "\xD8\x96\xF7\x01\x00\x00"))), (u"regex", re.compile(u"foobar", re.IGNORECASE)), (u"$where", "this is code"), (u"mynull", None), ] ), )
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()
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()