Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
        }