@@ -277,36 +277,65 @@ describe('Store', () => {
277277
278278 describe ( 'removing matching quads for RDF-star' , ( ) => {
279279 let store ;
280- beforeEach ( ( ) => {
281- store = new Store ( [
282- new Quad ( new Quad ( new NamedNode ( 's1' ) , new NamedNode ( 'p1' ) , new NamedNode ( 'o1' ) ) , new NamedNode ( 'p2' ) , new NamedNode ( 'o1' ) ) ,
283- new Quad ( new Quad ( new NamedNode ( 's1' ) , new NamedNode ( 'p1' ) , new NamedNode ( 'o1' ) ) , new NamedNode ( 'p1' ) , new NamedNode ( 'o1' ) ) ,
284- new Quad ( new Quad ( new NamedNode ( 's1' ) , new NamedNode ( 'p1' ) , new NamedNode ( 'o1' ) ) , new NamedNode ( 'p2' ) , new NamedNode ( 'o2' ) ) ,
285- new Quad ( new Quad ( new NamedNode ( 's1' ) , new NamedNode ( 'p1' ) , new NamedNode ( 'o1' ) ) , new NamedNode ( 'p1' ) , new NamedNode ( 'o2' ) ) ,
286- new Quad ( new NamedNode ( 's1' ) , new NamedNode ( 'p1' ) , new NamedNode ( 'o2' ) ) ,
287- ] ) ;
280+ const allQuads = [
281+ new Quad ( new Quad ( new NamedNode ( 's1' ) , new NamedNode ( 'p1' ) , new NamedNode ( 'o1' ) ) , new NamedNode ( 'p2' ) , new NamedNode ( 'o1' ) ) ,
282+ new Quad ( new Quad ( new NamedNode ( 's1' ) , new NamedNode ( 'p1' ) , new NamedNode ( 'o1' ) ) , new NamedNode ( 'p1' ) , new NamedNode ( 'o1' ) ) ,
283+ new Quad ( new Quad ( new NamedNode ( 's1' ) , new NamedNode ( 'p1' ) , new NamedNode ( 'o1' ) ) , new NamedNode ( 'p2' ) , new NamedNode ( 'o2' ) ) ,
284+ new Quad ( new Quad ( new NamedNode ( 's1' ) , new NamedNode ( 'p1' ) , new NamedNode ( 'o1' ) ) , new NamedNode ( 'p1' ) , new NamedNode ( 'o2' ) ) ,
285+ new Quad ( new NamedNode ( 's1' ) , new NamedNode ( 'p1' ) , new NamedNode ( 'o2' ) ) ,
286+ ]
287+ before ( ( ) => {
288+ store = new Store ( allQuads ) ;
288289 } ) ;
289290
290- it ( 'should return the removed quads' ,
291- forResultStream ( shouldIncludeAll , ( ) => { return store . removeMatches ( null , 'p2' , 'o2' ) ; } ,
292- [ termToId ( new Quad ( new NamedNode ( 's1' ) , new NamedNode ( 'p1' ) , new NamedNode ( 'o1' ) ) ) , 'p2' , 'o2' ] ) ) ;
291+ it ( 'should start with the correct size' , ( ) => {
292+ store . size . should . eql ( 5 ) ;
293+ } ) ;
294+
295+ it ( 'should return the removed quads' , async ( ) => {
296+ const quads = await arrayifyStream ( store . removeMatches ( null , 'p2' , 'o2' ) ) ;
297+ quads . length . should . equal ( 1 ) ;
298+ quads [ 0 ] . equals (
299+ new Quad (
300+ new Quad ( new NamedNode ( 's1' ) , new NamedNode ( 'p1' ) , new NamedNode ( 'o1' ) ) ,
301+ new NamedNode ( 'p2' ) ,
302+ new NamedNode ( 'o2' )
303+ )
304+ ) . should . equal ( true ) ;
305+ } )
293306
294307 it ( 'should decrease the size' , ( ) => {
295- store . size . should . eql ( 5 ) ;
308+ store . size . should . eql ( 4 ) ;
296309 } ) ;
297310
298311 it ( 'should match RDF-star and normal quads at the same time' , done => {
299312 const stream = store . removeMatches ( null , 'p1' , 'o2' ) ;
300313 stream . on ( 'end' , ( ) => {
301- store . size . should . eql ( 3 ) ;
314+ store . size . should . eql ( 2 ) ;
302315 done ( ) ;
303316 } ) ;
304317 } ) ;
305318
306319 it ( 'should allow matching using a quad' , done => {
307320 const stream = store . removeMatches ( new Quad ( new NamedNode ( 's1' ) , new NamedNode ( 'p1' ) , new NamedNode ( 'o1' ) ) ) ;
308321 stream . on ( 'end' , ( ) => {
309- store . size . should . eql ( 1 ) ;
322+ store . size . should . eql ( 0 ) ;
323+ done ( ) ;
324+ } ) ;
325+ } ) ;
326+
327+ it ( 'should allow matching using a quad and only match against relevant quads' , done => {
328+ const s2 = new Store ( [
329+ ...allQuads ,
330+ new Quad (
331+ new Quad ( new NamedNode ( 's1' ) , new NamedNode ( 'p1' ) , new NamedNode ( 'o2' ) ) ,
332+ new NamedNode ( 'p1' ) ,
333+ new NamedNode ( 'o2' ) )
334+ ] ) ;
335+
336+ const stream = s2 . removeMatches ( new Quad ( new NamedNode ( 's1' ) , new NamedNode ( 'p1' ) , new NamedNode ( 'o1' ) ) ) ;
337+ stream . on ( 'end' , ( ) => {
338+ s2 . size . should . eql ( 2 ) ;
310339 done ( ) ;
311340 } ) ;
312341 } ) ;
0 commit comments