import 'jest-rdf'; import { DataFactory } from 'n3'; import type { Quad } from 'rdf-js'; import { parseQuads, pushQuad, serializeQuads } from '../../../src/util/QuadUtil'; import { guardedStreamFrom, readableToString } from '../../../src/util/StreamUtil'; describe('QuadUtil', (): void => { describe('#pushQuad', (): void => { it('creates a quad and adds it to the given array.', async(): Promise => { const quads: Quad[] = []; pushQuad(quads, DataFactory.namedNode('sub'), DataFactory.namedNode('pred'), DataFactory.literal('obj')); expect(quads).toEqualRdfQuadArray([ DataFactory.quad(DataFactory.namedNode('sub'), DataFactory.namedNode('pred'), DataFactory.literal('obj')), ]); }); }); describe('#serializeQuads', (): void => { it('converts quads to the requested format.', async(): Promise => { const quads = [ DataFactory.quad( DataFactory.namedNode('pre:sub'), DataFactory.namedNode('pre:pred'), DataFactory.literal('obj'), ) ]; const stream = serializeQuads(quads, 'application/n-triples'); await expect(readableToString(stream)).resolves.toMatch(' "obj" .'); }); }); describe('#parseQuads', (): void => { it('parses quads from the requested format.', async(): Promise => { const stream = guardedStreamFrom([ ' "obj".' ]); await expect(parseQuads(stream, 'application/n-triples')).resolves.toEqualRdfQuadArray([ DataFactory.quad( DataFactory.namedNode('pre:sub'), DataFactory.namedNode('pre:pred'), DataFactory.literal('obj'), ) ]); }); }); });