' +
1929 | '"2019-01-18T11:37:23+01:00"').should.be.above(-1);
1930 | });
1931 | });
1932 |
1933 | describe('being searched', function () {
1934 | describe('for an existing subject', function () {
1935 | var triples, totalCount;
1936 | before(function () {
1937 | return document.searchTriples(namedNode('s'), null, null).then(result => {
1938 | triples = result.triples;
1939 | totalCount = result.totalCount;
1940 | });
1941 | });
1942 |
1943 | it('should return an array with matches', function () {
1944 | triples.should.be.an.Array();
1945 | triples.should.have.length(12);
1946 | });
1947 |
1948 | it('should estimate the total count', function () {
1949 | totalCount.should.equal(12);
1950 | });
1951 | });
1952 |
1953 | describe('for a non-existing subject', function () {
1954 | var triples, totalCount;
1955 | before(function () {
1956 | return document.searchTriples(namedNode('x'), null, null).then(result => {
1957 | triples = result.triples;
1958 | totalCount = result.totalCount;
1959 | });
1960 | });
1961 |
1962 | it('should return an array without matches', function () {
1963 | triples.should.be.an.Array();
1964 | triples.should.have.length(0);
1965 | });
1966 |
1967 | it('should estimate the total count as 0', function () {
1968 | totalCount.should.equal(0);
1969 | });
1970 | });
1971 |
1972 | describe('for the empty literal', function () {
1973 | var literals, totalCount;
1974 | before(function () {
1975 | return document.searchLiterals('').then(result => {
1976 | literals = result.literals;
1977 | totalCount = result.totalCount;
1978 | });
1979 | });
1980 |
1981 | it('should return the empty array', function () {
1982 | literals.should.eql([]);
1983 | });
1984 |
1985 | it('should estimate the total count', function () {
1986 | totalCount.should.equal(0);
1987 | });
1988 | });
1989 |
1990 | describe('for the literal "a"', function () {
1991 | var literals, totalCount;
1992 | before(function () {
1993 | return document.searchLiterals('a').then(result => {
1994 | literals = result.literals;
1995 | totalCount = result.totalCount;
1996 | });
1997 | });
1998 |
1999 | it('should return literals containing "a"', function () {
2000 | literals.should.eql([
2001 | literal('a', namedNode('http://www.w3.org/2001/XMLSchema#string')),
2002 | literal('a', 'en'),
2003 | literal('a', namedNode('bcd')),
2004 | literal('cd', namedNode('ab@cd')),
2005 | literal('ab^^cd', 'en'),
2006 | literal('abc', namedNode('http://www.w3.org/2001/XMLSchema#string')),
2007 | literal('abc', 'en'),
2008 | literal('abc', namedNode('bcd')),
2009 | literal('', namedNode('abc@d')),
2010 | ]);
2011 | });
2012 |
2013 | it('should estimate the total count', function () {
2014 | totalCount.should.equal(9);
2015 | });
2016 | });
2017 |
2018 | describe('for the literal "b"', function () {
2019 | var literals, totalCount;
2020 | before(function () {
2021 | return document.searchLiterals('b').then(result => {
2022 | literals = result.literals;
2023 | totalCount = result.totalCount;
2024 | });
2025 | });
2026 |
2027 |
2028 | it('should return literals containing "b" (with duplicates for multiple matches)', function () {
2029 | literals.should.eql([
2030 | literal('cd', namedNode('ab@cd')),
2031 | literal('ab^^cd', 'en'),
2032 | literal('abc', namedNode('http://www.w3.org/2001/XMLSchema#string')),
2033 | literal('bc', namedNode('http://www.w3.org/2001/XMLSchema#string')),
2034 | literal('abc', 'en'),
2035 | literal('bc', 'en'),
2036 | literal('abc', namedNode('bcd')),
2037 | literal('bc', namedNode('bcd')),
2038 | literal('', namedNode('abc@d')),
2039 | literal('a', namedNode('bcd')),
2040 | literal('abc', namedNode('bcd')),
2041 | literal('bc', namedNode('bcd')),
2042 | ]);
2043 | });
2044 |
2045 | it('should estimate the total count', function () {
2046 | totalCount.should.equal(12);
2047 | });
2048 | });
2049 |
2050 | describe('for the literal "b" with a limit', function () {
2051 | var literals, totalCount;
2052 | before(function () {
2053 | return document.searchLiterals('b', { limit : 2 }).then(result => {
2054 | literals = result.literals;
2055 | totalCount = result.totalCount;
2056 | });
2057 | });
2058 |
2059 | it('should return literals containing "b"', function () {
2060 | literals.should.eql([
2061 | literal('cd', namedNode('ab@cd')),
2062 | literal('ab^^cd', 'en'),
2063 | ]);
2064 | });
2065 |
2066 | it('should estimate the total count', function () {
2067 | totalCount.should.equal(12);
2068 | });
2069 | });
2070 |
2071 | describe('for the literal "b" with an offset', function () {
2072 | var literals, totalCount;
2073 | before(function () {
2074 | return document.searchLiterals('b', { offset: 4 }).then(result => {
2075 | literals = result.literals;
2076 | totalCount = result.totalCount;
2077 | });
2078 | });
2079 |
2080 |
2081 | it('should return literals containing "b"', function () {
2082 | literals.should.eql([
2083 | literal('abc', 'en'),
2084 | literal('bc', 'en'),
2085 | literal('abc', namedNode('bcd')),
2086 | literal('bc', namedNode('bcd')),
2087 | literal('', namedNode('abc@d')),
2088 | literal('a', namedNode('bcd')),
2089 | literal('abc', namedNode('bcd')),
2090 | literal('bc', namedNode('bcd')),
2091 | ]);
2092 | });
2093 |
2094 | it('should estimate the total count', function () {
2095 | totalCount.should.equal(12);
2096 | });
2097 | });
2098 |
2099 | describe('for the literal "b" with a very large offset', function () {
2100 | var literals, totalCount;
2101 | before(function () {
2102 | return document.searchLiterals('b', { offset: 5000 }).then(result => {
2103 | literals = result.literals;
2104 | totalCount = result.totalCount;
2105 | });
2106 | });
2107 |
2108 | it('should return the empty array', function () {
2109 | literals.should.eql([]);
2110 | });
2111 |
2112 | it('should estimate the total count', function () {
2113 | totalCount.should.equal(12);
2114 | });
2115 | });
2116 | });
2117 |
2118 | describe('for the literal "b" with an offset and a limit', function () {
2119 | var literals, totalCount;
2120 | before(function () {
2121 | return document.searchLiterals('b', { offset: 4, limit: 2 }).then(result => {
2122 | literals = result.literals;
2123 | totalCount = result.totalCount;
2124 | });
2125 | });
2126 |
2127 |
2128 | it('should return literals containing "b"', function () {
2129 | literals.should.eql([
2130 | literal('abc', 'en'),
2131 | literal('bc', 'en'),
2132 | ]);
2133 | });
2134 |
2135 | it('should estimate the total count', function () {
2136 | totalCount.should.equal(12);
2137 | });
2138 | });
2139 | });
2140 | describe('A closed HDT document', function () {
2141 | var document;
2142 | before(function () {
2143 | return hdt.fromFile('./test/test.hdt').then(hdtDocument => {
2144 | document = hdtDocument;
2145 | return document.close();
2146 | });
2147 | });
2148 |
2149 | describe('reading the header', function () {
2150 | it('should throw an error', function () {
2151 | return document.readHeader().then(() =>
2152 | Promise.reject(new Error('Expected an error')),
2153 | error => {
2154 | error.should.be.an.instanceOf(Error);
2155 | error.message.should.equal('The HDT document cannot be accessed because it is closed');
2156 | }
2157 | );
2158 | });
2159 | });
2160 |
2161 | describe('being searched for triples', function () {
2162 | it('should throw an error', function () {
2163 | return document.searchTriples(null, null, null).then(() =>
2164 | Promise.reject(new Error('Expected an error')),
2165 | error => {
2166 | error.should.be.an.instanceOf(Error);
2167 | error.message.should.equal('The HDT document cannot be accessed because it is closed');
2168 | }
2169 | );
2170 | });
2171 | });
2172 |
2173 | describe('being searched for literals', function () {
2174 | it('should throw an error', function () {
2175 | return document.searchLiterals('abc').then(() =>
2176 | Promise.reject(new Error('Expected an error')),
2177 | error => {
2178 | error.should.be.an.instanceOf(Error);
2179 | error.message.should.equal('The HDT document cannot be accessed because it is closed');
2180 | }
2181 | );
2182 | });
2183 | });
2184 | });
2185 | });
2186 |
2187 | function bindingsShouldEqual(left, right) {
2188 | return left.equals(right).should.be.true(`Expected ${left.toString()} to equal ${right.toString()}`);
2189 | }
2190 |
--------------------------------------------------------------------------------
/test/literals.hdt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LinkedDataFragments/HDT-Node/b5434afb957be19ae1460b44793a8c60f84c270e/test/literals.hdt
--------------------------------------------------------------------------------
/test/literals.ttl:
--------------------------------------------------------------------------------
1 | "a".
2 |
"a"@en.
3 |
"a"^^.
4 | "abc".
5 |
"abc"@en.
6 |
"abc"^^.
7 | "bc".
8 |
"bc"@en.
9 |
"bc"^^.
10 | "cd"^^.
11 | "ab^^cd"@en.
12 |
""^^.
13 | ""@en.
14 |
--------------------------------------------------------------------------------
/test/mocha.opts:
--------------------------------------------------------------------------------
1 | -R dot
2 | -t 500
3 |
--------------------------------------------------------------------------------
/test/test.hdt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LinkedDataFragments/HDT-Node/b5434afb957be19ae1460b44793a8c60f84c270e/test/test.hdt
--------------------------------------------------------------------------------
/test/test.ttl:
--------------------------------------------------------------------------------
1 | @prefix ex: .
2 | @prefix xsd: .
3 |
4 | # 100 triples: ex:s1 ex:p1 ex:o001–ex:o100
5 | ex:s1 ex:p1 ex:o001.
6 | ex:s1 ex:p1 ex:o002.
7 | ex:s1 ex:p1 ex:o003.
8 | ex:s1 ex:p1 ex:o004.
9 | ex:s1 ex:p1 ex:o005.
10 | ex:s1 ex:p1 ex:o006.
11 | ex:s1 ex:p1 ex:o007.
12 | ex:s1 ex:p1 ex:o008.
13 | ex:s1 ex:p1 ex:o009.
14 | ex:s1 ex:p1 ex:o010.
15 | ex:s1 ex:p1 ex:o011.
16 | ex:s1 ex:p1 ex:o012.
17 | ex:s1 ex:p1 ex:o013.
18 | ex:s1 ex:p1 ex:o014.
19 | ex:s1 ex:p1 ex:o015.
20 | ex:s1 ex:p1 ex:o016.
21 | ex:s1 ex:p1 ex:o017.
22 | ex:s1 ex:p1 ex:o018.
23 | ex:s1 ex:p1 ex:o019.
24 | ex:s1 ex:p1 ex:o020.
25 | ex:s1 ex:p1 ex:o021.
26 | ex:s1 ex:p1 ex:o022.
27 | ex:s1 ex:p1 ex:o023.
28 | ex:s1 ex:p1 ex:o024.
29 | ex:s1 ex:p1 ex:o025.
30 | ex:s1 ex:p1 ex:o026.
31 | ex:s1 ex:p1 ex:o027.
32 | ex:s1 ex:p1 ex:o028.
33 | ex:s1 ex:p1 ex:o029.
34 | ex:s1 ex:p1 ex:o030.
35 | ex:s1 ex:p1 ex:o031.
36 | ex:s1 ex:p1 ex:o032.
37 | ex:s1 ex:p1 ex:o033.
38 | ex:s1 ex:p1 ex:o034.
39 | ex:s1 ex:p1 ex:o035.
40 | ex:s1 ex:p1 ex:o036.
41 | ex:s1 ex:p1 ex:o037.
42 | ex:s1 ex:p1 ex:o038.
43 | ex:s1 ex:p1 ex:o039.
44 | ex:s1 ex:p1 ex:o040.
45 | ex:s1 ex:p1 ex:o041.
46 | ex:s1 ex:p1 ex:o042.
47 | ex:s1 ex:p1 ex:o043.
48 | ex:s1 ex:p1 ex:o044.
49 | ex:s1 ex:p1 ex:o045.
50 | ex:s1 ex:p1 ex:o046.
51 | ex:s1 ex:p1 ex:o047.
52 | ex:s1 ex:p1 ex:o048.
53 | ex:s1 ex:p1 ex:o049.
54 | ex:s1 ex:p1 ex:o050.
55 | ex:s1 ex:p1 ex:o051.
56 | ex:s1 ex:p1 ex:o052.
57 | ex:s1 ex:p1 ex:o053.
58 | ex:s1 ex:p1 ex:o054.
59 | ex:s1 ex:p1 ex:o055.
60 | ex:s1 ex:p1 ex:o056.
61 | ex:s1 ex:p1 ex:o057.
62 | ex:s1 ex:p1 ex:o058.
63 | ex:s1 ex:p1 ex:o059.
64 | ex:s1 ex:p1 ex:o060.
65 | ex:s1 ex:p1 ex:o061.
66 | ex:s1 ex:p1 ex:o062.
67 | ex:s1 ex:p1 ex:o063.
68 | ex:s1 ex:p1 ex:o064.
69 | ex:s1 ex:p1 ex:o065.
70 | ex:s1 ex:p1 ex:o066.
71 | ex:s1 ex:p1 ex:o067.
72 | ex:s1 ex:p1 ex:o068.
73 | ex:s1 ex:p1 ex:o069.
74 | ex:s1 ex:p1 ex:o070.
75 | ex:s1 ex:p1 ex:o071.
76 | ex:s1 ex:p1 ex:o072.
77 | ex:s1 ex:p1 ex:o073.
78 | ex:s1 ex:p1 ex:o074.
79 | ex:s1 ex:p1 ex:o075.
80 | ex:s1 ex:p1 ex:o076.
81 | ex:s1 ex:p1 ex:o077.
82 | ex:s1 ex:p1 ex:o078.
83 | ex:s1 ex:p1 ex:o079.
84 | ex:s1 ex:p1 ex:o080.
85 | ex:s1 ex:p1 ex:o081.
86 | ex:s1 ex:p1 ex:o082.
87 | ex:s1 ex:p1 ex:o083.
88 | ex:s1 ex:p1 ex:o084.
89 | ex:s1 ex:p1 ex:o085.
90 | ex:s1 ex:p1 ex:o086.
91 | ex:s1 ex:p1 ex:o087.
92 | ex:s1 ex:p1 ex:o088.
93 | ex:s1 ex:p1 ex:o089.
94 | ex:s1 ex:p1 ex:o090.
95 | ex:s1 ex:p1 ex:o091.
96 | ex:s1 ex:p1 ex:o092.
97 | ex:s1 ex:p1 ex:o093.
98 | ex:s1 ex:p1 ex:o094.
99 | ex:s1 ex:p1 ex:o095.
100 | ex:s1 ex:p1 ex:o096.
101 | ex:s1 ex:p1 ex:o097.
102 | ex:s1 ex:p1 ex:o098.
103 | ex:s1 ex:p1 ex:o099.
104 | ex:s1 ex:p1 ex:o100.
105 |
106 | # 10 triples: ex:s2 ex:p1 ex:o001–ex:o010
107 | ex:s2 ex:p1 ex:o001.
108 | ex:s2 ex:p1 ex:o002.
109 | ex:s2 ex:p1 ex:o003.
110 | ex:s2 ex:p1 ex:o004.
111 | ex:s2 ex:p1 ex:o005.
112 | ex:s2 ex:p1 ex:o006.
113 | ex:s2 ex:p1 ex:o007.
114 | ex:s2 ex:p1 ex:o008.
115 | ex:s2 ex:p1 ex:o009.
116 | ex:s2 ex:p1 ex:o010.
117 |
118 | # 10 triples: ex:s3 ex:p2 ex:o001–ex:o010
119 | ex:s3 ex:p2 ex:o001.
120 | ex:s3 ex:p2 ex:o002.
121 | ex:s3 ex:p2 ex:o003.
122 | ex:s3 ex:p2 ex:o004.
123 | ex:s3 ex:p2 ex:o005.
124 | ex:s3 ex:p2 ex:o006.
125 | ex:s3 ex:p2 ex:o007.
126 | ex:s3 ex:p2 ex:o008.
127 | ex:s3 ex:p2 ex:o009.
128 | ex:s3 ex:p2 ex:o010.
129 |
130 | # 14 triples with literals
131 | ex:s4 ex:p3 "".
132 | ex:s4 ex:p3 ""@en.
133 | ex:s4 ex:p3 ""^^xsd:string.
134 | ex:s4 ex:p3 ""^^ex:literal.
135 | ex:s4 ex:p3 "a".
136 | ex:s4 ex:p3 "a"@en.
137 | ex:s4 ex:p3 "a"^^xsd:string.
138 | ex:s4 ex:p3 "a"^^ex:literal.
139 | ex:s4 ex:p3 "a\"b\'c\\\r\n\\".
140 | ex:s4 ex:p3 "a\"b\'c\\\r\n\\"@en.
141 | ex:s4 ex:p3 "a\"b\'c\\\r\n\\"^^xsd:string.
142 | ex:s4 ex:p3 "a\"b\'c\\\r\n\\"^^ex:literal.
143 | ex:s4 ex:p3 "\"a\"^^xsd:string"@en.
144 | ex:s4 ex:p3 "a"^^.
145 |
--------------------------------------------------------------------------------
/test/test2.hdt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LinkedDataFragments/HDT-Node/b5434afb957be19ae1460b44793a8c60f84c270e/test/test2.hdt
--------------------------------------------------------------------------------
/test/test2.ttl:
--------------------------------------------------------------------------------
1 | @prefix ex: .
2 | @prefix xsd: .
3 |
4 | # Triples with terms that are reused across triple term positions
5 | # All combinations of ex:t1-t3
6 |
7 | ex:t1 ex:t1 ex:t1.
8 | ex:t1 ex:t1 ex:t2.
9 | ex:t1 ex:t1 ex:t3.
10 | ex:t1 ex:t2 ex:t1.
11 | ex:t1 ex:t2 ex:t2.
12 | ex:t1 ex:t2 ex:t3.
13 | ex:t1 ex:t3 ex:t1.
14 | ex:t1 ex:t3 ex:t2.
15 | ex:t1 ex:t3 ex:t3.
16 |
17 | ex:t2 ex:t1 ex:t1.
18 | ex:t2 ex:t1 ex:t2.
19 | ex:t2 ex:t1 ex:t3.
20 | ex:t2 ex:t2 ex:t1.
21 | ex:t2 ex:t2 ex:t2.
22 | ex:t2 ex:t2 ex:t3.
23 | ex:t2 ex:t3 ex:t1.
24 | ex:t2 ex:t3 ex:t2.
25 | ex:t2 ex:t3 ex:t3.
26 |
27 | ex:t3 ex:t1 ex:t1.
28 | ex:t3 ex:t1 ex:t2.
29 | ex:t3 ex:t1 ex:t3.
30 | ex:t3 ex:t2 ex:t1.
31 | ex:t3 ex:t2 ex:t2.
32 | ex:t3 ex:t2 ex:t3.
33 | ex:t3 ex:t3 ex:t1.
34 | ex:t3 ex:t3 ex:t2.
35 | ex:t3 ex:t3 ex:t3.
36 |
--------------------------------------------------------------------------------
/test/testexport.nt:
--------------------------------------------------------------------------------
1 | .
2 | .
3 | .
4 | .
5 | .
6 | .
7 | .
8 | .
9 | .
10 | .
11 | .
12 | .
13 | .
14 | .
15 | .
16 | .
17 | .
18 | .
19 | .
20 | .
21 | .
22 | .
23 | .
24 | .
25 | .
26 | .
27 | .
28 | .
29 |