aboutsummaryrefslogtreecommitdiffstats
path: root/test/matcher/test_matcher.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/matcher/test_matcher.py')
-rw-r--r--test/matcher/test_matcher.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/test/matcher/test_matcher.py b/test/matcher/test_matcher.py
new file mode 100644
index 0000000..eaa4766
--- /dev/null
+++ b/test/matcher/test_matcher.py
@@ -0,0 +1,62 @@
+
+# standard imports
+import unittest
+
+# bsie imports
+from bsie.matcher import nodes
+from bsie.utils import ns, errors
+from bsie.utils.bsfs import URI
+
+# objects to test
+from bsie.matcher.matcher import Matcher, MatcherIterator
+
+
+## code ##
+
+class StubMatcher(Matcher):
+ def match_node(self, node):
+ if node.uri is None:
+ node.uri = 'foo'
+ return node
+
+class TestMatcherIterator(unittest.TestCase):
+
+ def test_call(self):
+ # setup
+ matcher = StubMatcher()
+ # call accepts list
+ triples = [('node', 'pred', 'value'), ('node', 'pred', 'value')]
+ it = matcher(triples)
+ self.assertIsInstance(it, MatcherIterator)
+ self.assertEqual(it._iterable, triples)
+ self.assertEqual(it._matcher, matcher)
+ # call accepts iterator
+ triples = iter([('node', 'pred', 'value'), ('node', 'pred', 'value')])
+ it = matcher(triples)
+ self.assertIsInstance(it, MatcherIterator)
+ self.assertEqual(it._iterable, triples)
+ self.assertEqual(it._matcher, matcher)
+
+ def test_iter(self):
+ # setup
+ matcher = StubMatcher()
+ triples = [
+ (nodes.Entity(ucid='foo'), 'predA', 'hello'),
+ (nodes.Preview(ucid='bar', size=123), 'predB', 1234),
+ (nodes.Preview(ucid='hello', size=321), 'predC', nodes.Entity(ucid='world'))
+ ]
+ # handles nodes, handles values, ignores predicate
+ self.assertListEqual(list(matcher(triples)), [
+ (nodes.Entity(uri='foo', ucid='foo'), 'predA', 'hello'),
+ (nodes.Preview(uri='foo', ucid='bar', size=123), 'predB', 1234),
+ (nodes.Preview(uri='foo', ucid='hello', size=321), 'predC',
+ nodes.Entity(uri='foo', ucid='world')),
+ ])
+
+
+## main ##
+
+if __name__ == '__main__':
+ unittest.main()
+
+## EOF ##