public void DebugQueryTextShouldReturnExpandedText() { var gremlinQuery = new GremlinQuery( null, "g[p0][p1][p2][p3][p4][p5][p6][p7][p8][p9][p10][p11]", new Dictionary<string, object> { { "p0", "val00" }, { "p1", "val01" }, { "p2", "val02" }, { "p3", "val03" }, { "p4", "val04" }, { "p5", "val05" }, { "p6", "val06" }, { "p7", "val07" }, { "p8", "val08" }, { "p9", "val09" }, { "p10", "val10" }, { "p11", "val11" }, }, null); var enumerable = new GremlinNodeEnumerable<object>(gremlinQuery); Assert.AreEqual( "g['val00']['val01']['val02']['val03']['val04']['val05']['val06']['val07']['val08']['val09']['val10']['val11']", enumerable.DebugQueryText); }
public void FormatGremlinFilterShouldReturnEmptyStringForNoCaseSensititiveFilters() { var filters = new List<Filter>(); var baseQuery = new GremlinQuery(null, null, new Dictionary<string, object>(), new List<string>()); var filter = FilterFormatters.FormatGremlinFilter(filters, StringComparison.Ordinal, baseQuery); Assert.AreEqual(string.Empty, filter.FilterText); }
public void MoveNextShouldReturnFalseAfterLastRecordOnFirstPageIfThereAreNoFurtherPages() { var pages = new Queue<IEnumerable<int>>(new[] { Enumerable.Range(0, 100), Enumerable.Empty<int>() }); var loadedQueries = new List<IGremlinQuery>(); Func<IGremlinQuery, IEnumerable<int>> loadCallback = q => { loadedQueries.Add(q); return pages.Dequeue(); }; var baseQuery = new GremlinQuery( null, "g.v(p0).outV", new Dictionary<string, object> { { "p0", 0 } }, null); var enumerator = new GremlinPagedEnumerator<int>(loadCallback, baseQuery); for (var i = 0; i < 100; i++) enumerator.MoveNext(); Assert.IsFalse(enumerator.MoveNext()); }
public void FormatGremlinFilterShouldReturnIndexerSyntaxForSingleCaseInsensititiveGreaterThanFilterWithLongValue() { var filters = new List<Filter> { new Filter { PropertyName= "Foo", Value = long.MaxValue, ExpressionType = ExpressionType.GreaterThan}, }; var baseQuery = new GremlinQuery(null, null, new Dictionary<string, object>(), new List<string>()); var filter = FilterFormatters.FormatGremlinFilter(filters, StringComparison.OrdinalIgnoreCase, baseQuery); Assert.AreEqual(".filter{ it[p0] > p1 }", filter.FilterText); Assert.AreEqual("Foo", filter.FilterParameters["p0"]); Assert.AreEqual(9223372036854775807, filter.FilterParameters["p1"]); }
public void FormatGremlinFilterShouldReturnIndexerSyntaxForSingleCaseSensititiveEqualFilterWithIntValue() { var filters = new List<Filter> { new Filter { PropertyName= "Foo", Value = 123, ExpressionType = ExpressionType.Equal } }; var baseQuery = new GremlinQuery(null, null, new Dictionary<string, object>(), new List<string>()); var filter = FilterFormatters.FormatGremlinFilter(filters, StringComparison.Ordinal, baseQuery); Assert.AreEqual(".filter{ it[p0] == p1 }", filter.FilterText); Assert.AreEqual("Foo", filter.FilterParameters["p0"]); Assert.AreEqual(123, filter.FilterParameters["p1"]); }
public void FormatGremlinFilterShouldSupportGuidTypeInNotEqualsExpression() { const string guidString = "1a4e451c-aa87-4388-9b53-5d00b05ac728"; var guidValue = Guid.Parse(guidString); var filters = new List<Filter> { new Filter { PropertyName= "Foo", Value = guidValue, ExpressionType = ExpressionType.NotEqual } }; var baseQuery = new GremlinQuery(null, null, new Dictionary<string, object>(), new List<string>()); var filter = FilterFormatters.FormatGremlinFilter(filters, StringComparison.Ordinal, baseQuery); Assert.AreEqual(".filter{ it[p0] != p1 }", filter.FilterText); Assert.AreEqual("Foo", filter.FilterParameters["p0"]); Assert.AreEqual(guidString, filter.FilterParameters["p1"].ToString()); }
public void FormatGremlinFilterShouldReturnIndexerSyntaxForMultipleCaseSensititiveEqualFiltersWithStringValues() { var filters = new List<Filter> { new Filter { PropertyName= "Foo", Value = "Bar", ExpressionType = ExpressionType.Equal }, new Filter { PropertyName= "Baz", Value = "Qak", ExpressionType = ExpressionType.Equal } }; var baseQuery = new GremlinQuery(null, null, new Dictionary<string, object>(), new List<string>()); var filter = FilterFormatters.FormatGremlinFilter(filters, StringComparison.Ordinal, baseQuery); Assert.AreEqual(".filter{ it[p0].equals(p1) && it[p2].equals(p3) }", filter.FilterText); Assert.AreEqual("Foo", filter.FilterParameters["p0"]); Assert.AreEqual("Bar", filter.FilterParameters["p1"]); Assert.AreEqual("Baz", filter.FilterParameters["p2"]); Assert.AreEqual("Qak", filter.FilterParameters["p3"]); }
public void ShouldNotLoadAnythingUntilEnumerated() { var loadedQueries = new List<IGremlinQuery>(); Func<IGremlinQuery, IEnumerable<object>> loadCallback = q => { loadedQueries.Add(q); return new object[0]; }; var baseQuery = new GremlinQuery( null, "g.v(p0).outV", new Dictionary<string, object> { { "p0", 0 } }, null); new GremlinPagedEnumerator<object>(loadCallback, baseQuery); Assert.AreEqual(0, loadedQueries.Count()); }
public void MoveNextShouldReturnFalseOnFirstCallIfThereAreNoResults() { var results = new int[0]; var loadedQueries = new List<IGremlinQuery>(); Func<IGremlinQuery, IEnumerable<int>> loadCallback = q => { loadedQueries.Add(q); return results; }; var baseQuery = new GremlinQuery( null, "g.v(p0).outV", new Dictionary<string, object> { { "p0", 0 } }, null); var enumerator = new GremlinPagedEnumerator<int>(loadCallback, baseQuery); Assert.IsFalse(enumerator.MoveNext()); }
public void ShouldLoadFirstPageOfResultsWithFirstEnumeration() { var loadedQueries = new List<IGremlinQuery>(); Func<IGremlinQuery, IEnumerable<object>> loadCallback = q => { loadedQueries.Add(q); return new object[0]; }; var baseQuery = new GremlinQuery( null, "g.v(p0).outV", new Dictionary<string, object> { { "p0", 0 } }, null); var enumerator = new GremlinPagedEnumerator<object>(loadCallback, baseQuery); enumerator.MoveNext(); Assert.AreEqual(1, loadedQueries.Count()); Assert.AreEqual("g.v(p0).outV.drop(p1).take(p2)._()", loadedQueries[0].QueryText); Assert.AreEqual(0, loadedQueries[0].QueryParameters["p1"]); Assert.AreEqual(100, loadedQueries[0].QueryParameters["p2"]); }
public void ShouldEnumerateOverFirstPageOfResults() { var results = Enumerable.Range(0, 100).ToArray(); var loadedQueries = new List<IGremlinQuery>(); Func<IGremlinQuery, IEnumerable<int>> loadCallback = q => { loadedQueries.Add(q); return results; }; var baseQuery = new GremlinQuery( null, "g.v(p0).outV", new Dictionary<string, object> { { "p0", 0 } }, null); var enumerator = new GremlinPagedEnumerator<int>(loadCallback, baseQuery); for (var i = 0; i < 100; i++) { Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(results[i], enumerator.Current); } }
public void ShouldLoadSecondPageWhenCallingMoveNextAfterLastRecordOfFirstPage() { var results = Enumerable.Range(0, 100).ToArray(); var loadedQueries = new List<IGremlinQuery>(); Func<IGremlinQuery, IEnumerable<int>> loadCallback = q => { loadedQueries.Add(q); return results; }; var baseQuery = new GremlinQuery( null, "g.v(p0).outV", new Dictionary<string, object> { { "p0", 0 } }, null); var enumerator = new GremlinPagedEnumerator<int>(loadCallback, baseQuery); for (var i = 0; i < 100; i++) { enumerator.MoveNext(); } enumerator.MoveNext(); Assert.AreEqual(2, loadedQueries.Count()); Assert.AreEqual("g.v(p0).outV.drop(p1).take(p2)._()", loadedQueries[0].QueryText); Assert.AreEqual(0, loadedQueries[0].QueryParameters["p1"]); Assert.AreEqual(100, loadedQueries[0].QueryParameters["p2"]); Assert.AreEqual("g.v(p0).outV.drop(p1).take(p2)._()", loadedQueries[1].QueryText); Assert.AreEqual(100, loadedQueries[1].QueryParameters["p1"]); Assert.AreEqual(100, loadedQueries[1].QueryParameters["p2"]); }
public void FormatGremlinFilterShouldThrowNotSupportedExceptionForExpressionsThatAreNotRegisteredInFilterTypesToCompareNulls() { var filters = new List<Filter> { new Filter { PropertyName= "Foo", Value = null, ExpressionType = ExpressionType.Divide }, }; var baseQuery = new GremlinQuery(null, null, new Dictionary<string, object>(), new List<string>()); FilterFormatters.FormatGremlinFilter(filters, StringComparison.OrdinalIgnoreCase, baseQuery); }
public void FormatGremlinFilterShouldThrowNotSupportedExceptionForCaseInsensitiveEqualFilterOfUnsupportedType() { var filters = new List<Filter> { new Filter { PropertyName= "Foo", Value = new ThreadStaticAttribute(), ExpressionType = ExpressionType.Equal }, }; var baseQuery = new GremlinQuery(null, null, new Dictionary<string, object>(), new List<string>()); FilterFormatters.FormatGremlinFilter(filters, StringComparison.OrdinalIgnoreCase, baseQuery); }
public void FormatGremlinFilterShouldReturnIndexerSyntaxForSingleCaseInsensititiveNotEqualFilterWithEnumValue() { var filters = new List<Filter> { new Filter { PropertyName= "Foo", Value = EnumForTesting.Bar, ExpressionType = ExpressionType.NotEqual } }; var baseQuery = new GremlinQuery(null, null, new Dictionary<string, object>(), new List<string>()); var filter = FilterFormatters.FormatGremlinFilter(filters, StringComparison.OrdinalIgnoreCase, baseQuery); Assert.AreEqual(".filter{ !it[p0].equalsIgnoreCase(p1) }", filter.FilterText); Assert.AreEqual("Foo", filter.FilterParameters["p0"]); Assert.AreEqual("Bar", filter.FilterParameters["p1"]); }
public void FormatGremlinFilterShouldReturnIteratorSyntaxForSingleCaseSensititiveNotEqualFilterMaxLongValue() { var filters = new List<Filter> { new Filter { PropertyName = "Foo", Value = 9223372036854775807, ExpressionType = ExpressionType.NotEqual }, }; var baseQuery = new GremlinQuery(null, null, new Dictionary<string, object>(), new List<string>()); var filter = FilterFormatters.FormatGremlinFilter(filters, StringComparison.Ordinal, baseQuery); Assert.AreEqual(".filter{ it[p0] != p1 }", filter.FilterText); Assert.AreEqual("Foo", filter.FilterParameters["p0"]); Assert.AreEqual(9223372036854775807, filter.FilterParameters["p1"]); }
public void FormatGremlinFilterShouldThrowNotSupportedExceptionForCaseSensitiveEqualFilterOfUnsupportedType() { var filters = new List<Filter> { new Filter { PropertyName= "Foo", Value = new ThreadStaticAttribute(), ExpressionType = ExpressionType.Equal }, }; var baseQuery = new GremlinQuery(null, null, new Dictionary<string, object>(), new List<string>()); var ex = Assert.Throws<NotSupportedException>(() => FilterFormatters.FormatGremlinFilter(filters, StringComparison.Ordinal, baseQuery)); Assert.AreEqual("One or more of the supplied filters is of an unsupported type or expression. Unsupported filters were: Foo of type System.ThreadStaticAttribute, with expression Equal", ex.Message); }
public void FormatGremlinFilterShouldThrowNotSupportedExceptionForExpressionsThatAreNotRegisteredInFilterTypesToCompareNulls() { var filters = new List<Filter> { new Filter { PropertyName= "Foo", Value = null, ExpressionType = ExpressionType.Divide }, }; var baseQuery = new GremlinQuery(null, null, new Dictionary<string, object>(), new List<string>()); var ex = Assert.Throws<NotSupportedException>(() => FilterFormatters.FormatGremlinFilter(filters, StringComparison.OrdinalIgnoreCase, baseQuery)); Assert.AreEqual("One or more of the supplied filters is of an unsupported type or expression. Unsupported filters were: Foo with null value and expression Divide", ex.Message); }
public void ShouldEnumerateOverMultiplePagesOfResults(int pageCount) { var pages = new Queue<IEnumerable<int>>(); for (var pageIndex = 0; pageIndex < pageCount; pageIndex++) { pages.Enqueue(Enumerable.Range(pageIndex * 100, 100)); } var loadedQueries = new List<IGremlinQuery>(); Func<IGremlinQuery, IEnumerable<int>> loadCallback = q => { loadedQueries.Add(q); return pages.Dequeue(); }; var baseQuery = new GremlinQuery( null, "g.v(p0).outV", new Dictionary<string, object> { { "p0", 0 } }, null); var enumerator = new GremlinPagedEnumerator<int>(loadCallback, baseQuery); for (var i = 0; i < pageCount * 100; i++) { Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(i, enumerator.Current); } }