aboutsummaryrefslogtreecommitdiffstats
path: root/test/extractor/generic/test_stat.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/extractor/generic/test_stat.py')
-rw-r--r--test/extractor/generic/test_stat.py48
1 files changed, 40 insertions, 8 deletions
diff --git a/test/extractor/generic/test_stat.py b/test/extractor/generic/test_stat.py
index f89b053..26dad6a 100644
--- a/test/extractor/generic/test_stat.py
+++ b/test/extractor/generic/test_stat.py
@@ -9,7 +9,9 @@ import os
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,21 +20,51 @@ from bsie.extractor.generic.stat import Stat
## code ##
-class TestConstant(unittest.TestCase):
+class TestStat(unittest.TestCase):
+ def test_eq(self):
+ # distinct instances, same data
+ self.assertEqual(Stat(), Stat())
+ # different classes
+ class Foo(): pass
+ self.assertNotEqual(Stat(), Foo())
+ self.assertNotEqual(Stat(), 123)
+ self.assertNotEqual(Stat(), None)
+
+ def test_schema(self):
+ self.assertEqual(Stat().schema,
+ schema.Schema.from_string(base.extractor.SCHEMA_PREAMBLE + '''
+ bse:filesize rdfs:subClassOf bsfs:Predicate ;
+ rdfs:domain bsfs:Entity ;
+ rdfs:range xsd:integer ;
+ owl:maxCardinality "INF"^^xsd:number .
+ '''))
+
def test_extract(self):
+ ext = Stat()
node = Node(ns.bsfs.Entity, '') # Blank node
content = os.stat(__file__)
- ext = Stat()
+ p_filesize = ext.schema.predicate(ns.bse.filesize)
+ 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, content, (ns.bse.filesize, ))),
- {(node, ns.bse.filesize, content.st_size)})
+ self.assertSetEqual(set(ext.extract(node, content, (p_filesize, ))),
+ {(node, p_filesize, content.st_size)})
# predicates parameter is respected
- self.assertSetEqual(set(ext.extract(node, content, (ns.bse.filesize, ns.bse.foo))),
- {(node, ns.bse.filesize, content.st_size)})
- self.assertSetEqual(set(ext.extract(node, content, (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_filesize, p_foo))),
+ {(node, p_filesize, content.st_size)})
+ self.assertSetEqual(set(ext.extract(node, content, (p_foo, ))), set())
+ # predicates are validated
+ p_bar = p_foo.get_child(ns.bse.filesizse) # same URI but different hierarchy
+ self.assertSetEqual(set(ext.extract(node, content, (p_filesize, p_bar))),
+ {(node, p_filesize, content.st_size)})
+ self.assertSetEqual(set(ext.extract(node, content, (p_bar, ))), set())
# content variations
- self.assertSetEqual(set(ext.extract(node, None, (ns.bse.filesize, ))), set())
+ self.assertSetEqual(set(ext.extract(node, os.stat_result([12345] * len(content)), (p_filesize, p_bar))),
+ {(node, p_filesize, 12345)})
+ # errors are suppressed
+ self.assertSetEqual(set(ext.extract(node, None, (p_filesize, ))), set())
## main ##