Skip to content

Commit 762a892

Browse files
committed
Add tests for queryable interface
1 parent 2b8f571 commit 762a892

File tree

2 files changed

+86
-2
lines changed

2 files changed

+86
-2
lines changed

rdf-js-query-tests.ts

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
/* eslint-disable no-case-declarations */
2+
import {
3+
DataFactory,
4+
BindingsFactory,
5+
Bindings,
6+
Term,
7+
Queryable,
8+
SparqlResultSupport,
9+
MetadataOpts,
10+
QueryStringContext,
11+
QueryAlgebraContext,
12+
AllMetadataSupport, Query, Variable, ResultStream, Quad, SparqlQueryable, BindingsResultSupport, QuadsResultSupport
13+
} from ".";
14+
15+
function test_bindings() {
16+
const df: DataFactory = <any> {};
17+
const bf: BindingsFactory = <any> {};
18+
19+
const b1: Bindings = bf.bindings([
20+
[ df.variable!('varA'), df.namedNode('ex:a'), ],
21+
[ df.variable!('varB'), df.literal('B'), ],
22+
]);
23+
24+
const valueA: Term | undefined = b1.get('varA');
25+
const valueB: Term | undefined = b1.get(df.variable!('varB'));
26+
27+
const b2: Bindings = b1
28+
.set('varA', df.namedNode('ex:2'))
29+
.delete('varB')
30+
.set(df.variable!('varB'), df.literal('B2'));
31+
32+
for (const [ key, value ] of b2) {
33+
const keytype: 'Variable' = key.termType;
34+
const valuetype: string = value.termType;
35+
}
36+
for (const key of b2.keys()) {
37+
const type: 'Variable' = key.termType;
38+
}
39+
}
40+
41+
async function test_queryable() {
42+
const engine: Queryable<string, string, AllMetadataSupport, Query<SparqlResultSupport>, QueryStringContext<string>, QueryAlgebraContext<string>> = <any> {};
43+
44+
const query: Query<SparqlResultSupport> = await engine.query('SELECT * WHERE { ... }');
45+
switch (query.resultType) {
46+
case 'bindings':
47+
const metadata = await query.metadata();
48+
const variables: Variable[] = metadata.variables;
49+
const bindings: ResultStream<Bindings> = await query.execute();
50+
bindings.on('data', (bindings: Bindings) => console.log(bindings));
51+
break;
52+
case 'quads':
53+
const quads: ResultStream<Quad> = await query.execute();
54+
break;
55+
case 'boolean':
56+
const bool: boolean = await query.execute();
57+
break;
58+
case 'void':
59+
const done: void = await query.execute();
60+
break;
61+
}
62+
}
63+
64+
async function test_sparqlqueryable() {
65+
const engine: SparqlQueryable<string, string, QueryStringContext<string>, QueryAlgebraContext<string>, SparqlResultSupport> = <any> {};
66+
67+
const bindings: ResultStream<Bindings> = await engine.queryBindings('SELECT * WHERE { ... }');
68+
const quads: ResultStream<Quad> = await engine.queryQuads('CONSTRUCT WHERE { ... }');
69+
const bool: boolean = await engine.queryBoolean('ASK WHERE { ... }');
70+
const done: void = await engine.queryVoid('INSERT WHERE { ... }');
71+
}
72+
73+
async function test_sparqlqueryable_partial() {
74+
const engine: SparqlQueryable<string, string, QueryStringContext<string>, QueryAlgebraContext<string>, BindingsResultSupport & QuadsResultSupport> = <any> {};
75+
76+
const bindings: ResultStream<Bindings> = await engine.queryBindings('SELECT * WHERE { ... }');
77+
const quads: ResultStream<Quad> = await engine.queryQuads('CONSTRUCT WHERE { ... }');
78+
// @ts-ignore
79+
const bool: boolean = await engine.queryBoolean('ASK WHERE { ... }'); // Unsupported
80+
// @ts-ignore
81+
const done: void = await engine.queryVoid('INSERT WHERE { ... }'); // Unsupported
82+
}

tsconfig.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@
1111
"strictNullChecks": true,
1212
"strictFunctionTypes": true,
1313
"noEmit": true,
14-
"forceConsistentCasingInFileNames": true
14+
"forceConsistentCasingInFileNames": true,
15+
"downlevelIteration": true
1516
},
1617
"files": [
1718
"index.d.ts",
18-
"rdf-js-tests.ts"
19+
"rdf-js-tests.ts",
20+
"rdf-js-query-tests.ts"
1921
]
2022
}

0 commit comments

Comments
 (0)