public void SignTest()
        {
            string expected = "Sign([Angle])";
            string actual   = CriteriaBuilder.Build <TestContext, int>(c => Math.Sign(c.Angle)).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void ExistsWithConditionTest()
        {
            string expected = "[Accounts][[Amount] > 10.0m]";
            string actual   = CriteriaBuilder.Build <TestContext, bool>(c => c.Accounts.Any(a => a.Amount > 10)).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void SingleWithConditionTest()
        {
            string expected = "[Accounts][[Amount] > 10.0m].Single()";
            string actual   = CriteriaBuilder.Build <TestContext, Account>(c => c.Accounts.SingleOrDefault(a => a.Amount > 10)).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void SingleWithExpressionTest()
        {
            string expected = "[Accounts][].Single([Amount])";
            string actual   = CriteriaBuilder.Build <TestContext, decimal>(c => c.Accounts.SingleOrDefault().Amount).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void ReplaceTest()
        {
            string expected = "Replace([Name], 'oh', '**')";
            string actual   = CriteriaBuilder.Build <TestContext, string>(c => c.Name.Replace("oh", "**")).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void ExistsTest()
        {
            string expected = "[Accounts][]";
            string actual   = CriteriaBuilder.Build <TestContext, bool>(c => c.Accounts.Any()).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void SingleTest()
        {
            string expected = "[Accounts][].Single() <> null";
            string actual   = CriteriaBuilder.Build <TestContext, bool>(c => c.Accounts.SingleOrDefault() != null).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void ToDecimalCastTest()
        {
            string expected = "ToDecimal([Angle])";
            string actual   = CriteriaBuilder.Build <TestContext, decimal>(c => (decimal)c.Angle).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void CountTest()
        {
            string expected = "[Accounts][].Count() > 1";
            string actual   = CriteriaBuilder.Build <TestContext, bool>(c => c.Accounts.Count() > 1).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void GetTimeOfDayTest()
        {
            string expected = "GetTimeOfDay([RegistrationDate])";
            string actual   = CriteriaBuilder.Build <TestContext, TimeSpan>(c => c.RegistrationDate.TimeOfDay).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void ToLongCastTest()
        {
            string expected = "ToLong([Angle])";
            string actual   = CriteriaBuilder.Build <TestContext, long>(c => (long)c.Angle).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void StartsWithTest()
        {
            string expected = "StartsWith([Name], 'J')";
            string actual   = CriteriaBuilder.Build <TestContext, bool>(c => c.Name.StartsWith("J")).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void PadRightCharacterTest()
        {
            string expected = "PadRight([Name], 10, '\u0066'c)";
            string actual   = CriteriaBuilder.Build <TestContext, string>(c => c.Name.PadRight(10, '\u0066')).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void LenTest()
        {
            string expected = "Len([Name]) > 3";
            string actual   = CriteriaBuilder.Build <TestContext, bool>(c => c.Name.Length > 3).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void MinTest()
        {
            string expected = "Min([Angle], 0.5)";
            string actual   = CriteriaBuilder.Build <TestContext, double>(c => Math.Min(c.Angle, .5)).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void PadLeftTest()
        {
            string expected = "PadLeft([Name], 10)";
            string actual   = CriteriaBuilder.Build <TestContext, string>(c => c.Name.PadLeft(10)).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void IsNullOrEmptyTest()
        {
            string expected = "IsNullOrEmpty([Name])";
            string actual   = CriteriaBuilder.Build <TestContext, bool>(c => string.IsNullOrEmpty(c.Name)).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void InsertTest()
        {
            string expected = "Insert([Name], 1, 'a')";
            string actual   = CriteriaBuilder.Build <TestContext, string>(c => c.Name.Insert(1, "a")).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void GetYearTest()
        {
            string expected = "GetYear([RegistrationDate])";
            string actual   = CriteriaBuilder.Build <TestContext, int>(c => c.RegistrationDate.Year).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void ToDoubleCastTest()
        {
            string expected = "ToDouble([Age])";
            string actual   = CriteriaBuilder.Build <TestContext, double>(c => (double)c.Age).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void PowerTest()
        {
            string expected = "Power([Angle], 2.0)";
            string actual   = CriteriaBuilder.Build <TestContext, double>(c => Math.Pow(c.Angle, 2)).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void ToFloatTest()
        {
            string expected = "ToFloat([Angle])";
            string actual   = CriteriaBuilder.Build <TestContext, float>(c => Convert.ToSingle(c.Angle)).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void RemoveWithNumberToTest()
        {
            string expected = "Remove([Name], 2, 1)";
            string actual   = CriteriaBuilder.Build <TestContext, string>(c => c.Name.Remove(2, 1)).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void ToIntCastTest()
        {
            string expected = "ToInt([Angle])";
            string actual   = CriteriaBuilder.Build <TestContext, int>(c => (int)c.Angle).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void SumTest()
        {
            string expected = "[Accounts][].Sum([Amount]) > 150.0m";
            string actual   = CriteriaBuilder.Build <TestContext, bool>(c => c.Accounts.Sum(a => a.Amount) > 150).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void LowerTest()
        {
            string expected = "Lower([Name]) Like '%jo%'";
            string actual   = CriteriaBuilder.Build <TestContext, bool>(c => CustomFunctions.Like(c.Name.ToLower(), "%jo%")).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void RoundWithDecimalPlacesTest()
        {
            string expected = "Round([Angle], 2)";
            string actual   = CriteriaBuilder.Build <TestContext, double>(c => Math.Round(c.Angle, 2)).ToString();

            Assert.AreEqual(expected, actual);
        }
Beispiel #28
0
        public void AndTest()
        {
            string expected = "[Name] = 'John' And [Age] = 30";
            string actual   = CriteriaBuilder.Build <TestContext, bool>(c => c.Name == "John" && c.Age == 30).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void AverageTest()
        {
            string expected = "[Accounts][].Avg([Amount]) = 75.0m";
            string actual   = CriteriaBuilder.Build <TestContext, bool>(c => c.Accounts.Average(a => a.Amount) == 75).ToString();

            Assert.AreEqual(expected, actual);
        }
        public void TanhTest()
        {
            string expected = "Tanh([Angle])";
            string actual   = CriteriaBuilder.Build <TestContext, double>(c => Math.Tanh(c.Angle)).ToString();

            Assert.AreEqual(expected, actual);
        }
 private static void ProcessCriteria(XElement parent, CriteriaBuilder builder)
 {
   CriteriaBuilder newBuilder;
   foreach (var elem in parent.Elements())
   {
     switch (elem.Name.LocalName)
     {
       case "Relationships":
         break;
       case "not":
         newBuilder = new CriteriaBuilder()
         {
           Not = true,
           Operator = "and",
           Type = builder.Type
         };
         ProcessCriteria(elem, newBuilder);
         builder.Builders.Add(newBuilder);
         elem.Remove();
         break;
       case "and":
         newBuilder = new CriteriaBuilder()
         {
           Not = true,
           Operator = "and",
           Type = builder.Type
         };
         ProcessCriteria(elem, newBuilder);
         builder.Builders.Add(newBuilder);
         elem.Remove();
         break;
       case "or":
         newBuilder = new CriteriaBuilder()
         {
           Not = true,
           Operator = "or",
           Type = builder.Type
         };
         ProcessCriteria(elem, newBuilder);
         builder.Builders.Add(newBuilder);
         elem.Remove();
         break;
       default:
         builder.Add(elem);
         elem.Remove();
         break;
     }
   }
 }
        public void TestNewInstance()
        {
            ICriteriaBuilder criteriaBuilder = new CriteriaBuilder(SessionFactory.GetClassMetadata);
            var criteria1 = criteriaBuilder.MakeCriteria(null);
            Assert.IsNull(criteria1);

            var criteria2 = criteriaBuilder.MakeCriteria((object)null, null);
            Assert.IsNull(criteria2);

            var criteria3 = criteriaBuilder.MakeCriteria<Salesman>(null);
            Assert.IsNull(criteria3);

            var criteria4 = criteriaBuilder.MakeCriteria<Salesman>(null, null);
            Assert.IsNull(criteria4);
            
        }
    public static void CriteriaToWhereClause(XElement elem)
    {
      var item = elem.DescendantsAndSelf("Item").First();
      if (item.Attribute("type") == null)
        return;

      var builder = new CriteriaBuilder()
      {
        Operator = "and",
        Type = "[" + item.Attribute("type").Value.Replace(' ', '_') + "]"
      };
      ProcessCriteria(elem, builder);
      var where = item.Attribute("where");
      var whereClause = builder.ToString();
      if (where != null)
        whereClause += " and " + where.Value;
      item.SetAttributeValue("where", whereClause);
    }
        public void TestCriteriaCompiled2()
        {
            ICriteriaCompiled criteriaCompiled = null;
            ICriteriaBuilder criteriaBuilder = new CriteriaBuilder(SessionFactory.GetClassMetadata);
            CarContract instance = new CarContract
                {
                    Owner = new Salesman(1)
                };

            criteriaCompiled = criteriaBuilder.MakeCriteria(instance);
            Assert.AreEqual(criteriaCompiled.RootAlias, "carContract");
            Assert.AreEqual(criteriaCompiled.RootType, typeof(CarContract));
            Assert.AreEqual(criteriaCompiled.Restrictions.Count(), 2);
            using (ISession session = SessionFactory.OpenSession())
            {
                var lista = criteriaCompiled.Criteria.GetExecutableCriteria(session).List();
                Assert.AreEqual(lista.Count, 3);
            }

            criteriaCompiled = criteriaBuilder.MakeCriteria(typeof(CarContract), instance);
            Assert.AreEqual(criteriaCompiled.RootAlias, "carContract");
            Assert.AreEqual(criteriaCompiled.RootType, typeof(CarContract));
            Assert.AreEqual(criteriaCompiled.Restrictions.Count(), 2);
            using (ISession session = SessionFactory.OpenSession())
            {
                var lista = criteriaCompiled.Criteria.GetExecutableCriteria(session).List();
                Assert.AreEqual(lista.Count, 3);
            }

            criteriaCompiled = criteriaBuilder.MakeCriteria<TradeContract>(instance);
            Assert.AreEqual(criteriaCompiled.RootAlias, "tradeContract");
            Assert.AreEqual(criteriaCompiled.RootType, typeof(TradeContract));
            Assert.AreEqual(criteriaCompiled.Restrictions.Count(), 2);
            using (ISession session = SessionFactory.OpenSession())
            {
                var lista = criteriaCompiled.Criteria.GetExecutableCriteria(session).List();
                Assert.AreEqual(lista.Count, 4);
            }
        }
        public void TestCriteriaCompiled()
        {
            ICriteriaBuilder criteriaBuilder = new CriteriaBuilder(SessionFactory.GetClassMetadata);
            Salesman instance = new Salesman(1);

            ICriteriaCompiled criteriaCompiled = null;

            criteriaCompiled = criteriaBuilder.MakeCriteria(instance as object);
            Assert.AreEqual(criteriaCompiled.RootAlias, "salesman");
            Assert.AreEqual(criteriaCompiled.RootType, typeof(Salesman));
            Assert.AreEqual(criteriaCompiled.Restrictions.Count(), 1);
            using (ISession session = SessionFactory.OpenSession())
            {
                var lista = criteriaCompiled.Criteria.GetExecutableCriteria(session).List();
                Assert.IsTrue(lista.Count == 1);
            }

            criteriaCompiled = criteriaBuilder.MakeCriteria(instance as object, "sal");
            Assert.AreEqual(criteriaCompiled.RootAlias, "sal");
            Assert.AreEqual(criteriaCompiled.RootType, typeof(Salesman));
            Assert.AreEqual(criteriaCompiled.Restrictions.Count(), 1);
            using (ISession session = SessionFactory.OpenSession())
            {
                var lista = criteriaCompiled.Criteria.GetExecutableCriteria(session).List();
                Assert.IsTrue(lista.Count == 1);
            }

            criteriaCompiled = criteriaBuilder.MakeCriteria(instance);
            Assert.AreEqual(criteriaCompiled.RootAlias, "salesman");
            Assert.AreEqual(criteriaCompiled.RootType, typeof(Salesman));
            Assert.AreEqual(criteriaCompiled.Restrictions.Count(), 1);
            using (ISession session = SessionFactory.OpenSession())
            {
                var lista = criteriaCompiled.Criteria.GetExecutableCriteria(session).List();
                Assert.IsTrue(lista.Count == 1);
            }

            criteriaCompiled = criteriaBuilder.MakeCriteria(instance, "sal");
            Assert.AreEqual(criteriaCompiled.RootAlias, "sal");
            Assert.AreEqual(criteriaCompiled.RootType, typeof(Salesman));
            Assert.AreEqual(criteriaCompiled.Restrictions.Count(), 1);
            using (ISession session = SessionFactory.OpenSession())
            {
                var lista = criteriaCompiled.Criteria.GetExecutableCriteria(session).List();
                Assert.IsTrue(lista.Count == 1);
            }

            criteriaCompiled = criteriaBuilder.MakeCriteria(typeof(Salesman), instance);
            Assert.AreEqual(criteriaCompiled.RootAlias, "salesman");
            Assert.AreEqual(criteriaCompiled.RootType, typeof(Salesman));
            Assert.AreEqual(criteriaCompiled.Restrictions.Count(), 1);
            using (ISession session = SessionFactory.OpenSession())
            {
                var lista = criteriaCompiled.Criteria.GetExecutableCriteria(session).List();
                Assert.IsTrue(lista.Count == 1);
            }

            criteriaCompiled = criteriaBuilder.MakeCriteria(typeof(Salesman), instance, "sal");
            Assert.AreEqual(criteriaCompiled.RootAlias, "sal");
            Assert.AreEqual(criteriaCompiled.RootType, typeof(Salesman));
            Assert.AreEqual(criteriaCompiled.Restrictions.Count(), 1);
            using (ISession session = SessionFactory.OpenSession())
            {
                var lista = criteriaCompiled.Criteria.GetExecutableCriteria(session).List();
                Assert.IsTrue(lista.Count == 1);
            }
        }
        public void TestCriteriaCompiled3()
        {
            long carCount = 0;
            IList l0 = null;
            using (ISession session = SessionFactory.OpenSession())
            {
                carCount = session.CreateQuery("select count(*) from CarContract").UniqueResult<long>();
                l0 = session.CreateQuery("from CarContract").List();
            }

            ICriteriaCompiled criteriaCompiled = null;
            ICriteriaBuilder criteriaBuilder = new CriteriaBuilder(SessionFactory.GetClassMetadata);
            CarContract instance = new CarContract
            {
                Owner = new Salesman {Name = "Manuel"}
            };

            criteriaCompiled = criteriaBuilder.MakeCriteria(instance);
            Assert.AreEqual(criteriaCompiled.RootAlias, "carContract");
            Assert.AreEqual(criteriaCompiled.RootType, typeof(CarContract));
            Assert.AreEqual(criteriaCompiled.Restrictions.Count(), 2);
            using (ISession session = SessionFactory.OpenSession())
            {
                var lista = criteriaCompiled.Criteria.GetExecutableCriteria(session).List();
                Assert.AreEqual(lista.Count, 3);
            }


            instance.Owner = new Salesman(0);
            criteriaCompiled = criteriaBuilder.MakeCriteria(instance);
            Assert.AreEqual(criteriaCompiled.RootAlias, "carContract");
            Assert.AreEqual(criteriaCompiled.RootType, typeof(CarContract));
            Assert.AreEqual(criteriaCompiled.Restrictions.Count(), 2);
            using (ISession session = SessionFactory.OpenSession())
            {
                var lista = criteriaCompiled.Criteria.GetExecutableCriteria(session).List();
                Assert.AreEqual(lista.Count, 0);
            }


            instance.Owner = new Salesman{Name = "pippo"};
            criteriaCompiled = criteriaBuilder.MakeCriteria(instance);
            Assert.AreEqual(criteriaCompiled.RootAlias, "carContract");
            Assert.AreEqual(criteriaCompiled.RootType, typeof(CarContract));
            Assert.AreEqual(criteriaCompiled.Restrictions.Count(), 2);
            using (ISession session = SessionFactory.OpenSession())
            {
                var lista = criteriaCompiled.Criteria.GetExecutableCriteria(session).List();
                Assert.AreEqual(lista.Count, 0);
            }
        }
        public void TestCriteriaCompiled4()
        {
            ICriteriaCompiled criteriaCompiled = null;
            ICriteriaBuilder criteriaBuilder = new CriteriaBuilder(SessionFactory.GetClassMetadata);
            CarContract instance = new CarContract
            {
                Owner = new Salesman(1)
            };

            criteriaCompiled = criteriaBuilder.MakeCriteria<TradeContract>(instance);
            Assert.AreEqual(criteriaCompiled.RootAlias, "tradeContract");
            Assert.AreEqual(criteriaCompiled.RootType, typeof(TradeContract));
            Assert.AreEqual(criteriaCompiled.Restrictions.Count(), 2);

            var relationship = criteriaCompiled.FindRelationshipProperty("Owner");
            Assert.IsNotNull(relationship);

            Assert.AreEqual(relationship.Type, typeof(Salesman));
            Assert.AreEqual(relationship.Alias, "salesman");
            Assert.AreEqual(relationship.GetPath(), "tradeContract.Owner");

            //PersistentLayer.Domain.Salesman aaa = new PersistentLayer.Domain.Salesman();
            
        }