view service/mqtt_to_rdf/lhs_evaluation_test.py @ 1664:1a7c1261302c

logic fix- some bindings were being returned 2+; some 0 times
author drewp@bigasterisk.com
date Mon, 20 Sep 2021 23:19:08 -0700
parents 449746d1598f
children 4fd9fdfcf16a
line wrap: on
line source

import unittest

from rdflib import RDF, ConjunctiveGraph, Literal, Namespace
from rdflib.parser import StringInputSource

from lhs_evaluation import _parseList

EX = Namespace('http://example.com/')


def N3(txt: str):
    g = ConjunctiveGraph()
    prefix = """
@prefix : <http://example.com/> .
"""
    g.parse(StringInputSource((prefix + txt).encode('utf8')), format='n3')
    return g


class TestParseList(unittest.TestCase):

    def test0Elements(self):
        g = N3(":a :b () .")
        bn = g.value(EX['a'], EX['b'])
        elems, used = _parseList(g, bn)
        self.assertEqual(elems, [])
        self.assertFalse(used)

    def test1Element(self):
        g = N3(":a :b (0) .")
        bn = g.value(EX['a'], EX['b'])
        elems, used = _parseList(g, bn)
        self.assertEqual(elems, [Literal(0)])
        used = sorted(used)
        self.assertEqual(used, [
            (bn, RDF.first, Literal(0)),
            (bn, RDF.rest, RDF.nil),
        ])