Fork of https://github.com/oxigraph/oxigraph.git for the purpose of NextGraph project
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
oxigraph/js/test/store.js

98 lines
3.7 KiB

const { MemoryStore } = require('../pkg/oxigraph.js');
const assert = require('assert');
const dataFactory = require('@rdfjs/data-model');
const ex = dataFactory.namedNode('http://example.com');
describe('MemoryStore', function() {
describe('#add()', function() {
it('an added quad should be in the store', function() {
const store = new MemoryStore();
store.add(dataFactory.triple(ex, ex, ex));
assert(store.has(dataFactory.triple(ex, ex, ex)));
});
});
describe('#delete()', function() {
it('an removed quad should not be in the store anymore', function() {
const store = new MemoryStore([dataFactory.triple(ex, ex, ex)]);
assert(store.has(dataFactory.triple(ex, ex, ex)));
store.delete(dataFactory.triple(ex, ex, ex))
assert(!store.has(dataFactory.triple(ex, ex, ex)));
});
});
describe('#has()', function() {
it('an added quad should be in the store', function() {
const store = new MemoryStore([dataFactory.triple(ex, ex, ex)]);
assert(store.has(dataFactory.triple(ex, ex, ex)));
});
});
describe('#match_quads()', function() {
it('blank pattern should return all quads', function() {
const store = new MemoryStore([dataFactory.triple(ex, ex, ex)]);
const results = store.match();
assert.equal(1, results.length);
assert(dataFactory.triple(ex, ex, ex).equals(results[0]));
});
});
describe('#query()', function() {
it('ASK true', function() {
const store = new MemoryStore([dataFactory.triple(ex, ex, ex)]);
assert.equal(true, store.query("ASK { ?s ?s ?s }"));
});
it('ASK false', function() {
const store = new MemoryStore();
assert.equal(false, store.query("ASK { FILTER(false)}"));
});
it('CONSTRUCT', function() {
const store = new MemoryStore([dataFactory.triple(ex, ex, ex)]);
const results = store.query("CONSTRUCT { ?s ?p ?o } WHERE { ?s ?p ?o }");
assert.equal(1, results.length);
assert(dataFactory.triple(ex, ex, ex).equals(results[0]));
});
it('SELECT', function() {
const store = new MemoryStore([dataFactory.triple(ex, ex, ex)]);
const results = store.query("SELECT ?s WHERE { ?s ?p ?o }");
assert.equal(1, results.length);
assert(ex.equals(results[0].get("s")));
});
});
describe('#load()', function() {
it('load NTriples in the default graph', function() {
const store = new MemoryStore();
store.load("<http://example.com> <http://example.com> <http://example.com> .", "application/n-triples");
assert(store.has(dataFactory.triple(ex, ex, ex)));
});
it('load NTriples in an other graph', function() {
const store = new MemoryStore();
store.load("<http://example.com> <http://example.com> <http://example.com> .", "application/n-triples", null, ex);
assert(store.has(dataFactory.quad(ex, ex, ex, ex)));
});
it('load Turtle with a base IRI', function() {
const store = new MemoryStore();
store.load("<http://example.com> <http://example.com> <> .", "text/turtle", "http://example.com");
assert(store.has(dataFactory.triple(ex, ex, ex)));
});
it('load NQuads', function() {
const store = new MemoryStore();
store.load("<http://example.com> <http://example.com> <http://example.com> <http://example.com> .", "application/n-quads");
assert(store.has(dataFactory.quad(ex, ex, ex, ex)));
});
it('load TriG with a base IRI', function() {
const store = new MemoryStore();
store.load("GRAPH <> { <http://example.com> <http://example.com> <> }", "application/trig", "http://example.com");
assert(store.has(dataFactory.quad(ex, ex, ex, ex)));
});
});
});