Skip to content

Commit 56cc184

Browse files
committed
chore: add tests from #303
1 parent d258f22 commit 56cc184

2 files changed

Lines changed: 79 additions & 0 deletions

File tree

test/N3Store-test.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1653,6 +1653,32 @@ describe('Store', () => {
16531653
[...store.match(null, null, null, null)].should.have.length(3);
16541654
});
16551655

1656+
it('should include added elements in match if iteration has not yet started (deeply nested)', () => {
1657+
const m = store.match(null, null, null, null);
1658+
store.add(new Quad(
1659+
new NamedNode('s1'),
1660+
new NamedNode('p1'),
1661+
new Quad(new NamedNode('s1'), new NamedNode('p1'), new NamedNode('o3'))
1662+
)
1663+
);
1664+
store.add(new Quad(
1665+
new NamedNode('s1'),
1666+
new NamedNode('p1'),
1667+
new Quad(
1668+
new NamedNode('s1'),
1669+
new NamedNode('p1'),
1670+
new Quad(
1671+
new NamedNode('s1'),
1672+
new NamedNode('p1'),
1673+
new NamedNode('o3')
1674+
)
1675+
)
1676+
)
1677+
);
1678+
[...m].should.have.length(4);
1679+
[...store.match(null, null, null, null)].should.have.length(4);
1680+
});
1681+
16561682
it('should still include results of original match after iterating while adding new data', () => {
16571683
const m = store.match(null, null, null, null)[Symbol.iterator]();
16581684
m.next().value.should.deep.equal(new Quad(new NamedNode('s1'), new NamedNode('p1'), new NamedNode('o1')));

test/Term-test.js

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,54 @@ import {
1515
unescapeQuotes,
1616
} from '../src/N3DataFactory';
1717

18+
19+
const DEEP_TRIPLE = new Quad(
20+
new Quad(
21+
new Quad(
22+
new Quad(
23+
new BlankNode('n3-000'),
24+
new Variable('var-b'),
25+
new Literal('"abc"@en-us'),
26+
new NamedNode('http://ex.org/d')
27+
),
28+
new Variable('var-b'),
29+
new Quad(
30+
new BlankNode('n3-000'),
31+
new Variable('var-b'),
32+
new Literal('"abc"@en-us'),
33+
new NamedNode('http://ex.org/d')
34+
),
35+
new NamedNode('http://ex.org/d')
36+
),
37+
new Variable('var-b'),
38+
new Quad(
39+
new BlankNode('n3-000'),
40+
new Variable('var-b'),
41+
new Literal('"abc"@en-us'),
42+
new NamedNode('http://ex.org/d')
43+
),
44+
new NamedNode('http://ex.org/d')
45+
),
46+
new NamedNode('http://ex.org/b'),
47+
new Quad(
48+
new Quad(
49+
new BlankNode('n3-000'),
50+
new Variable('var-b'),
51+
new Literal('"abc"@en-us'),
52+
new NamedNode('http://ex.org/d')
53+
),
54+
new Variable('var-b'),
55+
new Quad(
56+
new BlankNode('n3-000'),
57+
new Variable('var-b'),
58+
new Literal('"abc"@en-us'),
59+
new NamedNode('http://ex.org/d')
60+
),
61+
new NamedNode('http://ex.org/d')
62+
),
63+
new NamedNode('http://ex.org/d')
64+
);
65+
1866
describe('Term', () => {
1967
describe('The Term module', () => {
2068
it('should be a function', () => {
@@ -161,6 +209,11 @@ describe('Term', () => {
161209
termFromId(termToId(q)).should.deep.equal(q);
162210
});
163211

212+
it('should correctly handle deeply nested quads', () => {
213+
DEEP_TRIPLE.equals(termFromId(termToId(DEEP_TRIPLE))).should.equal(true);
214+
termFromId(termToId(DEEP_TRIPLE)).equals(DEEP_TRIPLE).should.equal(true);
215+
});
216+
164217
describe('with a custom factory', () => {
165218
const factory = {
166219
defaultGraph: function () { return ['d']; },

0 commit comments

Comments
 (0)