public void KVFieldExpressionSerializeTest() { var field = new Expressions.KVFieldExpression(Consts.EMPLOEE_NAME_ID, EntityFieldType.String); //var value = new Expressions.PrimitiveExpression("AAAAA1"); var exp = field == "AAAAA1"; var data = SerializeExpression(exp); output.WriteLine($"长度: {data.Length}"); //15 output.WriteLine($"内容: {StringHelper.ToHexString(data)}"); //3F4E8000010040100C414141414131 }
public void NullableTest() { var f1 = new Expressions.KVFieldExpression(1, EntityFieldType.Int32); var f2 = new Expressions.KVFieldExpression(2, EntityFieldType.Guid); Expressions.Expression exp = f1 > 5 & f2 == null; var expString1 = exp.ToString(); var linqExp = exp.ToLinqExpression(TestHelper.GetMockExpressionContext()); var expString2 = linqExp.ToString(); }
public unsafe void KVFieldExpressionTest_Mvcc() { var data = StringHelper.FromHexString("00000020E4D8BEBE75592200000080000600004141414141310501880100000000000000000002060000414141414131"); var field = new Expressions.KVFieldExpression(Consts.EMPLOEE_NAME_ID, EntityFieldType.String); Expressions.Expression filter = field == "AAAAA1"; var ctx = TestHelper.GetMockExpressionContext(); var body = filter.ToLinqExpression(ctx); var exp = Expression.Lambda <KVFilterFunc>(body, ctx.GetParameter("vp"), ctx.GetParameter("vs"), ctx.GetParameter("mv"), ctx.GetParameter("ts")); var func = exp.Compile(); fixed(byte *ptr = data) { IntPtr dataPtr = new IntPtr(ptr); Assert.True(func(dataPtr, data.Length, true, ulong.MaxValue)); } }
public unsafe void KVFieldExpressionTest_NoneMvcc() { var data = StringHelper.FromHexString("400005000041646D696E800005000041646D696E"); var field = new Expressions.KVFieldExpression(Consts.EMPLOEE_NAME_ID, EntityFieldType.String); Expressions.Expression filter = field == "Admin"; var ctx = TestHelper.GetMockExpressionContext(); var body = filter.ToLinqExpression(ctx); var exp = Expression.Lambda <KVFilterFunc>(body, ctx.GetParameter("vp"), ctx.GetParameter("vs"), ctx.GetParameter("mv"), ctx.GetParameter("ts")); var func = exp.Compile(); fixed(byte *ptr = data) { IntPtr dataPtr = new IntPtr(ptr); Assert.True(func(dataPtr, data.Length, false, 0)); } }