# standard imports import unittest # bsie imports from bsie.utils import bsfs, ns # objects to test from bsie.extractor import base ## code ## class StubExtractor(base.Extractor): def __init__(self): super().__init__(bsfs.schema.from_string(base.SCHEMA_PREAMBLE + ''' bse:author rdfs:subClassOf bsfs:Predicate ; rdfs:domain bsn:Entity ; rdfs:range xsd:string ; bsfs:unique "false"^^xsd:boolean . bse:comment rdfs:subClassOf bsfs:Predicate ; rdfs:domain bsn: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() entity = schema.node(ns.bsfs.Node).child(ns.bsn.Entity) string = schema.literal(ns.bsfs.Literal).child(ns.xsd.string) p_author = schema.predicate(ns.bsfs.Predicate).child(ns.bse.author, domain=entity, range=string) p_comment = schema.predicate(ns.bsfs.Predicate).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 ##