import unittest from io import StringIO, BytesIO, RawIOBase from tempfile import NamedTemporaryFile from pyoxigraph import * EXAMPLE_TRIPLE = Triple( NamedNode("http://example.com/foo"), NamedNode("http://example.com/p"), Literal("1") ) class TestParse(unittest.TestCase): def test_parse_file(self) -> None: with NamedTemporaryFile() as fp: fp.write(b'

"1" .') fp.flush() self.assertEqual( list(parse(fp.name, "text/turtle", base_iri="http://example.com/")), [EXAMPLE_TRIPLE], ) def test_parse_not_existing_file(self) -> None: with self.assertRaises(IOError) as _: parse("/tmp/not-existing-oxigraph-file.ttl", "text/turtle") def test_parse_str_io(self) -> None: self.assertEqual( list( parse( StringIO('

"1" .'), "text/turtle", base_iri="http://example.com/", ) ), [EXAMPLE_TRIPLE], ) def test_parse_bytes_io(self) -> None: self.assertEqual( list( parse( BytesIO(b'

"1" .'), "text/turtle", base_iri="http://example.com/", ) ), [EXAMPLE_TRIPLE], ) def test_parse_io_error(self) -> None: class BadIO(RawIOBase): pass with self.assertRaises(NotImplementedError) as _: list(parse(BadIO(), mime_type="application/n-triples")) class TestSerialize(unittest.TestCase): def test_serialize_to_bytes_io(self) -> None: output = BytesIO() serialize([EXAMPLE_TRIPLE], output, "text/turtle") self.assertEqual( output.getvalue(), b' "1" .\n', ) def test_serialize_to_file(self) -> None: with NamedTemporaryFile() as fp: serialize([EXAMPLE_TRIPLE], fp.name, "text/turtle") self.assertEqual( fp.read(), b' "1" .\n' )