def test_json(self): """Test loading clan from json.""" data = [{"id": 1, "name": "foo"}, {"id": 2, "name": "bar"}, {"id": 3, "name": "baz"}] import json json_string = json.dumps(data) expected = Set(relations.from_dict(d) for d in data) actual = import_json(io.StringIO(json_string)) self.assertEqual(expected, actual)
def test_xml(self): xml_text = """<?xml version="1.0"?> <employee id="0034404"> <name first="john" last="doe"></name> <project lead="Foo"> <name>GAaaS</name> </project> <project name="Data Algebra"> <lead>Bar</lead> </project> </employee> """ xml_set = import_xml(io.StringIO(xml_text)) json_text = """ { "employee": { "id": "0034404", "name": { "first": "john", "last": "doe" }, "project": [ { "lead": "Foo", "name": "GAaaS" }, { "name": "Data Algebra", "lead": "Bar" } ] } } """ json_set = import_json(io.StringIO(json_text)) self.assertEqual(json_set, xml_set) from algebraixlib.algebras.relations import compose c = next(iter(xml_set)) self.assertEqual(Atom('employee'), c.left) self.assertEqual(4, len(c.right)) cid = compose(c.right, Set(Couplet('id', 'id'))) self.assertEqual(cid, Set(Couplet('id', '0034404'))) name = next(iter(compose(c.right, Set(Couplet('name', 'name'))))) self.assertEqual(name.right, Set([Couplet('first', 'john'), Couplet('last', 'doe')])) projects = compose(c.right, Set(Couplet('project', 'project'))) self.assertEqual(2, len(projects)) ep = Set([Couplet('project', Set([Couplet('name', x['name']), Couplet('lead', x['lead'])])) for x in [{'name': 'GAaaS', 'lead': 'Foo'}, {'lead': 'Bar', 'name': 'Data Algebra'}]]) self.assertEqual(projects, ep)
def test_json(self): """Test loading clan from json.""" data = [{ "id": 1, "name": "foo" }, { "id": 2, "name": "bar" }, { "id": 3, "name": "baz" }] import json json_string = json.dumps(data) expected = Set(relations.from_dict(d) for d in data) actual = import_json(io.StringIO(json_string)) self.assertEqual(expected, actual)
def test_xml(self): xml_text = """<?xml version="1.0"?> <employee id="0034404"> <name first="john" last="doe"></name> <project lead="Foo"> <name>GAaaS</name> </project> <project name="Data Algebra"> <lead>Bar</lead> </project> </employee> """ xml_set = import_xml(io.StringIO(xml_text)) json_text = """ { "employee": { "id": "0034404", "name": { "first": "john", "last": "doe" }, "project": [ { "lead": "Foo", "name": "GAaaS" }, { "name": "Data Algebra", "lead": "Bar" } ] } } """ json_set = import_json(io.StringIO(json_text)) self.assertEqual(json_set, xml_set) from algebraixlib.algebras.relations import compose c = next(iter(xml_set)) self.assertEqual(Atom('employee'), c.left) self.assertEqual(4, len(c.right)) cid = compose(c.right, Set(Couplet('id', 'id'))) self.assertEqual(cid, Set(Couplet('id', '0034404'))) name = next(iter(compose(c.right, Set(Couplet('name', 'name'))))) self.assertEqual( name.right, Set([Couplet('first', 'john'), Couplet('last', 'doe')])) projects = compose(c.right, Set(Couplet('project', 'project'))) self.assertEqual(2, len(projects)) ep = Set([ Couplet( 'project', Set([Couplet('name', x['name']), Couplet('lead', x['lead'])])) for x in [{ 'name': 'GAaaS', 'lead': 'Foo' }, { 'lead': 'Bar', 'name': 'Data Algebra' }] ]) self.assertEqual(projects, ep)