public void LiftedArithmeticPlusSerializeTest() { Expression <Func <SecurityDbContext, int?, bool> > criteria = (db, obj) => obj + 1 < 5; CriteriaSerializer criteriaSerializer = new CriteriaSerializer(); XElement serialized = criteriaSerializer.SerializeAsXElement(criteria); string objectType = "System.Nullable`1|System.Int32"; XElement nominal = SerializeTestHelper.CreateBaseCriteriaXElement(objectType); XElement left = SerializeTestHelper.GetBinaryExpression("Add", SerializeTestHelper.SetLifted(SerializeTestHelper.GetConstantConvertUnaryExpression(objectType, "System.Int32", "1"), true, true), SerializeTestHelper.GetParameterExpression(objectType, "obj"), objectType); XElement right = SerializeTestHelper.GetConstantConvertUnaryExpression(objectType, "System.Int32", "5"); SerializeTestHelper.SetLifted(left, true, true); SerializeTestHelper.SetLifted(right, true, true); XElement body = SerializeTestHelper.GetBinaryExpression("LessThan", right, left); SerializeTestHelper.SetLifted(body, true, false); SerializeTestHelper.SetLambdaBody(nominal, body); SerializeTestHelper.CheckIfNominalAndSerializedAreEqual(nominal, serialized); }
public void LessThanFunctionCallSerializeTest() { Expression <Func <SecurityDbContext, int, bool> > criteria = (db, obj) => obj < getSomeValue(); CriteriaSerializer criteriaSerializer = new CriteriaSerializer(); XElement serialized = criteriaSerializer.SerializeAsXElement(criteria); XElement nominal = SerializeTestHelper.CreateBaseCriteriaXElementWithIntObj(); XElement body = new XElement("BinaryExpression", new XAttribute("NodeType", "LessThan"), new XAttribute("CanReduce", "false"), new XAttribute("IsLifted", "false"), new XAttribute("IsLiftedToNull", "false"), SerializeTestHelper.GetTypeElement("System.Boolean"), new XElement("Right", SerializeTestHelper.GetConstantExpression("System.Int32", "5") ), new XElement("Left", SerializeTestHelper.GetParameterExpression("System.Int32", "obj") ), new XElement("Method"), new XElement("Conversion") ); SerializeTestHelper.SetLambdaBody(nominal, body); SerializeTestHelper.CheckIfNominalAndSerializedAreEqual(nominal, serialized); }
public void ComplexDeserializeTest() { Expression <Func <DbContextMultiClass, DbContextObject1, bool> > criteria = (db, obj) => obj.ItemCount < db.dbContextDbSet1.Count(); string propertyType = "System.Int32"; string objectType = "DevExpress.EntityFramework.SecurityDataStore.Tests.DbContexts.DbContextObject1"; string dbContextType = "DevExpress.EntityFramework.SecurityDataStore.Tests.DbContexts.DbContextMultiClass"; string methodCallResultType = "System.Int32"; string methodObjectType = "System.Linq.Queryable"; string methodParameterType = "System.Linq.IQueryable`1|DevExpress.EntityFramework.SecurityDataStore.Tests.DbContexts.DbContextObject1"; string dbSetMemberType = "Microsoft.EntityFrameworkCore.DbSet`1|DevExpress.EntityFramework.SecurityDataStore.Tests.DbContexts.DbContextObject1"; string dbSetPropertyName = "dbContextDbSet1"; string dbSetType = "DevExpress.EntityFramework.SecurityDataStore.Tests.DbContexts.DbContextMultiClass"; XElement nominal = SerializeTestHelper.CreateBaseCriteriaXElement(objectType, dbContextType); XElement memberExpression = new XElement("MemberExpression", new XAttribute("NodeType", "MemberAccess"), new XAttribute("CanReduce", "false"), SerializeTestHelper.GetTypeElement(dbSetMemberType), new XElement("Member", new XAttribute("MemberType", "Property"), new XAttribute("PropertyName", dbSetPropertyName), new XElement("DeclaringType", new XElement("Type", new XAttribute("Name", dbSetType) ) ) ), new XElement("Expression", SerializeTestHelper.GetParameterExpression(dbContextType, "db") ) ); XElement right = new XElement("MethodCallExpression", new XAttribute("NodeType", "Call"), new XAttribute("CanReduce", "false"), SerializeTestHelper.GetTypeElement(methodCallResultType), SerializeTestHelper.GetSingleParameterMethod("Count", methodObjectType, methodParameterType, new string[] { objectType }), new XElement("Object"), new XElement("Arguments", memberExpression ) ); XElement body = SerializeTestHelper.GetBinaryExpression("LessThan", right, SerializeTestHelper.GetMemberExpression(objectType, "obj", propertyType, "ItemCount")); SerializeTestHelper.SetLambdaBody(nominal, body); CriteriaSerializer criteriaSerializer = new CriteriaSerializer(); criteriaSerializer.RegisterAdditionalAssemblies(GetAdditionalAssemblies()); Expression deserializedCriteria = criteriaSerializer.Deserialize(nominal); SerializeTestHelper.CheckIfExpressionsAreEqual(criteria, deserializedCriteria); }
public void ParameterExpressionSerializeTest() { Expression criteria = Expression.Parameter(typeof(int), "intParam"); CriteriaSerializer criteriaSerializer = new CriteriaSerializer(); XElement serialized = criteriaSerializer.SerializeAsXElement(criteria); XElement nominal = SerializeTestHelper.GetParameterExpression("System.Int32", "intParam"); SerializeTestHelper.CheckIfNominalAndSerializedAreEqual(nominal, serialized); }
public void ArithmeticXorSerializeTest() { Expression <Func <SecurityDbContext, int, bool> > criteria = (db, obj) => (obj ^ 2) < 5; CriteriaSerializer criteriaSerializer = new CriteriaSerializer(); XElement serialized = criteriaSerializer.SerializeAsXElement(criteria); XElement nominal = SerializeTestHelper.CreateBaseCriteriaXElementWithIntObj(); XElement left = SerializeTestHelper.GetBinaryExpression("ExclusiveOr", SerializeTestHelper.GetConstantExpression("System.Int32", "2"), SerializeTestHelper.GetParameterExpression("System.Int32", "obj"), "System.Int32"); XElement right = SerializeTestHelper.GetConstantExpression("System.Int32", "5"); XElement body = SerializeTestHelper.GetBinaryExpression("LessThan", right, left); SerializeTestHelper.SetLambdaBody(nominal, body); SerializeTestHelper.CheckIfNominalAndSerializedAreEqual(nominal, serialized); }
public void NotEqualNullSerializeTest() { Expression <Func <SecurityDbContext, DbContextObject1, bool> > criteria = (db, obj) => obj != null; CriteriaSerializer criteriaSerializer = new CriteriaSerializer(); XElement serialized = criteriaSerializer.SerializeAsXElement(criteria); string objectType = "DevExpress.EntityFramework.SecurityDataStore.Tests.DbContexts.DbContextObject1"; XElement nominal = SerializeTestHelper.CreateBaseCriteriaXElement(objectType); XElement body = SerializeTestHelper.GetBinaryExpression("NotEqual", SerializeTestHelper.GetConstantExpression("System.Object", ""), SerializeTestHelper.GetParameterExpression(objectType, "obj")); SerializeTestHelper.SetLambdaBody(nominal, body); SerializeTestHelper.CheckIfNominalAndSerializedAreEqual(nominal, serialized); }
public void ArithmeticOrDeserializeTest() { Expression <Func <SecurityDbContext, int, bool> > criteria = (db, obj) => (obj | 2) < 5; XElement nominal = SerializeTestHelper.CreateBaseCriteriaXElementWithIntObj(); XElement left = SerializeTestHelper.GetBinaryExpression("Or", SerializeTestHelper.GetConstantExpression("System.Int32", "2"), SerializeTestHelper.GetParameterExpression("System.Int32", "obj"), "System.Int32"); XElement right = SerializeTestHelper.GetConstantExpression("System.Int32", "5"); XElement body = SerializeTestHelper.GetBinaryExpression("LessThan", right, left); SerializeTestHelper.SetLambdaBody(nominal, body); CriteriaSerializer criteriaSerializer = new CriteriaSerializer(); Expression deserializedCriteria = criteriaSerializer.Deserialize(nominal); SerializeTestHelper.CheckIfExpressionsAreEqual(criteria, deserializedCriteria); }
public void NotEqualNullDeserializeTest() { Expression <Func <SecurityDbContext, DbContextObject1, bool> > criteria = (db, obj) => obj != null; string objectType = "DevExpress.EntityFramework.SecurityDataStore.Tests.DbContexts.DbContextObject1"; XElement nominal = SerializeTestHelper.CreateBaseCriteriaXElement(objectType); XElement body = SerializeTestHelper.GetBinaryExpression("NotEqual", SerializeTestHelper.GetConstantExpression("System.Object", ""), SerializeTestHelper.GetParameterExpression(objectType, "obj")); SerializeTestHelper.SetLambdaBody(nominal, body); CriteriaSerializer criteriaSerializer = new CriteriaSerializer(); criteriaSerializer.RegisterAdditionalAssemblies(GetAdditionalAssemblies()); Expression deserializedCriteria = criteriaSerializer.Deserialize(nominal); SerializeTestHelper.CheckIfExpressionsAreEqual(criteria, deserializedCriteria); }