summaryrefslogtreecommitdiff
path: root/test/test_parsers/test_nt_w3c.py
blob: 3f689450699e34132cdf82176f516b69500a1bf0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
"""This runs the nt tests for the W3C RDF Working Group's N-Quads
test suite."""
import os
from typing import Callable, Dict

from rdflib import Graph
from rdflib.term import Node, URIRef
from test import TEST_DIR
from test.manifest import RDFT, RDFTest, read_manifest

import pytest

verbose = False


def nt(test):
    g = Graph()

    try:
        g.parse(test.action, format="nt")
        if not test.syntax:
            raise AssertionError("Input shouldn't have parsed!")
    except:
        if test.syntax:
            raise


testers: Dict[Node, Callable[[RDFTest], None]] = {
    RDFT.TestNTriplesPositiveSyntax: nt,
    RDFT.TestNTriplesNegativeSyntax: nt,
}


@pytest.mark.parametrize(
    "rdf_test_uri, type, rdf_test",
    read_manifest(os.path.join(TEST_DIR, "w3c/nt/manifest.ttl"), legacy=True),
)
def test_manifest(rdf_test_uri: URIRef, type: Node, rdf_test: RDFTest):
    testers[type](rdf_test)