#!/usr/bin/env python3 # Copyright 2021-2023 David Robillard <d@drobilla.net> # SPDX-License-Identifier: ISC """Test filtering statements inclusively and exclusively.""" import serd_test_util as util DOCS = { "ntriples": """ <http://example.org/s> <http://example.org/p> <http://example.org/o> . <http://example.org/N> <http://example.org/I> <http://example.org/L> . """, "nquads": """ <urn:example:s> <urn:example:p> <urn:example:o> <urn:example:g> . <urn:example:N> <urn:example:U> <urn:example:L> <urn:example:L> . """, } args = util.wrapper_args(__doc__) def check_pattern(syntax, pattern, expected_inclusive, expected_exclusive): """Run a check with an exclusive pattern.""" command = [args.tool, "-I", syntax, pattern] inclusive = util.command_output(args.wrapper, command, DOCS[syntax]) assert inclusive == expected_inclusive command = [args.tool, "-I", syntax, "-v", pattern] exclusive = util.command_output(args.wrapper, command, DOCS[syntax]) assert exclusive == expected_exclusive check_pattern( "ntriples", "?s <http://example.org/p> <http://example.org/o> .", "<http://example.org/s> <http://example.org/p> <http://example.org/o> .\n", "<http://example.org/N> <http://example.org/I> <http://example.org/L> .\n", ) check_pattern( "ntriples", "<http://example.org/s> ?p <http://example.org/o> .", "<http://example.org/s> <http://example.org/p> <http://example.org/o> .\n", "<http://example.org/N> <http://example.org/I> <http://example.org/L> .\n", ) check_pattern( "ntriples", "<http://example.org/s> <http://example.org/p> ?o .", "<http://example.org/s> <http://example.org/p> <http://example.org/o> .\n", "<http://example.org/N> <http://example.org/I> <http://example.org/L> .\n", ) check_pattern( "nquads", "?s <urn:example:p> <urn:example:o> <urn:example:g> .", "<urn:example:s> <urn:example:p> <urn:example:o> <urn:example:g> .\n", "<urn:example:N> <urn:example:U> <urn:example:L> <urn:example:L> .\n", ) check_pattern( "nquads", "<urn:example:s> ?p <urn:example:o> <urn:example:g> .", "<urn:example:s> <urn:example:p> <urn:example:o> <urn:example:g> .\n", "<urn:example:N> <urn:example:U> <urn:example:L> <urn:example:L> .\n", ) check_pattern( "nquads", "<urn:example:s> <urn:example:p> ?o <urn:example:g> .", "<urn:example:s> <urn:example:p> <urn:example:o> <urn:example:g> .\n", "<urn:example:N> <urn:example:U> <urn:example:L> <urn:example:L> .\n", ) check_pattern( "nquads", "<urn:example:s> <urn:example:p> <urn:example:o> ?g .", "<urn:example:s> <urn:example:p> <urn:example:o> <urn:example:g> .\n", "<urn:example:N> <urn:example:U> <urn:example:L> <urn:example:L> .\n", )