Beispiel #1
0
    def test_assignment_uri_double(self):
        name = Identifier(Uri('http://variable/#v'))
        value = Value(1.2345)

        self.assertEqual(Assignment(name, value).evaluate(
            self.env), value.evaluate(self.env))
        self.assertEqual(name.evaluate(self.env), value.evaluate(self.env))
 def test_expansion_in_property_with_args(self):
     script = 'A()(x = e is a B(12345))'
     forms = self.parser.parse(script)
     e = self.parser.parse('e is a B(12345)')[0]
     expected_template = Template(Identifier(Name('A')), [],
                                  [Property(Identifier(Name('x')), e)])
     self.assertEqual(expected_template, forms[0])
Beispiel #3
0
 def test_as_triples_simple_triple_with_self(self):
     '''
     Tests if triples list is not empty when parser call with self.
     '''
     template = self.parser.parse('t()(x = self)')[0]
     expect = [(Identifier(Self()), Identifier(Name('x')), Identifier(Self()))]
     self.assertCountEqual(template.as_triples(self.env), expect)
 def test_assignment_name_name(self):
     script = 'Name = Name'
     expected = [
         Assignment(Identifier(Name('Name')), Identifier(Name('Name')))
     ]
     actually = self.parser.parse(script)
     self.assertEqual(expected, actually)
 def test_expansion_one_arg_with_body(self):
     forms = self.parser.parse('e is a a(12345)(x=true)')
     expect = Expansion(Identifier(Name('e')),
                        Identifier(Name('a')),
                        [Value(12345)],
                        [Property(Identifier(Name('x')), Value(True))])
     self.assertEqual(expect, forms[0])
Beispiel #6
0
    def test_assignment_name_string(self):
        name = Identifier(Name('variable'))
        value = Value("string")

        self.assertEqual(Assignment(name, value).evaluate(
            self.env), value.evaluate(self.env))
        self.assertEqual(name.evaluate(self.env), value.evaluate(self.env))
Beispiel #7
0
    def test_assignment_name_boolean(self):
        name = Identifier(Name('variable'))
        value = Value(False)

        self.assertEqual(Assignment(name, value).evaluate(
            self.env), value.evaluate(self.env))
        self.assertEqual(name.evaluate(self.env), value.evaluate(self.env))
Beispiel #8
0
    def test_identifier_equal(self):
        i1 = Identifier(Name('n1'), Name('n2'), Name('n3'))
        i2 = Identifier(Name('n1'), Name('n2'), Name('n3'))
        self.assertEqual(i1, i2)

        i3 = Identifier(Name('n1'), Name('n2'))
        self.assertNotEqual(i1, i3)
Beispiel #9
0
    def test_assignment_name_double(self):
        name = Identifier(Name('variable'))
        value = Value(0.12345)

        self.assertEqual(Assignment(name, value).evaluate(
            self.env), value.evaluate(self.env))
        self.assertEqual(name.evaluate(self.env), value.evaluate(self.env))
 def test_expansion_one_arg_no_body(self):
     forms = self.parser.parse('e is a a(12345)')
     expect = Expansion(Identifier(Name('e')),
                        Identifier(Name('a')),
                        [Value(12345)],
                        [])
     self.assertEqual(expect, forms[0])
 def test_expansion_no_args_no_body(self):
     forms = self.parser.parse('e is a a()')
     expect = Expansion(Identifier(Name('e')),
                        Identifier(Name('a')),
                        [],
                        [])
     self.assertEqual(expect, forms[0])
    def test_empty_template_noargs(self):
        script = 'DNASequence()(Other())'
        forms = self.parser.parse(script)

        expected_template = Template(
            Identifier(Name('DNASequence')), [],
            [Expansion(None, Identifier(Name('Other')), [], [])])
        self.assertCountEqual(forms, [expected_template])
Beispiel #13
0
 def test_as_triples_multiple_properties(self):
     '''
     Tests if triples list is not empty when parser call with multiple properties.
     '''
     template = self.parser.parse('t()(x = y z = 12345)')[0]
     expect = [(Identifier(Self()), Identifier(Name('x')), Identifier(Name('y'))),
               (Identifier(Self()), Identifier(Name('z')), Value(12345))]
     self.assertCountEqual(template.as_triples(self.env), expect)
Beispiel #14
0
    def test_identifier_evaluate_bound_prefix(self):
        i = Identifier(Name('first'), Name('second'))
        prefix = Uri('http://first.org/#')
        self.env.assign(Identifier(Name('first')).evaluate(self.env), prefix)

        expected = Uri('http://first.org/#second')
        actually = i.evaluate(self.env)
        self.assertEqual(expected, actually)
Beispiel #15
0
    def test_identifier_evaluate_bound_prefix_not_uri(self):
        i = Identifier(Name('first'), Name('second'))
        value = Value(12345)

        self.env.assign(Identifier(Name('first')).evaluate(self.env), value)
        expected = Uri('prefixfirstsecond')
        actually = i.evaluate(self.env)
        self.assertEqual(expected, actually)
Beispiel #16
0
    def test_triples_get_triples_exact(self):
        self.assertEqual(
            self.pack.search((Identifier(Name('e')).evaluate(self.env),
                              Value(1), Value(42))),
            [(Identifier(Name('e')).evaluate(self.env), Value(1), Value(42))])

        self.assertEqual(
            self.pack.search((Value(1), Value(2, None), Value(3, None))), [])
 def test_template_onearg_nobase(self):
     script = 'DNASequence(x)(encoding = <SBOL:IUPACDNA>)'
     forms = self.parser.parse(script)
     expected_template = Template(Identifier(Name('DNASequence')), ['x'], [
         Property(Identifier(Name('encoding')),
                  Identifier(Uri('SBOL:IUPACDNA')))
     ])
     self.assertCountEqual(forms, [expected_template])
 def test_assignment_name_uri(self):
     script = 'Name = <http://uri.org/>'
     expected = [
         Assignment(Identifier(Name('Name')),
                    Identifier(Uri('http://uri.org/')))
     ]
     actually = self.parser.parse(script)
     self.assertEqual(expected, actually)
 def test_assignment_uri_uri(self):
     script = '<http://uri.org/> = <http://value.org>'
     expected = [
         Assignment(Identifier(Uri('http://uri.org/')),
                    Identifier(Uri('http://value.org')))
     ]
     actually = self.parser.parse(script)
     self.assertEqual(expected, actually)
 def test_expansion_multiple_properties(self):
     forms = self.parser.parse('e is a a()(x=true y=false)')
     expect = Expansion(Identifier(Name('e')),
                        Identifier(Name('a')),
                        [],
                        [Property(Identifier(Name('x')), Value(True)),
                         Property(Identifier(Name('y')), Value(False))])
     self.assertEqual(expect, forms[0])
 def test_expansion_expansion_as_arg(self):
     forms = self.parser.parse('e is a a(f is a b(12345))')
     f = self.parser.parse('f is a b(12345)')[0]
     expect = Expansion(Identifier(Name('e')),
                        Identifier(Name('a')),
                        [f],
                        [])
     self.assertEqual(expect, forms[0])
Beispiel #22
0
    def test_import_pragma_uri(self):
        script = "@use <import>"
        expected = [ImportPragma(Identifier(Uri('import')))]
        actually = self.parser.parse(script)
        self.assertEqual(expected, actually)

        script = "use <import>"
        expected = [ImportPragma(Identifier(Uri('import')))]
        actually = self.parser.parse(script)
        self.assertEqual(expected, actually)
Beispiel #23
0
    def test_triples_get_triples_by_object(self):
        self.assertEqual(
            self.pack.search((None, None, Value(42))),
            [(Identifier(Name('e')).evaluate(self.env), Value(1), Value(42))])

        self.assertEqual(self.pack.search(
            (None, None, Value(2))), [(Identifier(Name('e')).evaluate(
                self.env), Uri('http://example.eg/predicate'), Value(2))])

        self.assertEqual(self.pack.search((None, None, Value(3))), [])
Beispiel #24
0
 def test_triples_subject_has_property(self):
     self.assertTrue(
         self.pack.has(
             Identifier(Name('e')).evaluate(self.env), Value(1, None)))
     self.assertFalse(
         self.pack.has(
             Identifier(Name('e')).evaluate(self.env), Value(2, None)))
     self.assertFalse(
         self.pack.has(
             Identifier(Name('f')).evaluate(self.env), Value(1, None)))
Beispiel #25
0
    def test_identifier_evaluate_uri_and_symbol_parts(self):
        i = Identifier(Uri('first'), Name('second'))
        expected = Value(1)

        uri = Uri('firstsecond')
        self.assertEqual(i.evaluate(self.env), uri)

        self.env.assign(i.evaluate(self.env), expected)
        actually = i.evaluate(self.env)
        self.assertEqual(expected, actually)
    def test_assignment_name_boolean(self):
        script = 'Name = true'
        expected = [Assignment(Identifier(Name('Name')), Value(True))]
        actually = self.parser.parse(script)
        self.assertEqual(expected, actually)

        script = 'Name = false'
        expected = [Assignment(Identifier(Name('Name')), Value(False))]
        actually = self.parser.parse(script)
        self.assertEqual(expected, actually)
 def test_assignment_uri_expansion(self):
     script = '<expansion> = e is a t()'
     expected = [
         Assignment(
             Identifier(Uri('expansion')),
             Expansion(Identifier(Name('e')), Identifier(Name('t')), [],
                       []))
     ]
     actually = self.parser.parse(script)
     self.assertEqual(expected, actually)
Beispiel #28
0
    def test_evaluate_stores_triples_with_expansions(self):
        forms = self.parser.parse('a(x)(e=x)' +
                                  'b(y)(p=y)' +
                                  'c()(a(f is a b(1))' +
                                  '    q = g is a b(2)'  +
                                  '    h is a b(3))')

        a = forms[0]
        b = forms[1]
        c = forms[2]

        a.evaluate(self.env)
        b.evaluate(self.env)
        c.evaluate(self.env)

        me = Identifier(Self())
        env = self.env

        f = Identifier(Name('f')).evaluate(env)
        g = Identifier(Name('g')).evaluate(env)
        h = Identifier(Name('h')).evaluate(env)

        found = env.lookup_template(c.identifier.evaluate(env))
        expect = [(me, Identifier(Name('e')).evaluate(env), f),
                  (g, Identifier(Name('p')).evaluate(env), Value(2)),
                  (me, Identifier(Name('q')).evaluate(env), g),
                  (h, Identifier(Name('p')).evaluate(env), Value(3))]

        self.assertCountEqual(found, expect)

        expect = [(f, Identifier(Name('p')).evaluate(env), Value(1))]
        self.assertCountEqual(self.env._rdf.triples, expect)
Beispiel #29
0
    def test_as_triples_with_expansion_in_property_with_self_as_name(self):
        forms = self.parser.parse('a()(x = 1) b()(y = self.e is a a())')
        a = forms[0]
        b = forms[1]

        a.evaluate(self.env)

        expect = [(Identifier(Self(), Name('e')), Identifier(Name('x')).evaluate(self.env), Value(1)),
                  (Identifier(Self()), Identifier(Name('y')), Identifier(Self(), Name('e')))]

        self.assertCountEqual(expect, b.as_triples(self.env))
    def test_template_onearg_base(self):
        script = 'B(x)(x = 42)\nA(x)(B(x) encoding = <SBOL:IUPACDNA>)'
        forms = self.parser.parse(script)

        expected_template = Template(Identifier(Name('A')), ['x'], [
            Expansion(None, Identifier(Name('B')), [Identifier(Name('x'))],
                      []),
            Property(Identifier(Name('encoding')),
                     Identifier(Uri('SBOL:IUPACDNA')))
        ])
        self.assertCountEqual([forms[1]], [expected_template])