@@ -295,3 +295,62 @@ func TestCreateIndex(t *testing.T) {
295295 _ , err = graph .Query ("DROP INDEX ON :user(name)" )
296296 assert .Equal (t , err .Error (), "ERR Unable to drop index on :user(name): no such index." )
297297}
298+
299+ func TestQueryStatistics (t * testing.T ) {
300+ graph .Flush ()
301+ err := graph .Delete ()
302+ assert .Nil (t ,err )
303+
304+ q := "CREATE (:Person{name:'a',age:32,array:[0,1,2]})"
305+ res , err := graph .Query (q )
306+ assert .Nil (t ,err )
307+
308+ assert .Equal (t , 1 , res .NodesCreated (), "Expecting 1 node created" )
309+ assert .Equal (t , 0 , res .NodesDeleted (), "Expecting 0 nodes deleted" )
310+ assert .Greater (t , res .InternalExecutionTime (),0.0 , "Expecting internal execution time not to be 0.0" )
311+ assert .Equal (t , true , res .Empty (), "Expecting empty resultset" )
312+
313+ res ,err = graph .Query ("MATCH (n) DELETE n" )
314+ assert .Nil (t ,err )
315+ assert .Equal (t , 1 , res .NodesDeleted (), "Expecting 1 nodes deleted" )
316+
317+ // Create 2 nodes connect via a single edge.
318+ japan := NodeNew ("Country" , "j" , nil )
319+ john := NodeNew ("Person" , "p" , nil )
320+ edge := EdgeNew ("Visited" , john , japan , nil )
321+
322+ // Set node properties.
323+ john .SetProperty ("name" , "John Doe" )
324+ john .SetProperty ("age" , 33 )
325+ john .SetProperty ("gender" , "male" )
326+ john .SetProperty ("status" , "single" )
327+
328+ japan .SetProperty ("name" , "Japan" )
329+ japan .SetProperty ("population" , 126800000 )
330+
331+ edge .SetProperty ("year" , 2017 )
332+
333+ // Introduce entities to graph.
334+ graph .AddNode (john )
335+ graph .AddNode (japan )
336+ graph .AddEdge (edge )
337+
338+ // Flush graph to DB.
339+ res , err = graph .Commit ()
340+ assert .Nil (t ,err )
341+ assert .Equal (t , 2 , res .NodesCreated (), "Expecting 2 node created" )
342+ assert .Equal (t , 0 , res .NodesDeleted (), "Expecting 0 nodes deleted" )
343+ assert .Equal (t , 7 , res .PropertiesSet (), "Expecting 7 properties set" )
344+ assert .Equal (t , 1 , res .RelationshipsCreated (), "Expecting 1 relationships created" )
345+ assert .Equal (t , 0 , res .RelationshipsDeleted (), "Expecting 0 relationships deleted" )
346+ assert .Greater (t , res .InternalExecutionTime (),0.0 , "Expecting internal execution time not to be 0.0" )
347+ assert .Equal (t , true , res .Empty (), "Expecting empty resultset" )
348+ q = "MATCH p = (:Person)-[:Visited]->(:Country) RETURN p"
349+ res , err = graph .Query (q )
350+ assert .Nil (t ,err )
351+ assert .Equal (t , len (res .results ), 1 , "expecting 1 result record" )
352+ assert .Equal (t , false , res .Empty (), "Expecting resultset to have records" )
353+ res ,err = graph .Query ("MATCH ()-[r]-() DELETE r" )
354+ assert .Nil (t ,err )
355+ assert .Equal (t , 1 , res .RelationshipsDeleted (), "Expecting 1 relationships deleted" )
356+ }
0 commit comments