public void Test_FdbQueryUnionExpression() { var expr1 = FdbQueryIndexLookupExpression <int, string> .Lookup( FooBarIndex, (x) => x == "world" ); var expr2 = FdbQueryIndexLookupExpression <int, long> .Lookup( FooBazIndex, (x) => x == 1234L ); var expr = FdbQueryExpressions.Union( expr1, expr2 ); Log(expr); Assert.That(expr, Is.Not.Null); Assert.That(expr.Terms, Is.Not.Null); Assert.That(expr.Terms.Count, Is.EqualTo(2)); Assert.That(expr.Terms[0], Is.SameAs(expr1)); Assert.That(expr.Terms[1], Is.SameAs(expr2)); Assert.That(expr.Type, Is.EqualTo(typeof(IAsyncEnumerable <int>))); Assert.That(expr.ElementType, Is.EqualTo(typeof(int))); Log(FdbQueryExpressions.ExplainSequence(expr)); }
public void Test_FdbQueryRangeExpression() { var expr = FdbQueryExpressions.Range( KeySelectorPair.Create(TuPack.ToKeyRange("Foo")) ); Log(expr); Assert.That(expr, Is.Not.Null); Assert.That(expr.Range.Begin.Key.ToString(), Is.EqualTo("<02>Foo<00><00>")); Assert.That(expr.Range.End.Key.ToString(), Is.EqualTo("<02>Foo<00><FF>")); Assert.That(expr.Type, Is.EqualTo(typeof(IAsyncEnumerable <KeyValuePair <Slice, Slice> >))); Assert.That(expr.ElementType, Is.EqualTo(typeof(KeyValuePair <Slice, Slice>))); Log(FdbQueryExpressions.ExplainSequence(expr)); }
public void Test_FdbQueryRangeExpression() { var expr = FdbQueryExpressions.Range( FdbTuple.Create("Foo").ToSelectorPair() ); Console.WriteLine(expr); Assert.That(expr, Is.Not.Null); Assert.That(expr.Range.Begin.Key.ToString(), Is.EqualTo("<02>Foo<00>")); Assert.That(expr.Range.End.Key.ToString(), Is.EqualTo("<02>Foo<01>")); Assert.That(expr.Type, Is.EqualTo(typeof(IFdbAsyncEnumerable <KeyValuePair <Slice, Slice> >))); Assert.That(expr.ElementType, Is.EqualTo(typeof(KeyValuePair <Slice, Slice>))); Console.WriteLine(FdbQueryExpressions.ExplainSequence(expr)); }
public void Test_FdbQueryFilterExpression() { var expr = FdbQueryExpressions.Filter( FdbQueryExpressions.RangeStartsWith(TuPack.EncodeKey("Hello", "World")), (kvp) => kvp.Value.ToInt32() % 2 == 0 ); Log(expr); Assert.That(expr, Is.Not.Null); Assert.That(expr.Source, Is.Not.Null.And.InstanceOf <FdbQueryRangeExpression>()); Assert.That(expr.Filter, Is.Not.Null); Assert.That(expr.Type, Is.EqualTo(typeof(IAsyncEnumerable <KeyValuePair <Slice, Slice> >))); Assert.That(expr.ElementType, Is.EqualTo(typeof(KeyValuePair <Slice, Slice>))); Log(FdbQueryExpressions.ExplainSequence(expr)); }
public void Test_FdbQueryTransformExpression() { var expr = FdbQueryExpressions.Transform( FdbQueryExpressions.RangeStartsWith(TuPack.EncodeKey("Hello", "World")), (kvp) => kvp.Value.ToUnicode() ); Log(expr); Assert.That(expr, Is.Not.Null); Assert.That(expr.Source, Is.Not.Null.And.InstanceOf <FdbQueryRangeExpression>()); Assert.That(expr.Transform, Is.Not.Null); Assert.That(expr.Type, Is.EqualTo(typeof(IAsyncEnumerable <string>))); Assert.That(expr.ElementType, Is.EqualTo(typeof(string))); Log(FdbQueryExpressions.ExplainSequence(expr)); }
public void Test_FdbQueryIndexLookupExpression_From_Lambda() { var expr = FdbQueryIndexLookupExpression <int, string> .Lookup( FooBarIndex, (bar) => bar == "world" ); Log(expr); Assert.That(expr, Is.Not.Null); Assert.That(expr.Index, Is.SameAs(FooBarIndex)); //TODO: .Index.Index does not look very nice Assert.That(expr.Operator, Is.EqualTo(ExpressionType.Equal)); Assert.That(expr.Value, Is.Not.Null); Assert.That(expr.Value, Is.InstanceOf <ConstantExpression>().With.Property("Value").EqualTo("world")); Assert.That(expr.Type, Is.EqualTo(typeof(IAsyncEnumerable <int>))); Assert.That(expr.ElementType, Is.EqualTo(typeof(int))); Log(FdbQueryExpressions.ExplainSequence(expr)); }