Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
    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)