public void VertexWithIdLocalBothEKnowsCreatedLimit1() { using (GraphViewCommand command = new GraphViewCommand(graphConnection)) { string joshVertexId = this.ConvertToVertexId(command, "josh"); command.OutputFormat = OutputFormat.GraphSON; GraphTraversal2 traversal = command.g().V(joshVertexId).Local(GraphTraversal2.__().BothE("knows", "created").Limit(1)); List <string> result = traversal.Next(); dynamic dynamicResult = JsonConvert.DeserializeObject <dynamic>(result.FirstOrDefault()); Assert.AreEqual(1, dynamicResult.Count); dynamic edge = dynamicResult[0]; string edgeLabel = edge["label"].ToString(); double edgeWeight = double.Parse(edge["properties"]["weight"].ToString()); Assert.IsTrue(edgeLabel.Equals("created") || edgeLabel.Equals("knows")); Assert.IsTrue(edgeWeight.Equals(1.0D) || edgeWeight.Equals(0.4D)); } }
public void ChooseIfPersonThenUnionOutLangOutAndOutNameElseInLabelGroupCount() { using (GraphViewCommand GraphViewCommand = new GraphViewCommand(graphConnection)) { Assert.Fail(); var traversal = GraphViewCommand.g().V().Choose( GraphTraversal2.__().Label().Is("person"), GraphTraversal2.__().Union( GraphTraversal2.__().Out().Values("lang"), GraphTraversal2.__().Out().Values("name")), GraphTraversal2.__().In().Label()) .Group().By(GraphTraversal2.__().Count()); var result = traversal.Next(); // ASIDE: Below Assertions are incorrect, revisit this once we actually get the above traversal to work. var expectedResult = new List <string>() { "lop", "lop", "lop", "ripple", "java", "java", "java", "java", "josh", "vadas", "person", "person", "person", "person" }; AbstractGremlinTest.CheckUnOrderedResults <string>(expectedResult, result); } }
public void DedupInsideBy() { using (GraphViewCommand GraphViewCommand = new GraphViewCommand(graphConnection)) { // TODO: Deserialize fold() result // The result in graphson is "[{{\"label\": \"person\"}: [0.5, 1, 0.4, 0.2], {\"label\": \"software\"}: [0.4, 0.2, 1]}]", // which cannot be deserialized by Newtonsoft. // The exception Newtonsoft.Json.JsonReaderException: Invalid property identifier character: {. Path '[0]', line 1, position 2. var traversal = GraphViewCommand.g().V() .Group() .By("label") .By(GraphTraversal2.__().BothE() .Values("weight") .Dedup() .Fold()); var result = traversal.Next(); Assert.AreEqual(2, result.Count()); //CollectionAssert.AreEqual(new double[] { 0.2, 0.4, 1.0}, result["software"]); //CollectionAssert.AreEqual(new double[] { 0.2, 0.4, 0.5, 1.0 }, result["person"]); } }
public void get_g_V_localXbothE_weight_foldX_order_byXsumXlocalX_decrX() { using (GraphViewCommand command = new GraphViewCommand(graphConnection)) { command.OutputFormat = OutputFormat.GraphSON; GraphTraversal2 traversal = command.g().V().Local(GraphTraversal2.__().BothE().Values("weight").Fold()).Order().By(GraphTraversal2.__().Sum(GremlinKeyword.Scope.Local), GremlinKeyword.Order.Decr); dynamic results = JsonConvert.DeserializeObject <dynamic>(traversal.FirstOrDefault()); List <double> ans = new List <double>(); foreach (dynamic result in results) { double sum = 0; foreach (dynamic num in result) { sum += double.Parse(num.ToString()); } ans.Add(sum); } CheckOrderedResults(new [] { 2.4, 1.9, 1.0, 1.0, 0.5, 0.2 }, ans); } }
public void get_g_V_repeatXboth_simplePathX_timesX3X_path() { using (GraphViewCommand command = new GraphViewCommand(graphConnection)) { command.OutputFormat = OutputFormat.GraphSON; GraphTraversal2 traversal = command.g().V().Repeat(GraphTraversal2.__().Both().SimplePath()).Times(3).Path(); dynamic results = JsonConvert.DeserializeObject <dynamic>(traversal.FirstOrDefault()); Assert.AreEqual(18, results.Count); foreach (dynamic result in results) { HashSet <string> set = new HashSet <string>(); foreach (dynamic step in result["objects"]) { set.Add(step["id"].ToString()); } Assert.AreEqual(4, set.Count); set.Clear(); } } }
public void VerticesAsAOutCreatedAsBWhereAndAsBInNotAsAOutCreatedHasNameRippleSelectAB() { using (GraphViewCommand graphCommand = new GraphViewCommand(graphConnection)) { graphCommand.OutputFormat = OutputFormat.GraphSON; GraphTraversal2 traversal = graphCommand.g().V().As("a") .Out("created").As("b") .Where(GraphTraversal2.__().And( GraphTraversal2.__().As("b") .In(), GraphTraversal2.__().Not( GraphTraversal2.__().As("a") .Out("created") .Has("name", "ripple")))) .Select("a", "b"); List <string> result = traversal.Next(); dynamic dynamicResult = JsonConvert.DeserializeObject <dynamic>(result.FirstOrDefault()); Assert.AreEqual(2, dynamicResult.Count); List <string> ans = new List <string>(); foreach (dynamic temp in dynamicResult) { ans.Add("a," + temp["a"]["id"].ToString() + ";b," + temp["b"]["id"].ToString()); } string markoId = this.ConvertToVertexId(graphCommand, "marko"); string lopId = this.ConvertToVertexId(graphCommand, "lop"); string peterId = this.ConvertToVertexId(graphCommand, "peter"); List <string> expected = new List <string> { "a," + markoId + ";b," + lopId, "a," + peterId + ";b," + lopId, }; CheckUnOrderedResults(expected, ans); } }
public void DedupByAnonymousTraversal() { using (GraphViewCommand GraphViewCommand = new GraphViewCommand(graphConnection)) { // TODO: GremlinOrderOp.ModulateBy() is not implemented var traversal = GraphViewCommand.g().V() .Both() .Both() .Dedup() .By(GraphTraversal2.__() .OutE() .Count()) .Values("name"); var result = traversal.Next(); Assert.AreEqual(4, result.Count()); Assert.IsTrue(result.Contains("josh")); Assert.IsTrue(result.Contains("peter")); Assert.IsTrue(result.Contains("marko")); Assert.IsTrue(result.Contains("vadas") || result.Contains("ripple") || result.Contains("lop")); } }
public void HasLabelPersonProjectABByOutECountByAge() { using (GraphViewCommand graphCommand = new GraphViewCommand(graphConnection)) { graphCommand.OutputFormat = OutputFormat.GraphSON; GraphTraversal2 traversal = graphCommand.g().V().HasLabel("person") .Project("a", "b") .By(GraphTraversal2.__().OutE().Count()) .By("age"); dynamic result = JsonConvert.DeserializeObject <dynamic>(traversal.FirstOrDefault()); Assert.AreEqual(3, (int)result[0]["a"]); Assert.AreEqual(29, (int)result[0]["b"]); Assert.AreEqual(0, (int)result[1]["a"]); Assert.AreEqual(27, (int)result[1]["b"]); Assert.AreEqual(2, (int)result[2]["a"]); Assert.AreEqual(32, (int)result[2]["b"]); Assert.AreEqual(1, (int)result[3]["a"]); Assert.AreEqual(35, (int)result[3]["b"]); } }
public void ChooseIfPersonThenUnionOutLangOutAndOutNameElseInLabelGroupCount() { using (GraphViewCommand command = new GraphViewCommand(graphConnection)) { command.OutputFormat = OutputFormat.GraphSON; GraphTraversal2 traversal = command.g().V().Choose( GraphTraversal2.__().Label().Is("person"), GraphTraversal2.__().Union( GraphTraversal2.__().Out().Values("lang"), GraphTraversal2.__().Out().Values("name")), GraphTraversal2.__().In().Label()) .GroupCount(); dynamic result = JsonConvert.DeserializeObject <dynamic>(traversal.Next().FirstOrDefault()); Assert.AreEqual(4, (int)result[0]["java"]); Assert.AreEqual(1, (int)result[0]["ripple"]); Assert.AreEqual(4, (int)result[0]["person"]); Assert.AreEqual(1, (int)result[0]["vadas"]); Assert.AreEqual(1, (int)result[0]["josh"]); Assert.AreEqual(3, (int)result[0]["lop"]); } }
public void UnionRepeatUnionOutCreatedInCreatedTimes2RepeatUnionInCreatedOutCreatedTimes2LabelGroupCount() { using (GraphViewCommand GraphViewCommand = new GraphViewCommand(graphConnection)) { var traversal = GraphViewCommand.g().V().Union( GraphTraversal2.__().Repeat( GraphTraversal2.__().Union( GraphTraversal2.__().Out("created"), GraphTraversal2.__().In("created"))).Times(2), GraphTraversal2.__().Repeat( GraphTraversal2.__().Union( GraphTraversal2.__().In("created"), GraphTraversal2.__().Out("created"))).Times(2)) .Label().Group().By(GraphTraversal2.__().Count()); var result = traversal.Next(); // Assertions missing, revisit this once we actually get the above traversal to work. //assertEquals(12l, groupCount.get("software").longValue()); //assertEquals(20l, groupCount.get("person").longValue()); //assertEquals(2, groupCount.size()); } }
public void HasLabelSoftwareAsNameAsLanguageAsCreatorsSelectNameLanguageCreatorsByNameByLangByInCreatedValuesNameFoldOrderLocal() { using (GraphViewCommand graphCommand = new GraphViewCommand(graphConnection)) { graphCommand.OutputFormat = OutputFormat.GraphSON; var traversal = graphCommand.g().V().HasLabel("software").As("name").As("language").As("creators").Select("name", "language", "creators").By("name").By("lang"). By(GraphTraversal2.__().In("created").Values("name").Fold().Order(/*local*/)); // TODO: Implement this once above bugs are fixed. ////for (int i = 0; i < 2; i++) ////{ //// assertTrue(traversal.hasNext()); //// final Map< String, Object > map = traversal.next(); //// assertEquals(3, map.size()); //// final List< String > creators = (List<String>)map.get("creators"); //// final boolean isLop = "lop".equals(map.get("name")) && "java".equals(map.get("language")) && //// creators.size() == 3 && creators.get(0).equals("josh") && creators.get(1).equals("marko") && creators.get(2).equals("peter"); //// final boolean isRipple = "ripple".equals(map.get("name")) && "java".equals(map.get("language")) && //// creators.size() == 1 && creators.get(0).equals("josh"); //// assertTrue(isLop ^ isRipple); ////} } }
public void get_g_V_group_byXlabelX_byXname_order_byXdecrX_foldX() { using (GraphViewCommand command = new GraphViewCommand(graphConnection)) { command.OutputFormat = OutputFormat.GraphSON; GraphTraversal2 traversal = command.g().V().Group().By("label").By(GraphTraversal2.__().Values("name").Order().By(GremlinKeyword.Order.Decr).Fold()); dynamic results = JsonConvert.DeserializeObject <dynamic>(traversal.FirstOrDefault()); List <string> softwareList = new List <string>(); foreach (string item in results[0]["software"]) { softwareList.Add(item); } List <string> personList = new List <string>(); foreach (string item in results[0]["person"]) { personList.Add(item); } CheckOrderedResults(new [] { "ripple", "lop" }, softwareList); CheckOrderedResults(new [] { "vadas", "peter", "marko", "josh" }, personList); } }
public void VerticesAsAOutCreatedAsBInCreatedAsCBothKnowsBothKnowsAsDWhereCNotEqAOrEqDSelectABCD() { using (GraphViewCommand graphCommand = new GraphViewCommand(graphConnection)) { graphCommand.OutputFormat = OutputFormat.GraphSON; var traversal = graphCommand.g().V().As("a") .Out("created").As("b") .In("created").As("c") .Both("knows").Both("knows").As("d") .Where( GraphTraversal2.__().Where("c", Predicate.not(Predicate.eq("a"))) .And() .Where("c", Predicate.not(Predicate.eq("d")))) .Select("a", "b", "c", "d"); var result = traversal.Next(); dynamic dynamicResult = JsonConvert.DeserializeObject <dynamic>(result.FirstOrDefault()); Assert.AreEqual(4, dynamicResult.Count); // Skipping this validation until we can fix the multi-key select. } }
public void VerticesOrOutEKnowsHasLabelSoftwareOrHasAgeGTE35ValuesName() { using (GraphViewCommand graphCommand = new GraphViewCommand(graphConnection)) { GraphTraversal2 traversal = graphCommand.g().V() .Or( GraphTraversal2.__() .OutE("knows"), GraphTraversal2.__() .Where( GraphTraversal2.__() .Or( GraphTraversal2.__() .Has("label", "software"), GraphTraversal2.__() .Has("age", Predicate.gte(35))))) .Values("name"); List <string> result = traversal.Next(); CheckUnOrderedResults(new List <string> { "marko", "ripple", "lop", "peter" }, result); } }
public void get_g_V_group_byXlabelX_byXbothE_groupXaX_byXlabelX_byXweight_sumX_weight_sumX() { using (GraphViewCommand command = new GraphViewCommand(graphConnection)) { command.OutputFormat = OutputFormat.GraphSON; GraphTraversal2 traversal = command.g() .V() .Group() .By("label") .By( GraphTraversal2.__() .BothE() .Group("a") .By("label") .By(GraphTraversal2.__().Values("weight").Sum()) .Values("weight") .Sum()); dynamic results = JsonConvert.DeserializeObject <dynamic>(traversal.FirstOrDefault()); Assert.AreEqual(1, results.Count); Assert.AreEqual(2.0, double.Parse(results[0]["software"].ToString())); Assert.AreEqual(5.0, double.Parse(results[0]["person"].ToString())); } }
public void get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_maxX() { using (GraphViewCommand command = new GraphViewCommand(graphConnection)) { command.OutputFormat = OutputFormat.GraphSON; GraphTraversal2 traversal = command.g().V().HasLabel("software").Group().By("name").By(GraphTraversal2.__().BothE().Values("weight").Max()); dynamic results = JsonConvert.DeserializeObject <dynamic>(traversal.FirstOrDefault()); foreach (dynamic result in results) { Assert.IsTrue(1.0 == double.Parse(result["ripple"].ToString()) && 0.4 == double.Parse(result["lop"].ToString())); } } }
public void get_g_V_hasXlangX_group_byXlangX_byXcountX() { using (GraphViewCommand command = new GraphViewCommand(graphConnection)) { command.OutputFormat = OutputFormat.GraphSON; GraphTraversal2 traversal = command.g().V().Has("lang").Group().By("lang").By(GraphTraversal2.__().Count()); dynamic results = JsonConvert.DeserializeObject <dynamic>(traversal.FirstOrDefault()); Assert.AreEqual(1, results.Count); Assert.AreEqual(2, int.Parse(results[0]["java"].ToString())); } }
public void get_g_V_repeatXunionXoutXknowsX_groupXaX_byXageX__outXcreatedX_groupXbX_byXnameX_byXcountXX_groupXaX_byXnameXX_timesX2X_capXa_bX() { using (GraphViewCommand command = new GraphViewCommand(graphConnection)) { command.OutputFormat = OutputFormat.GraphSON; GraphTraversal2 traversal = command.g() .V() .Repeat(GraphTraversal2.__() .Union(GraphTraversal2.__().Out("knows").Group("a").By("age"), GraphTraversal2.__().Out("created").Group("b").By("name").By(GraphTraversal2.__().Count())) .Group("a").By("name")) .Times(2) .Cap("a", "b"); dynamic results = JsonConvert.DeserializeObject <dynamic>(traversal.FirstOrDefault()); dynamic mapA = results[0]["a"]; Assert.AreEqual(1, mapA[32].Count); Assert.AreEqual(this.ConvertToVertexId(command, "josh"), mapA[32][0]["id"].ToString()); Assert.AreEqual(1, mapA[27].Count); Assert.AreEqual(this.ConvertToVertexId(command, "vadas"), mapA[27][0]["id"].ToString()); Assert.AreEqual(2, mapA["ripple"].Count); Assert.AreEqual(this.ConvertToVertexId(command, "ripple"), mapA["ripple"][0]["id"].ToString()); Assert.AreEqual(this.ConvertToVertexId(command, "ripple"), mapA["ripple"][1]["id"].ToString()); Assert.AreEqual(1, mapA["vadas"].Count); Assert.AreEqual(this.ConvertToVertexId(command, "vadas"), mapA["vadas"][0]["id"].ToString()); Assert.AreEqual(1, mapA["josh"].Count); Assert.AreEqual(this.ConvertToVertexId(command, "josh"), mapA["josh"][0]["id"].ToString()); Assert.AreEqual(4, mapA["lop"].Count); Assert.AreEqual(this.ConvertToVertexId(command, "lop"), mapA["lop"][0]["id"].ToString()); Assert.AreEqual(this.ConvertToVertexId(command, "lop"), mapA["lop"][1]["id"].ToString()); Assert.AreEqual(this.ConvertToVertexId(command, "lop"), mapA["lop"][2]["id"].ToString()); Assert.AreEqual(this.ConvertToVertexId(command, "lop"), mapA["lop"][3]["id"].ToString()); dynamic mapB = results[0]["b"]; Assert.AreEqual(2, int.Parse(mapB["ripple"].ToString())); Assert.AreEqual(4, int.Parse(mapB["lop"].ToString())); } }
public void get_g_V_repeatXout_groupXaX_byXnameX_byXcountX_timesX2X_capXaX() { using (GraphViewCommand command = new GraphViewCommand(graphConnection)) { command.OutputFormat = OutputFormat.GraphSON; GraphTraversal2 traversal = command.g().V().Repeat(GraphTraversal2.__().Out().Group("a").By("name").By(GraphTraversal2.__().Count())).Times(2).Cap("a"); dynamic results = JsonConvert.DeserializeObject <dynamic>(traversal.FirstOrDefault()); Assert.AreEqual(1, results.Count); Assert.AreEqual(2, int.Parse(results[0]["ripple"].ToString())); Assert.AreEqual(1, int.Parse(results[0]["vadas"].ToString())); Assert.AreEqual(1, int.Parse(results[0]["josh"].ToString())); Assert.AreEqual(4, int.Parse(results[0]["lop"].ToString())); } }
public void get_g_V_both_groupCountXaX_byXlabelX_asXbX_barrier_whereXselectXaX_selectXsoftwareX_isXgtX2XXX_selectXbX_name() { using (GraphViewCommand command = new GraphViewCommand(graphConnection)) { GraphTraversal2 traversal = command.g().V().Both().GroupCount("a").By("label").As("b").Barrier().Where(GraphTraversal2.__().Select("a").Select("software").Is(Predicate.gt(2))).Select("b").Values("name"); List <string> results = traversal.Next(); CheckUnOrderedResults(new [] { "lop", "lop", "lop", "vadas", "josh", "josh", "josh", "marko", "marko", "marko", "peter", "ripple" }, results); } }
public void VerticesUntilOutOutRepeatInAsAInAsBSelectABByName() { using (GraphViewCommand graphCommand = new GraphViewCommand(graphConnection)) { var traversal = graphCommand.g().V().Until(GraphTraversal2.__().Out().Out()).Repeat(GraphTraversal2.__().In().As("a").In().As("b")).Select("a", "b").By("name"); // Skipping asserts until we fix the above bug. ////Map<String, String> result = traversal.next(); ////assertEquals(2, result.size()); ////assertEquals("josh", result.get("a")); ////assertEquals("marko", result.get("b")); ////result = traversal.next(); ////assertEquals(2, result.size()); ////assertEquals("josh", result.get("a")); ////assertEquals("marko", result.get("b")); } }
public void get_g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_tailXlocalX() { using (GraphViewCommand command = new GraphViewCommand(graphConnection)) { GraphTraversal2 traversal = command.g().V().As("a").Out().As("a").Out().As("a").Select("a").By(GraphTraversal2.__().Unfold().Values("name").Fold()).Tail(GremlinKeyword.Scope.Local); List <string> results = traversal.Next(); CheckUnOrderedResults(new[] { "ripple", "lop" }, results); } }
public void get_g_V_hasXname_markoX_propertyXfriendWeight_outEXknowsX_weight_sum__acl_privateX() { using (GraphViewCommand command = new GraphViewCommand(graphConnection)) { command.OutputFormat = OutputFormat.GraphSON; GraphTraversal2 traversal = command.g().V().Has("name", "marko").Property("friendWeight", GraphTraversal2.__().OutE("knows").Values("weight").Sum(), "acl", "private"); dynamic results = JsonConvert.DeserializeObject <dynamic>(traversal.FirstOrDefault()); } }
public void VerticesAsAOutKnowsAsBLocalSelectABByName() { using (GraphViewCommand graphCommand = new GraphViewCommand(graphConnection)) { var traversal = graphCommand.g().V().As("a").Out("knows").As("b").Local(GraphTraversal2.__().Select("a", "b").By("name")); // Skipping asserts until we fix the above bugs. } }
public void get_g_VX1X_addVXanimalX_propertyXage_selectXaX_byXageXX_propertyXname_puppyX() { using (GraphViewCommand command = new GraphViewCommand(graphConnection)) { command.OutputFormat = OutputFormat.GraphSON; string markoId = this.ConvertToVertexId(command, "marko"); GraphTraversal2 traversal = command.g().V(markoId).As("a").AddV("animal").Property("age", GraphTraversal2.__().Select("a").By("age")).Property("name", "puppy"); dynamic results = JsonConvert.DeserializeObject <dynamic>(traversal.FirstOrDefault()); } }
public void get_g_V_unionXrepeatXoutX_timesX2X_groupCountXmX_byXlangXX__repeatXinX_timesX2X_groupCountXmX_byXnameXX_capXmX() { using (GraphViewCommand command = new GraphViewCommand(graphConnection)) { command.OutputFormat = OutputFormat.GraphSON; GraphTraversal2 traversal = command.g().V().Union(GraphTraversal2.__().Repeat(GraphTraversal2.__().Out()).Times(2).GroupCount("m").By("lang"), GraphTraversal2.__().Repeat(GraphTraversal2.__().In()).Times(2).GroupCount("m").By("name")).Cap("m"); dynamic results = JsonConvert.DeserializeObject <dynamic>(traversal.FirstOrDefault()); Assert.AreEqual(2, int.Parse(results[0]["java"].ToString())); Assert.AreEqual(2, int.Parse(results[0]["marko"].ToString())); } }
public void get_g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXlimitXlocal_0XX_tailXlocal_1X() { using (GraphViewCommand command = new GraphViewCommand(graphConnection)) { GraphTraversal2 traversal = command.g().V().As("a").Out().As("a").Out().As("a").Select("a").By(GraphTraversal2.__().Limit(GremlinKeyword.Scope.Local, 0)).Tail(GremlinKeyword.Scope.Local, 1); List <string> results = traversal.Next(); Assert.AreEqual(0, results.Count); } }
public void get_g_V_unionXoutXknowsX__outXcreatedX_inXcreatedXX_groupCount_selectXvaluesX_unfold_sum() { using (GraphViewCommand command = new GraphViewCommand(graphConnection)) { GraphTraversal2 traversal = command.g().V().Union(GraphTraversal2.__().Out("knows"), GraphTraversal2.__().Out("created").In("created")).GroupCount().Select(GremlinKeyword.Column.Values).Unfold().Sum(); List <string> results = traversal.Next(); Assert.AreEqual(12, int.Parse(results[0])); } }
public void HasVertexIdTimes2RepeatOutValuesName() { using (GraphViewCommand command = new GraphViewCommand(graphConnection)) { string vertexId = this.ConvertToVertexId(command, "marko"); GraphTraversal2 traversal = command.g().V().HasId(vertexId).Times(2).Repeat(GraphTraversal2.__().Out()).Values("name"); List <string> results = traversal.Next(); CheckUnOrderedResults(new string[] { "lop", "ripple" }, results); } }
public void VerticesAsAOutECreatedAsBInVAsCInCreatedAsDWhereALtBOrGtCAndNeqDByAgeByWeightByInCreatedValuesAgeMinSelectACDByName() { using (GraphViewCommand graphCommand = new GraphViewCommand(graphConnection)) { graphCommand.OutputFormat = OutputFormat.GraphSON; GraphTraversal2 traversal = graphCommand.g().V().As("a").OutE("created").As("b").InV().As("c").In("created").As("d").Where("a", Predicate.lt("b").Or(Predicate.gt("c")).And(Predicate.neq("d"))).By("age").By("weight").By(GraphTraversal2.__().In("created").Values("age").Min()).Select("a", "c", "d").By("name"); List <string> result = traversal.Next(); dynamic dynamicResult = JsonConvert.DeserializeObject <dynamic>(result.FirstOrDefault()); Assert.AreEqual(4, dynamicResult.Count); List <string> ans = new List <string>(); foreach (dynamic temp in dynamicResult) { ans.Add("a," + temp["a"].ToString() + ";c," + temp["c"].ToString() + ";d," + temp["d"].ToString()); } List <string> expected = new List <string> { "a,josh;c,lop;d,marko", "a,josh;c,lop;d,peter", "a,peter;c,lop;d,marko", "a,peter;c,lop;d,josh", }; CheckUnOrderedResults(expected, ans); } }