mirror of
https://github.com/FlipsideCrypto/DefinitelyTyped.git
synced 2026-02-06 10:56:53 +00:00
382 lines
16 KiB
TypeScript
382 lines
16 KiB
TypeScript
import { Term, NamedNode, Dataset, Literal, DatasetCore, BlankNode, Quad_Graph } from 'rdf-js';
|
|
import Clownface = require('clownface/lib/Clownface');
|
|
import clownface = require('clownface');
|
|
import Context = require('clownface/lib/Context');
|
|
|
|
const node: NamedNode = <any> {};
|
|
const blankNode: BlankNode = <any> {};
|
|
const predicate: NamedNode = <any> {};
|
|
const literal: Literal = <any> {};
|
|
const term: Term = <any> {};
|
|
|
|
const dataset: Dataset = <any> {};
|
|
const graph: NamedNode = <any> {};
|
|
|
|
function testCasting() {
|
|
const singleNode: clownface.AnyPointer<NamedNode> = <any> {};
|
|
const safeContext: clownface.MultiPointer<NamedNode> = singleNode;
|
|
let noContext: clownface.AnyPointer = singleNode;
|
|
noContext = safeContext;
|
|
}
|
|
|
|
function withoutContext() {
|
|
const cf: clownface.AnyPointer<undefined, Dataset> = <any> {};
|
|
const term: undefined = cf.term;
|
|
const terms: Term[] = cf.terms;
|
|
const value: undefined = cf.value;
|
|
const values: string[] = cf.values;
|
|
const _context: Array<Context<DatasetCore, Term>> = cf._context;
|
|
}
|
|
|
|
function multiContext() {
|
|
const cf: clownface.AnyPointer<Array<NamedNode | BlankNode>, Dataset> = <any> {};
|
|
if (cf.term) {
|
|
const definedTerm: NamedNode | BlankNode = cf.term;
|
|
} else {
|
|
const undefinedTerm: undefined = cf.term;
|
|
}
|
|
const terms: Array<NamedNode | BlankNode> = cf.terms;
|
|
if (cf.value) {
|
|
const definedValue: string = cf.value;
|
|
} else {
|
|
const undefinedValue = cf.value;
|
|
}
|
|
const values: string[] = cf.values;
|
|
const _context: Array<Context<DatasetCore, Term>> = cf._context;
|
|
}
|
|
|
|
function singleContext() {
|
|
const cf: clownface.AnyPointer<Literal, Dataset> = <any> {};
|
|
const term: Literal = cf.term;
|
|
const terms: [Literal] = cf.terms;
|
|
const value: string = cf.value;
|
|
const values: [string] = cf.values;
|
|
const _context: Array<Context<DatasetCore, Term>> = cf._context;
|
|
|
|
const asMultiContext: clownface.AnyPointer<Literal[] | Literal, Dataset> = cf;
|
|
}
|
|
|
|
function testConstructor() {
|
|
const typedByTerm: Clownface<NamedNode, Dataset> = new Clownface({ dataset, term: node });
|
|
const typedByTerms: Clownface<Array<NamedNode | BlankNode>, Dataset> = new Clownface({ dataset, term: [node, blankNode] });
|
|
|
|
let contructedWithValueHasTermContext: Clownface<Term, Dataset> = new Clownface({ dataset, value: 'foo' });
|
|
contructedWithValueHasTermContext = new Clownface({ dataset, value: ['foo', 'bar'] });
|
|
const anyTerms: clownface.MultiPointer = new Clownface({ dataset, term: [term, term], value: ['foo', 'bar'] });
|
|
|
|
const constructedWithSingleTerm: clownface.GraphPointer<NamedNode> = new Clownface({ dataset, term: node });
|
|
}
|
|
|
|
function testAddIn() {
|
|
let cf: clownface.AnyPointer<BlankNode> = <any> {};
|
|
cf = cf.addIn(node);
|
|
cf = cf.addIn(node);
|
|
cf = cf.addIn([ node, node ], node);
|
|
cf = cf.addIn(node, [ node, node ]);
|
|
cf = cf.addIn([ node, node ], [ node, blankNode ], child => {
|
|
const values: Array<NamedNode | BlankNode> = child.terms;
|
|
});
|
|
cf = cf.addIn(node, child => {
|
|
const childNode: clownface.AnyPointer<BlankNode> = child;
|
|
});
|
|
cf = cf.addIn(cf.node(node), cf.node(node));
|
|
|
|
const manyPredicates: clownface.AnyPointer<NamedNode[]> = <any> {};
|
|
const manyObjects: clownface.AnyPointer<Literal[]> = <any> {};
|
|
cf = cf.addIn(manyPredicates, manyObjects);
|
|
}
|
|
|
|
function testAddList() {
|
|
let cf: clownface.AnyPointer<NamedNode> = <any> {};
|
|
cf = cf.addList(predicate, [node]);
|
|
cf = cf.addList(predicate, [node, node]);
|
|
}
|
|
|
|
function testAddOut() {
|
|
let cf: clownface.AnyPointer<BlankNode> = <any> {};
|
|
cf = cf.addOut(node);
|
|
cf = cf.addOut(node);
|
|
cf = cf.addOut([ node, node ], node);
|
|
cf = cf.addOut(node, [ node, node ]);
|
|
cf = cf.addOut([ node, node ], [ node, blankNode ], child => {
|
|
const values: Array<NamedNode | BlankNode> = child.terms;
|
|
});
|
|
cf = cf.addOut(node, child => {
|
|
const childNode: clownface.AnyPointer<BlankNode> = child;
|
|
});
|
|
cf = cf.addOut(cf.node(node), cf.node(node));
|
|
|
|
const manyPredicates: clownface.AnyPointer<NamedNode[]> = <any> {};
|
|
const manyObjects: clownface.AnyPointer<Literal[]> = <any> {};
|
|
cf = cf.addOut(manyPredicates, manyObjects);
|
|
}
|
|
|
|
function testBlankNode() {
|
|
const cf: clownface.AnyPointer<Term[], Dataset> = <any> {};
|
|
let singleBlank: clownface.AnyPointer<BlankNode, Dataset> = cf.blankNode();
|
|
singleBlank = cf.blankNode('label');
|
|
const multiBlankContext: clownface.AnyPointer<BlankNode[], Dataset> = cf.blankNode([ 'b1', 'b2' ]);
|
|
|
|
const fromOther: clownface.AnyPointer<BlankNode, Dataset> = cf.blankNode(singleBlank);
|
|
const fromMultipleOther: clownface.MultiPointer<BlankNode, Dataset> = cf.blankNode(multiBlankContext);
|
|
}
|
|
|
|
function testDeleteIn() {
|
|
let cf: clownface.AnyPointer<NamedNode, Dataset> = <any> {};
|
|
cf = cf.deleteIn();
|
|
cf = cf.deleteIn(node);
|
|
cf = cf.deleteIn([node, node]);
|
|
}
|
|
|
|
function testDeleteList() {
|
|
let cf: clownface.AnyPointer<NamedNode, Dataset> = <any> {};
|
|
cf = cf.deleteList(predicate);
|
|
}
|
|
|
|
function testDeleteOut() {
|
|
let cf: clownface.AnyPointer<BlankNode, Dataset> = <any> {};
|
|
cf = cf.deleteOut();
|
|
cf = cf.deleteOut(node);
|
|
cf = cf.deleteOut([node, node]);
|
|
}
|
|
|
|
function testFactory() {
|
|
const defaultContext: clownface.AnyPointer<Term | Term[] | undefined, Dataset> = clownface({ dataset });
|
|
|
|
const namedGraph: clownface.AnyPointer<NamedNode, Dataset> = clownface({ dataset, graph, term: node });
|
|
const singleFromValue: clownface.AnyPointer<Literal, Dataset> = clownface({ dataset, value: 'foo' });
|
|
|
|
const termContext: clownface.AnyPointer<Term, Dataset> = clownface({
|
|
dataset,
|
|
term
|
|
});
|
|
|
|
const namedContext: clownface.AnyPointer<NamedNode, Dataset> = clownface({
|
|
dataset,
|
|
term: node,
|
|
});
|
|
|
|
const namedMutlipleTerms: clownface.AnyPointer<NamedNode[], Dataset> = clownface({
|
|
dataset,
|
|
term: [node, node],
|
|
});
|
|
|
|
const mutlipleValues: clownface.AnyPointer<Literal[], Dataset> = clownface({
|
|
dataset,
|
|
value: ['foo', 'bar'],
|
|
});
|
|
|
|
const maybeNamed: BlankNode | NamedNode = <any> {};
|
|
const altContext: clownface.AnyPointer<BlankNode | NamedNode, Dataset> = clownface({
|
|
dataset,
|
|
term: maybeNamed,
|
|
});
|
|
|
|
const literalContext: clownface.AnyPointer<Literal, Dataset> = <any> {};
|
|
const deriveContextFromOtherGraph: clownface.AnyPointer<Literal, Dataset> = clownface(literalContext);
|
|
|
|
const namedNodeContext: clownface.AnyPointer<NamedNode, Dataset> = <any> {};
|
|
const deriveContextFromOtherNamedNodeContext: clownface.AnyPointer<NamedNode, Dataset> = clownface(namedNodeContext);
|
|
}
|
|
|
|
function testFilter() {
|
|
let mutliple: clownface.AnyPointer<NamedNode[], Dataset> = <any> {};
|
|
mutliple = mutliple.filter(quad => {
|
|
const copy: clownface.AnyPointer<NamedNode, Dataset> = quad;
|
|
return true;
|
|
});
|
|
|
|
let single: clownface.AnyPointer<NamedNode, Dataset> = <any> {};
|
|
single = single.filter(quad => {
|
|
const copy: clownface.AnyPointer<NamedNode, Dataset> = quad;
|
|
return true;
|
|
});
|
|
|
|
let noContext: clownface.AnyPointer<undefined, Dataset> = <any> {};
|
|
noContext = noContext.filter(quad => {
|
|
const copy: never = quad;
|
|
return true;
|
|
});
|
|
}
|
|
|
|
function testForEach() {
|
|
let mutliple: clownface.AnyPointer<NamedNode[], Dataset> = <any> {};
|
|
mutliple = mutliple.forEach(quad => {
|
|
const copy: clownface.AnyPointer<NamedNode, Dataset> = quad;
|
|
return true;
|
|
});
|
|
|
|
let single: clownface.AnyPointer<NamedNode, Dataset> = <any> {};
|
|
single = single.forEach(quad => {
|
|
const copy: clownface.AnyPointer<NamedNode, Dataset> = quad;
|
|
return true;
|
|
});
|
|
|
|
let noContext: clownface.AnyPointer<undefined, Dataset> = <any> {};
|
|
noContext = noContext.forEach(quad => {
|
|
const copy: never = quad;
|
|
return true;
|
|
});
|
|
}
|
|
|
|
function testHas() {
|
|
const cf: clownface.AnyPointer<Term, Dataset> = <any> {};
|
|
let has: clownface.AnyPointer<Array<NamedNode | BlankNode>, Dataset> = cf.has(predicate, 'Stuart');
|
|
has = cf.has([predicate, predicate], 'Stuart');
|
|
has = cf.has(predicate, [literal, literal]);
|
|
}
|
|
|
|
function testIn() {
|
|
const cf: clownface.AnyPointer<Literal, Dataset> = <any> {};
|
|
let cfIn: clownface.MultiPointer<NamedNode | BlankNode, Dataset> = cf.in();
|
|
cfIn = cf.in(node);
|
|
cfIn = cf.in([node, node]);
|
|
cfIn = cf.in(cf.node(node));
|
|
cfIn = cf.in(cf.node([node, node]));
|
|
|
|
const singleContext: clownface.AnyPointer<NamedNode, Dataset> = <any> {};
|
|
let inContext = cfIn.out(node);
|
|
inContext = singleContext;
|
|
}
|
|
|
|
function testList() {
|
|
const cf: clownface.AnyPointer<NamedNode, Dataset> = <any> {};
|
|
const listNodes: Iterable<clownface.AnyPointer<NamedNode, Dataset>> | null = cf.list();
|
|
}
|
|
|
|
function testLiteral() {
|
|
const cf: clownface.AnyPointer<undefined, Dataset> = <any> {};
|
|
let cfOneLit: clownface.AnyPointer<Literal, Dataset> = cf.literal('foo');
|
|
const cfLiterals: clownface.AnyPointer<Literal[], Dataset> = cf.literal(['foo', 'bar']);
|
|
cfOneLit = cf.literal('foo', node);
|
|
cfOneLit = cf.literal('foo', 'en');
|
|
|
|
const fromOther: clownface.AnyPointer<Literal, Dataset> = cf.literal(cfOneLit);
|
|
const fromMultipleOther: clownface.MultiPointer<Literal, Dataset> = cf.literal(cfLiterals);
|
|
}
|
|
|
|
function testMap() {
|
|
const singleContext: clownface.AnyPointer<BlankNode, Dataset> = <any> {};
|
|
const multiContext: clownface.AnyPointer<BlankNode, Dataset> = <any> {};
|
|
let terms: BlankNode[] = singleContext.map((item) => item.term);
|
|
terms = multiContext.map((item) => item.term);
|
|
|
|
let nums: number[] = singleContext.map((_, index) => index);
|
|
nums = multiContext.map((_, index) => index);
|
|
}
|
|
|
|
function testNamedNode() {
|
|
const cf: clownface.AnyPointer<undefined, Dataset> = <any> {};
|
|
let cfSingleNamed: clownface.AnyPointer<NamedNode, Dataset> = cf.namedNode(node);
|
|
cfSingleNamed = cf.namedNode('http://example.com/');
|
|
const cfNamedMany: clownface.AnyPointer<NamedNode[], Dataset> = cf.namedNode(['http://example.com/', 'http://example.org/']);
|
|
|
|
const fromOther: clownface.AnyPointer<NamedNode, Dataset> = cf.namedNode(cfSingleNamed);
|
|
const fromMultipleOther: clownface.MultiPointer<NamedNode, Dataset> = cf.namedNode(cfNamedMany);
|
|
}
|
|
|
|
function testNode() {
|
|
const cf: clownface.AnyPointer<undefined, Dataset> = <any> {};
|
|
let singleTerm: clownface.AnyPointer<Term, Dataset> = cf.node(node);
|
|
let cfLit: clownface.AnyPointer<Literal, Dataset> = cf.node('foo');
|
|
cfLit = cf.node(123);
|
|
const cfLitMany: clownface.AnyPointer<Literal[], Dataset> = cf.node(['foo', 'bar']);
|
|
singleTerm = cf.node('http://example.org/', { type: 'NamedNode' });
|
|
const cfBlank: clownface.AnyPointer<BlankNode, Dataset> = cf.node(null, { type: 'BlankNode' });
|
|
cfLit = cf.node('example', { datatype: node.value });
|
|
cfLit = cf.node('example', { datatype: node });
|
|
|
|
const fromOtherNode: clownface.MultiPointer<Term, Dataset> = cf.node(singleTerm);
|
|
const literalFromOther: clownface.MultiPointer<Literal, Dataset> = cf.node(cfLit);
|
|
|
|
const literalFromMultipleOther: clownface.MultiPointer<Literal, Dataset> = cf.node(cfLitMany);
|
|
}
|
|
|
|
function testOut() {
|
|
const cf: clownface.AnyPointer<undefined, Dataset> = <any> {};
|
|
let cfTerm: clownface.AnyPointer<Term[], Dataset> = cf.out();
|
|
cfTerm = cf.out(node);
|
|
cfTerm = cf.out([node, node]);
|
|
cfTerm = cf.out(cf.node([node, node]));
|
|
|
|
const singleContext: clownface.AnyPointer<NamedNode, Dataset> = <any> {};
|
|
let outContext = cfTerm.out(node);
|
|
outContext = singleContext;
|
|
}
|
|
|
|
function testOutWithLanguage() {
|
|
const cf: clownface.AnyPointer<undefined, Dataset> = <any> {};
|
|
let cfTerms: Literal[] = cf.out(undefined, { language: 'en' }).terms;
|
|
cfTerms = cf.out(node).terms;
|
|
cfTerms = cf.out([node, node]).terms;
|
|
cfTerms = cf.out(cf.node([node, node])).terms;
|
|
|
|
let outTerms: Literal[] = cf.blankNode().out(node, { language: 'en' }).terms;
|
|
outTerms = cf.blankNode().out(node, { language: ['en', 'de'] }).terms;
|
|
}
|
|
|
|
function testToArray() {
|
|
const single: clownface.AnyPointer<Literal, Dataset> = <any> {};
|
|
const singleToArray: Array<clownface.AnyPointer<Literal, Dataset>> = single.toArray();
|
|
|
|
const mutliple: clownface.AnyPointer<Literal[], Dataset> = <any> {};
|
|
const mutlipleToArray: Array<clownface.AnyPointer<Literal, Dataset>> = mutliple.toArray();
|
|
}
|
|
|
|
function testMultipleContext() {
|
|
const safeCf: clownface.AnyPointer<Term[], Dataset> = <any> {};
|
|
|
|
let singleBlank: clownface.AnyPointer<BlankNode, Dataset> = safeCf.blankNode();
|
|
singleBlank = clownface({ dataset }).blankNode();
|
|
singleBlank = safeCf.blankNode('blank');
|
|
singleBlank = clownface({ dataset }).node(null);
|
|
|
|
let singleNamed: clownface.AnyPointer<NamedNode, Dataset> = clownface({ dataset }).namedNode('urn:foo:bar');
|
|
singleNamed = safeCf.namedNode('http://example.com/a');
|
|
singleNamed = clownface({ dataset }).node(node);
|
|
|
|
let singleLiteral: clownface.AnyPointer<Literal, Dataset> = clownface({ dataset }).literal('foo');
|
|
singleLiteral = safeCf.literal('a');
|
|
singleLiteral = clownface({ dataset }).node('b');
|
|
|
|
const fromSingleArrayBLank: clownface.AnyPointer<BlankNode, Dataset> = safeCf.blankNode([ 'b1' ]);
|
|
const fromSingleArrayNamed: clownface.AnyPointer<NamedNode, Dataset> = safeCf.namedNode([ 'http://example.com/a' ]);
|
|
const fromSingleArrayLiteral: clownface.AnyPointer<Literal, Dataset> = safeCf.literal([ 'a' ]);
|
|
|
|
let multipleBlanks: clownface.AnyPointer<BlankNode[], Dataset> = safeCf.blankNode([ 'b1', 'b2' ]);
|
|
multipleBlanks = clownface({ dataset }).node([ null, null ]);
|
|
|
|
let multipleNamed: clownface.AnyPointer<NamedNode[], Dataset> = safeCf.namedNode([ 'http://example.com/a', 'http://example.com/b' ]);
|
|
multipleNamed = clownface({ dataset }).node([ node, node ]);
|
|
|
|
let multipleLiterals: clownface.AnyPointer<Literal[], Dataset> = safeCf.literal([ 'a', 'b' ]);
|
|
multipleLiterals = clownface({ dataset }).node([ 'a', 10, false ]);
|
|
|
|
const multipleMixedTerms: clownface.AnyPointer<Term[], Dataset> = clownface({ dataset }).node([ 'a', node, null ]);
|
|
}
|
|
|
|
function testContext() {
|
|
const fromSingleArrayLiteral: clownface.AnyPointer<Literal, Dataset> = <any> {};
|
|
const ctxTerm: Term = fromSingleArrayLiteral._context[0].term;
|
|
const ctxGraph: Quad_Graph | undefined = fromSingleArrayLiteral._context[0].graph;
|
|
const ctxDataset: Dataset = fromSingleArrayLiteral._context[0].dataset;
|
|
}
|
|
|
|
function addInAddOutRetainsType() {
|
|
const singleNamed: clownface.AnyPointer<NamedNode, Dataset> = <any> {};
|
|
|
|
const addOutSingle: clownface.AnyPointer<NamedNode, Dataset> = singleNamed.addOut(predicate, 'foo');
|
|
const addOutSingleObjectArray: clownface.AnyPointer<NamedNode, Dataset> = singleNamed.addOut(predicate, ['foo', 'bar']);
|
|
const addOutSinglePredicateArray: clownface.AnyPointer<NamedNode, Dataset> = singleNamed.addOut([predicate, predicate]);
|
|
const addOutSingleNoObject: clownface.AnyPointer<NamedNode, Dataset> = singleNamed.addOut(predicate);
|
|
const addOutSingleWithCallback: clownface.AnyPointer<NamedNode, Dataset> = singleNamed.addOut(predicate, () => {});
|
|
const addOutSingleWithObjectAndCallback: clownface.AnyPointer<NamedNode, Dataset> = singleNamed.addOut(predicate, 'foo', () => {});
|
|
|
|
const addInSingle: clownface.AnyPointer<NamedNode, Dataset> = singleNamed.addIn(predicate, 'foo');
|
|
const addInSingleObjectArray: clownface.AnyPointer<NamedNode, Dataset> = singleNamed.addIn(predicate, ['foo', 'bar']);
|
|
const addInSinglePredicateArray: clownface.AnyPointer<NamedNode, Dataset> = singleNamed.addIn([predicate, predicate]);
|
|
const addInSingleNoObject: clownface.AnyPointer<NamedNode, Dataset> = singleNamed.addIn(predicate);
|
|
const addInSingleWithCallback: clownface.AnyPointer<NamedNode, Dataset> = singleNamed.addIn(predicate, () => {});
|
|
const addInSingleWithObjectAndCallback: clownface.AnyPointer<NamedNode, Dataset> = singleNamed.addIn(predicate, 'foo', () => {});
|
|
}
|