@@ -2,6 +2,8 @@ const assert = require("assert"),
22 redis = require ( "redis" ) ,
33 Label = require ( "../src/label" ) ,
44 RedisGraph = require ( "../src/graph" ) ;
5+ PathBuilder = require ( "./pathBuilder" ) ;
6+ deepEqual = require ( 'deep-equal' ) ;
57
68describe ( 'RedisGraphAPI Test' , function ( ) {
79 const api = new RedisGraph ( "social" ) ;
@@ -288,4 +290,44 @@ describe('RedisGraphAPI Test', function () {
288290 } )
289291 } )
290292
293+ it ( 'testPath' , ( done ) => {
294+ api . query ( "CREATE (:L1)-[:R1]->(:L1)-[:R1]->(:L1)" ) . then ( response => {
295+ api . query ( "MATCH p = (:L1)-[:R1*]->(:L1) RETURN p" ) . then ( response => {
296+ let node0 = new Node ( "L1" , { } ) ;
297+ node0 . setId ( 0 ) ;
298+ let node1 = new Node ( "L1" , { } ) ;
299+ node1 . setId ( 1 ) ;
300+ let node2 = new Node ( "L1" , { } ) ;
301+ node2 . setId ( 2 ) ;
302+ let edge01 = new Edge ( 0 , "R1" , 1 , { } ) ;
303+ edge01 . setId ( 0 ) ;
304+ let edge12 = new Edge ( 1 , "R1" , 2 , { } ) ;
305+ edge12 . setId ( 1 ) ;
306+
307+ let path01 = new PathBuilder ( ) . append ( node0 ) . append ( edge01 ) . append ( node1 ) . build ( ) ;
308+ let path12 = new PathBuilder ( ) . append ( node1 ) . append ( edge12 ) . append ( node2 ) . build ( ) ;
309+ let path02 = new PathBuilder ( ) . append ( node0 ) . append ( edge01 ) . append ( node1 ) . append ( edge12 ) . append ( node2 ) . build ( ) ;
310+
311+ let paths = new Set ( [ path01 , path12 , path02 ] ) ;
312+ while ( response . hasNext ( ) ) {
313+ let p = response . next ( ) . get ( "p" ) ;
314+ let pInPaths = false ;
315+ let path = null ;
316+ for ( pathsIterator = paths . values ( ) ; path = pathsIterator . next ( ) . value ; ) {
317+ if ( deepEqual ( p , path ) ) {
318+ pInPaths = true ;
319+ break ;
320+ }
321+ }
322+ assert ( pInPaths ) ;
323+ paths . delete ( path ) ;
324+ }
325+ assert . equal ( 0 , paths . size ) ;
326+ done ( ) ;
327+ } )
328+ } ) . catch ( error => {
329+ console . log ( error ) ;
330+ } )
331+ } )
332+
291333} ) ;
0 commit comments