""" Part of the bsie test suite. A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ # imports import unittest # bsie imports from bsie.utils import bsfs, ns # objects to test from bsie.base import extractor ## code ## class StubExtractor(extractor.Extractor): def __init__(self): super().__init__(bsfs.schema.Schema.from_string(extractor.SCHEMA_PREAMBLE + ''' bse:author rdfs:subClassOf bsfs:Predicate ; rdfs:domain bsfs:Entity ; rdfs:range xsd:string ; bsfs:unique "false"^^xsd:boolean . bse:comment rdfs:subClassOf bsfs:Predicate ; rdfs:domain bsfs:Entity ; rdfs:range xsd:string ; bsfs:unique "false"^^xsd:boolean . ''')) def extract(self, subject, content, predicates): raise NotImplementedError() class StubSub(StubExtractor): pass class TestExtractor(unittest.TestCase): def test_essentials(self): ext = StubExtractor() self.assertEqual(str(ext), 'StubExtractor') self.assertEqual(repr(ext), 'StubExtractor()') self.assertEqual(ext, StubExtractor()) self.assertEqual(hash(ext), hash(StubExtractor())) sub = StubSub() self.assertEqual(str(sub), 'StubSub') self.assertEqual(repr(sub), 'StubSub()') self.assertEqual(sub, StubSub()) self.assertEqual(hash(sub), hash(StubSub())) self.assertNotEqual(ext, sub) self.assertNotEqual(hash(ext), hash(sub)) def test_principals(self): schema = bsfs.schema.Schema.Empty() entity = schema.node(ns.bsfs.Node).get_child(ns.bsfs.Entity) string = schema.literal(ns.bsfs.Literal).get_child(bsfs.URI('http://www.w3.org/2001/XMLSchema#string')) p_author = schema.predicate(ns.bsfs.Predicate).get_child(ns.bse.author, domain=entity, range=string) p_comment = schema.predicate(ns.bsfs.Predicate).get_child(ns.bse.comment, domain=entity, range=string) ext = StubExtractor() self.assertSetEqual(set(ext.principals), {p_author, p_comment} | set(schema.predicates()) - {schema.predicate(ns.bsfs.Predicate)}) ## main ## if __name__ == '__main__': unittest.main() ## EOF ##