예제 #1
0
 def testTupleWithNestedLinkToMany(self):
     self.assertRequires(
         baz(S.y),
         Edge([Link('y',
                    Edge([Field('e'),
                          Link('xs', Edge([Field('b')]))]))]),
     )
     self.assertRequires(
         each(S.item, S.ys, baz(S.item)),
         Edge([Link('ys',
                    Edge([Field('e'),
                          Link('xs', Edge([Field('b')]))]))]),
     )
예제 #2
0
 def test(self):
     with reqs_eq_patcher():
         self.assertEqual(
             merge([
                 Edge([Field('a1'), Field('a2'),
                       Link('b', Edge([Field('b1'), Field('b2')]))]),
                 Edge([Field('a2'), Field('a3'),
                       Link('b', Edge([Field('b2'), Field('b3')]))]),
             ]),
             Edge([Field('a1'), Field('a2'), Field('a3'),
                   Link('b', Edge([Field('b1'), Field('b2'),
                                   Field('b3')]))]),
         )
예제 #3
0
파일: test_refs.py 프로젝트: anxolerd/hiku
def test_query_nested_optional_arg():

    @define(Record[{'una': Optional[Record[{'oloroso': Any}]]}])
    def foo(arg):
        pass

    check_query(
        foo(S.weigh),
        Node([
            Link('weigh', Node([
                Link('una', Node([Field('oloroso')])),
            ])),
        ]),
    )
예제 #4
0
def test_alias():
    query = merge([
        Node([
            Field('a', alias='a1'),
            Field('a', alias='a2'),
            Link('b', Node([Field('c')]), alias='b1'),
            Link('b', Node([Field('c')]), alias='b2'),
        ]),
    ])
    assert query == Node([
        Field('a', alias='a1'),
        Field('a', alias='a2'),
        Link('b', Node([Field('c')]), alias='b1'),
        Link('b', Node([Field('c')]), alias='b2'),
    ])
예제 #5
0
def test_link_options():
    check_read(
        """
        [{(:foo {:bar 1}) [:baz]}]
        """,
        Node([Link('foo', Node([Field('baz')]), options={'bar': 1})]),
    )
예제 #6
0
def test_link():
    check_read(
        """
        [{:foo [:bar :baz]}]
        """,
        Node([Link('foo', Node([Field('bar'), Field('baz')]))]),
    )
예제 #7
0
def test_link():
    node = t.Node()
    link_item = node.items.add()
    link_item.link.name = 'swaying'
    field_item = link_item.link.node.items.add()
    field_item.field.name = 'pelew'
    check_read(node, Node([Link('swaying', Node([Field('pelew')]))]))
예제 #8
0
파일: test_refs.py 프로젝트: anxolerd/hiku
def test_query_tuple_with_simple_args():

    @define(Record[{'clacks': Any, 'panicle': Any}],
            Any,
            Record[{'oloroso': Any, 'gashes': Any}],
            Any)
    def foo():
        pass

    check_query(
        foo(S.weigh, 1, S.weigh.apatite, 2),
        Node([Link('weigh',
                   Node([Field('clacks'),
                         Field('panicle'),
                         Link('apatite',
                              Node([Field('oloroso'),
                                    Field('gashes')]))]))]),
    )
예제 #9
0
def test_complex_field_args():
    check_read(
        '{ saale(lammie: "nursy") { slighty } }',
        Node([
            Link('saale',
                 Node([Field('slighty')]),
                 options={'lammie': 'nursy'})
        ]),
    )
예제 #10
0
def test():
    query = build([
        Q.tyan,
        Q.turlock[Q.gange],
        Q.tiber(ramsons='defaces')[Q.decifer(botches='auxerre'),
                                   Q.exocet(brogues='hygiea'), ],
    ])
    with reqs_eq_patcher():
        assert query == Node([
            Field('tyan'),
            Link('turlock', Node([Field('gange')])),
            Link(
                'tiber',
                Node([
                    Field('decifer', options={'botches': 'auxerre'}),
                    Field('exocet', options={'brogues': 'hygiea'}),
                ]), {'ramsons': 'defaces'}),
        ])
예제 #11
0
파일: test_refs.py 프로젝트: anxolerd/hiku
def test_query_optional_arg():

    @define(Optional[Record[{'clacks': Any}]])
    def foo(arg):
        pass

    check_query(
        foo(S.civics),
        Node([Link('civics', Node([Field('clacks')]))]),
    )
예제 #12
0
def test_link_alias():
    check_read(
        '{ a: b { c d } }',
        Node([
            Link('b', Node([
                Field('c'),
                Field('d'),
            ]), alias='a'),
        ]),
    )
예제 #13
0
파일: test_refs.py 프로젝트: anxolerd/hiku
def test_query_tuple_with_node():

    @define(Record[{'clacks': Any, 'panicle': Any}])
    def foo():
        pass

    @define(Record[{'oloroso': Any, 'gashes': Any}])
    def bar():
        pass

    sais_part = Node([Field('oloroso'), Field('gashes')])

    # 1
    check_query(
        foo(S.weigh),
        Node([Link('weigh', Node([Field('clacks'), Field('panicle')]))]),
    )
    # M
    check_query(
        each(S.x, S.comped, foo(S.x)),
        Node([Link('comped', Node([Field('clacks'), Field('panicle')]))]),
    )
    # 1:1
    check_query(
        bar(S.weigh.apatite),
        Node([Link('weigh', Node([Link('apatite', Node([Field('oloroso'),
                                                        Field('gashes')]))]))]),
    )
    # 1:M
    check_query(
        each(S.x, S.weigh.jakies, bar(S.x)),
        Node([Link('weigh', Node([Link('jakies', sais_part)]))]),
    )
    # M:1
    check_query(
        each(S.x, S.comped, bar(S.x.apatite)),
        Node([Link('comped', Node([Link('apatite', sais_part)]))]),
    )
    # M:M
    check_query(
        each(S.x, S.comped, each(S.y, S.x.jakies, bar(S.y))),
        Node([Link('comped', Node([Link('jakies', sais_part)]))]),
    )
예제 #14
0
def test_link_options():
    node = t.Node()
    link_item = node.items.add()
    link_item.link.name = 'dubiety'
    link_item.link.options['squat'] = 234
    link_item.link.options['liquid'] = 'ravages'
    field_item = link_item.link.node.items.add()
    field_item.field.name = 'gits'
    check_read(node, Node([Link('dubiety', Node([Field('gits')]),
                                {'squat': 234, 'liquid': 'ravages'})]))
예제 #15
0
파일: test_refs.py 프로젝트: anxolerd/hiku
def test_query_tuple_with_nested_many_node():

    @define(Record[{'panicle': Any,
                    'jakies': Record[{'oloroso': Any,
                                      'gashes': Any}]}])
    def foo():
        pass

    sais_part = Node([Field('oloroso'), Field('gashes')])

    check_query(
        foo(S.weigh),
        Node([Link('weigh', Node([Field('panicle'),
                                  Link('jakies', sais_part)]))]),
    )
    check_query(
        each(S.x, S.comped, foo(S.x)),
        Node([Link('comped', Node([Field('panicle'),
                                   Link('jakies', sais_part)]))]),
    )
예제 #16
0
def test():
    query = merge([
        Node([
            Field('a1'),
            Field('a1'),
            Field('a2'),
            Field('a2'),
            Link('b', Node([
                Field('b1'),
                Field('b2'),
            ]), options={'x': 1}),
        ]),
        Node([
            Field('a2'),
            Field('a2'),
            Field('a3'),
            Field('a3'),
            Link('b', Node([
                Field('b2'),
                Field('b3'),
            ]), options={'x': 1}),
        ]),
    ])
    expected = Node([
        Field('a1'),
        Field('a2'),
        Field('a3'),
        Link('b',
             Node([
                 Field('b1'),
                 Field('b2'),
                 Field('b3'),
             ]),
             options={'x': 1}),
    ])
    assert query == expected
예제 #17
0
def test_link_options():
    node = query_pb2.Node()
    link = node.items.add().link
    link.name = 'pommee'
    link.options['takest'] = 3456
    link.options['decoy'] = 'nyroca'

    field = link.node.items.add().field
    field.name = 'fugazi'

    query = Node([
        Link('pommee',
             Node([Field('fugazi')]),
             options={
                 'takest': 3456,
                 'decoy': 'nyroca'
             })
    ])

    assert export(query) == node
예제 #18
0
 def testTupleWithLinks(self):
     self.assertRequires(
         foo(S.x1, S.y1),
         Edge([Link('x1', Edge([Field('a'), Field('c')])),
               Link('y1', Edge([Field('d'), Field('f')]))]),
     )
     self.assertRequires(
         each(S.item, S.xs, foo(S.item, S.y1)),
         Edge([Link('xs', Edge([Field('a'), Field('c')])),
               Link('y1', Edge([Field('d'), Field('f')]))]),
     )
     self.assertRequires(
         each(S.item, S.ys, foo(S.x1, S.item)),
         Edge([Link('x1', Edge([Field('a'), Field('c')])),
               Link('ys', Edge([Field('d'), Field('f')]))]),
     )
     self.assertRequires(
         each(S.item, S.ys, foo(S.item.x1, S.item)),
         Edge([Link('ys', Edge([Field('d'), Field('f'),
                                Link('x1', Edge([Field('a'),
                                                 Field('c')]))]))]),
     )
예제 #19
0
 def testLinkField(self):
     self.assertRequires(
         S.x1.a,
         Edge([Link('x1', Edge([Field('a')]))]),
     )
예제 #20
0
파일: test_refs.py 프로젝트: anxolerd/hiku
def test_query_node_field():
    check_query(
        S.weigh.clacks,
        Node([Link('weigh', Node([Field('clacks')]))]),
    )
예제 #21
0
파일: test_refs.py 프로젝트: anxolerd/hiku
def test_query_root_node_link_field():
    check_query(
        S.malatya.teling.clacks,
        Node([Link('malatya',
                   Node([Link('teling', Node([Field('clacks')]))]))]),
    )
예제 #22
0
파일: test_refs.py 프로젝트: anxolerd/hiku
def test_query_each_node_field():
    check_query(
        each(S.item, S.comped, S.item.clacks),
        Node([Link('comped', Node([Field('clacks')]))]),
    )
예제 #23
0
파일: test_refs.py 프로젝트: anxolerd/hiku
def test_query_each_root_node_link_field():
    check_query(
        each(S.item, S.malatya.wandy, S.item.clacks),
        Node([Link('malatya', Node([Link('wandy', Node([Field('clacks')]))]))]),
    )
예제 #24
0
def test_complex_field():
    check_read(
        '{ saale { slighty } }',
        Node([Link('saale', Node([Field('slighty')]))]),
    )
예제 #25
0
파일: test_refs.py 프로젝트: anxolerd/hiku
def test_query_if_some():
    check_query(
        if_some([S.x, S.civics], S.x.clacks, 'false'),
        Node([Link('civics', Node([Field('clacks')]))]),
    )
예제 #26
0
 def testAddReq(self):
     self.assertReq(NamedRef(None, 'xs', Env.xs),
                    Edge([Link('xs', Edge([Field('a'), Field('c')]))]),
                    add_req=Edge([Field('a'), Field('c')]))
예제 #27
0
 def testEdgeLinkField(self):
     self.assertRequires(
         S.y.x1.b,
         Edge([Link('y', Edge([Link('x1', Edge([Field('b')]))]))]),
     )
예제 #28
0
 def testTupleWithEdges(self):
     self.assertRequires(
         foo(S.x, S.y),
         Edge([Link('x', Edge([Field('a'), Field('c')])),
               Link('y', Edge([Field('d'), Field('f')]))]),
     )
예제 #29
0
 def testEdgeEachLinkField(self):
     self.assertRequires(
         each(S.item, S.y.xs, S.item.b),
         Edge([Link('y', Edge([Link('xs', Edge([Field('b')]))]))]),
     )
예제 #30
0
 def testEachLinkField(self):
     self.assertRequires(
         each(S.item, S.xs, S.item.a),
         Edge([Link('xs', Edge([Field('a')]))]),
     )