@@ -215,3 +215,44 @@ func TestArray(t *testing.T) {
215215 assert .Equal (t , b .GetProperty ("age" ), resB .GetProperty ("age" ), "Unexpected property value." )
216216 assert .Equal (t , b .GetProperty ("array" ), resB .GetProperty ("array" ), "Unexpected property value." )
217217}
218+
219+ func TestPath (t * testing.T ) {
220+ createGraph ()
221+ q := "MATCH p = (:Person)-[:Visited]->(:Country) RETURN p"
222+ res , err := graph .Query (q )
223+ if err != nil {
224+ t .Error (err )
225+ }
226+
227+ assert .Equal (t , len (res .results ), 1 , "expecting 1 result record" )
228+
229+ res .Next ()
230+ r := res .Record ()
231+
232+ p , ok := r .GetByIndex (0 ).(Path )
233+ assert .True (t , ok , "First column should contain path." )
234+
235+ assert .Equal (t , 2 , p .NodesCount (), "Path should contain two nodes" )
236+ assert .Equal (t , 1 , p .EdgeCount (), "Path should contain one edge" )
237+
238+ s := p .FirstNode ()
239+ e := p .GetEdge (0 )
240+ d := p .LastNode ()
241+
242+ assert .Equal (t , s .Label , "Person" , "Node should be of type 'Person'" )
243+ assert .Equal (t , e .Relation , "Visited" , "Edge should be of relation type 'Visited'" )
244+ assert .Equal (t , d .Label , "Country" , "Node should be of type 'Country'" )
245+
246+ assert .Equal (t , len (s .Properties ), 4 , "Person node should have 4 properties" )
247+
248+ assert .Equal (t , s .GetProperty ("name" ), "John Doe" , "Unexpected property value." )
249+ assert .Equal (t , s .GetProperty ("age" ), 33 , "Unexpected property value." )
250+ assert .Equal (t , s .GetProperty ("gender" ), "male" , "Unexpected property value." )
251+ assert .Equal (t , s .GetProperty ("status" ), "single" , "Unexpected property value." )
252+
253+ assert .Equal (t , e .GetProperty ("year" ), 2017 , "Unexpected property value." )
254+
255+ assert .Equal (t , d .GetProperty ("name" ), "Japan" , "Unexpected property value." )
256+ assert .Equal (t , d .GetProperty ("population" ), 126800000 , "Unexpected property value." )
257+
258+ }
0 commit comments