diff options
author | Matthias Baumgartner <dev@igsor.net> | 2022-11-25 14:31:29 +0100 |
---|---|---|
committer | Matthias Baumgartner <dev@igsor.net> | 2022-11-25 14:31:29 +0100 |
commit | e174a25585e64eb1b0759440cad48d642dd31829 (patch) | |
tree | fadee735ef922156ba4a67506154c26fab2ecdd5 /test/extractor/generic/test_path.py | |
parent | 9389c741bdbbca9adbff6099d440706cd63deac4 (diff) | |
download | bsie-e174a25585e64eb1b0759440cad48d642dd31829.tar.gz bsie-e174a25585e64eb1b0759440cad48d642dd31829.tar.bz2 bsie-e174a25585e64eb1b0759440cad48d642dd31829.zip |
use schema and predicate types in extractors
Diffstat (limited to 'test/extractor/generic/test_path.py')
-rw-r--r-- | test/extractor/generic/test_path.py | 53 |
1 files changed, 42 insertions, 11 deletions
diff --git a/test/extractor/generic/test_path.py b/test/extractor/generic/test_path.py index 8623490..9376c7c 100644 --- a/test/extractor/generic/test_path.py +++ b/test/extractor/generic/test_path.py @@ -8,7 +8,9 @@ Author: Matthias Baumgartner, 2022 import unittest # bsie imports +from bsie import base from bsie.utils import ns +from bsie.utils.bsfs import schema from bsie.utils.node import Node # objects to test @@ -18,23 +20,52 @@ from bsie.extractor.generic.path import Path ## code ## class TestPath(unittest.TestCase): + def test_eq(self): + # distinct instances, same data + self.assertEqual(Path(), Path()) + # different classes + class Foo(): pass + self.assertNotEqual(Path(), Foo()) + self.assertNotEqual(Path(), 123) + self.assertNotEqual(Path(), None) + + def test_schema(self): + self.assertEqual(Path().schema, + schema.Schema.from_string(base.extractor.SCHEMA_PREAMBLE + ''' + bse:filename rdfs:subClassOf bsfs:Predicate ; + rdfs:domain bsfs:Entity ; + rdfs:range xsd:string ; + owl:maxCardinality "INF"^^xsd:number . + ''')) + def test_extract(self): - node = Node(ns.bsfs.Entity, '') # Blank node ext = Path() + node = Node(ns.bsfs.Entity, '') # Blank node + content = '/tmp/foo/bar' + p_filename = ext.schema.predicate(ns.bse.filename) + entity = ext.schema.node(ns.bsfs.Node).get_child(ns.bsfs.Entity) + string = ext.schema.literal(ns.bsfs.Literal).get_child(ns.xsd.string) # baseline - self.assertSetEqual(set(ext.extract(node, '/tmp/foo/bar', (ns.bse.filename, ))), - {(node, ns.bse.filename, 'bar')}) + self.assertSetEqual(set(ext.extract(node, content, (p_filename, ))), + {(node, p_filename, 'bar')}) # predicates parameter is respected - self.assertSetEqual(set(ext.extract(node, '/tmp/foo/bar', (ns.bse.filename, ns.bse.foo))), - {(node, ns.bse.filename, 'bar')}) - self.assertSetEqual(set(ext.extract(node, '/tmp/foo/bar', (ns.bse.foo, ))), set()) + p_foo = ext.schema.predicate(ns.bsfs.Predicate).get_child(ns.bse.foo, domain=entity, range=string) # unsupported predicate + self.assertSetEqual(set(ext.extract(node, content, (p_filename, p_foo))), + {(node, p_filename, 'bar')}) + self.assertSetEqual(set(ext.extract(node, content, (p_foo, ))), set()) + # predicates are validated + p_bar = p_foo.get_child(ns.bse.filename) # same URI but different hierarchy + self.assertSetEqual(set(ext.extract(node, content, (p_filename, p_bar))), + {(node, p_filename, 'bar')}) + self.assertSetEqual(set(ext.extract(node, content, (p_bar, ))), set()) # path variations - self.assertSetEqual(set(ext.extract(node, 'bar', (ns.bse.filename, ))), - {(node, ns.bse.filename, 'bar')}) - self.assertSetEqual(set(ext.extract(node, '', (ns.bse.filename, ))), - {(node, ns.bse.filename, '')}) - self.assertSetEqual(set(ext.extract(node, None, (ns.bse.filename, ))), set()) + self.assertSetEqual(set(ext.extract(node, 'bar', (p_filename, ))), + {(node, p_filename, 'bar')}) + self.assertSetEqual(set(ext.extract(node, '', (p_filename, ))), + {(node, p_filename, '')}) + # errors are suppressed + self.assertSetEqual(set(ext.extract(node, None, (p_filename, ))), set()) ## main ## |