public void TestToLowerWithIn()
		{
			AggregateTestCollection collection = new AggregateTestCollection();
			collection.Query.Where(collection.Query.LastName.ToLower().In("doe", "douglas"));
			collection.Query.Load();
			Assert.AreEqual(4, collection.Count);
		}
		public void TestLTrim()
		{
			AggregateTestCollection collection = new AggregateTestCollection();
			collection.Query.Where(collection.Query.LastName.LTrim() == "Doe");
			collection.Query.Load();
			Assert.AreEqual(3, collection.Count);
		}
		public void TestToUpperWithLike()
		{
			AggregateTestCollection collection = new AggregateTestCollection();
			collection.Query.Where(collection.Query.LastName.ToUpper().Like("DO%"));
			collection.Query.Load();
			Assert.AreEqual(4, collection.Count);
		}
		public void TestToUpper()
		{
			AggregateTestCollection collection = new AggregateTestCollection();
			collection.Query.Where(collection.Query.LastName.ToUpper() == "DOE");
			collection.Query.Load();
			Assert.AreEqual(3, collection.Count);
		}
		public void SelectWithAlias()
		{
			aggTestColl.Query.Select(
				aggTestColl.Query.Salary.As("S2"),
				aggTestColl.Query.FirstName,
				aggTestColl.Query.FirstName.As("FN")
			);
			aggTestColl.Query.OrderBy(aggTestColl.Query.Id.Ascending);
			Assert.IsTrue(aggTestColl.Query.Load());
			Assert.AreEqual(30, aggTestColl.Count);

			AggregateTestCollection aggControl = new AggregateTestCollection();
			aggControl.Query.OrderBy(aggControl.Query.Id.Ascending);
			aggControl.Query.Load();

			int i = 0;
			foreach (AggregateTest agg in aggTestColl)
			{
				if (aggControl[i].Salary.HasValue)
				{
					Assert.AreEqual(aggControl[i].Salary.Value,
						agg.GetColumn("S2"));
				}
				else
				{
					Assert.AreEqual(null, agg.GetColumn("S2") as string);
				}
				Assert.AreEqual(aggControl[i].FirstName,
					agg.GetColumn("FN") as string);
				i++;
			}
		}
 public void TestToUpperInSelect()
 {
     AggregateTestCollection collection = new AggregateTestCollection();
     collection.Query.Select(collection.Query.LastName.ToUpper());
     collection.Query.Where(collection.Query.LastName == "Doe");
     collection.Query.Load();
     Assert.AreEqual(3, collection.Count);
     Assert.AreEqual("DOE", collection[0].LastName);
 }
		public void Init2()
		{
            aggTestColl = new AggregateTestCollection();
            aggTest = new AggregateTest();
            aggTestQuery = new AggregateTestQuery();
			aggCloneColl = new AggregateTestCollection();
			aggClone = new AggregateTest();
			aggCloneQuery = new AggregateTestQuery();
		}
        // Obsolete as of 2007.1.1021.0
        //protected override void CreateExtendedProperties(esColumnMetadataCollection extendedProps)
        //{
        //    if (null == extendedProps["NewId"])
        //    {
        //        esColumnMetadata col = new esColumnMetadata("NewId", this.Meta.Columns.Count + 1, Type.GetType("System.Int32"));
        //        col.PropertyName = "NewId";
        //        extendedProps.Add(col);
        //    }

        //    if (null == extendedProps["OrderIndex"])
        //    {
        //        esColumnMetadata col = new esColumnMetadata("OrderIndex", this.Meta.Columns.Count + 1, Type.GetType("System.Int32"));
        //        col.PropertyName = "OrderIndex";
        //        extendedProps.Add(col);
        //    }
        //}

		//public void AddOrderIndexColumn()
		//{
		//    if (this.Table != null && this.Table.Columns.Contains("OrderIndex") == false)
		//    {
		//        this.Table.Columns.Add("OrderIndex", typeof(Int16));
		//    }
		//}

		//public DataTable GetTable()
		//{
		//    return this.Table;
		//}

        public static void CustomForEach()
        {
            AggregateTestCollection coll = new AggregateTestCollection();
            coll.LoadAll();

            foreach (AggregateTest entity in coll)
            {
                entity.LastName = "CustomForEach";
            }
        }
        // Obsolete as of 2007.1.1021.0
        //protected override void CreateExtendedProperties(esColumnMetadataCollection extendedProps)
        //{
        //    if (null == extendedProps["NewId"])
        //    {
        //        esColumnMetadata col = new esColumnMetadata("NewId", this.Meta.Columns.Count + 1, Type.GetType("System.Int32"));
        //        col.PropertyName = "NewId";
        //        extendedProps.Add(col);
        //    }

        //    if (null == extendedProps["OrderIndex"])
        //    {
        //        esColumnMetadata col = new esColumnMetadata("OrderIndex", this.Meta.Columns.Count + 1, Type.GetType("System.Int32"));
        //        col.PropertyName = "OrderIndex";
        //        extendedProps.Add(col);
        //    }
        //}

        //public void AddOrderIndexColumn()
        //{
        //    if (this.Table != null && this.Table.Columns.Contains("OrderIndex") == false)
        //    {
        //        this.Table.Columns.Add("OrderIndex", typeof(Int16));
        //    }
        //}

        //public DataTable GetTable()
        //{
        //    return this.Table;
        //}

        public static void CustomForEach()
        {
            AggregateTestCollection coll = new AggregateTestCollection();

            coll.LoadAll();

            foreach (AggregateTest entity in coll)
            {
                entity.LastName = "CustomForEach";
            }
        }
		public void ViewOnCollection()
		{
			AggregateTestCollection collection = new AggregateTestCollection();
			collection.Query.Where(collection.Query.LastName.ToUpper() == "DOE");
			collection.Query.Load();
			Assert.AreEqual(3, collection.Count);

            esEntityCollectionView<AggregateTest> view1 =
                new esEntityCollectionView<AggregateTest>(collection);
            Assert.AreEqual(3, view1.Count);
            Assert.AreEqual(3, collection.Count);
        }
        public void ViewOnFilteredCollection()
        {
            AggregateTestCollection collection = new AggregateTestCollection();
            collection.Query.Load();
            Assert.AreEqual(30, collection.Count);
            collection.Filter = collection.AsQueryable().Where(f => f.LastName == "Doe");
            Assert.AreEqual(3, collection.Count);

            esEntityCollectionView<AggregateTest> view1 =
                new esEntityCollectionView<AggregateTest>(collection);
            Assert.AreEqual(30, view1.Count);
            Assert.AreEqual(3, collection.Count);
        }
		public void EmptyQueryReturnsSelectAll()
		{
            aggTestColl = new AggregateTestCollection();
            Assert.IsTrue(aggTestColl.LoadAll());
            Assert.AreEqual(30, aggTestColl.Count, "LoadAll");

            aggTestColl = new AggregateTestCollection();
            Assert.IsTrue(aggTestColl.Query.Load());
            Assert.AreEqual(30, aggTestColl.Count, "Query.Load");

            aggTestColl = new AggregateTestCollection();
            aggTestColl.Query.LoadDataTable();
			Assert.AreEqual(0, aggTestColl.Count, "Query.LoadDataTable");
		}
		public void TestDateTime()
		{
            int testId = -1;
            AggregateTestCollection aggTestColl = new AggregateTestCollection();
            AggregateTest test = new AggregateTest();

            try
            {
                using (EntitySpaces.Interfaces.esTransactionScope scope =
                    new EntitySpaces.Interfaces.esTransactionScope())
                {
                    aggTestColl.Query.Load();
                    aggTestColl.Filter = aggTestColl.AsQueryable().OrderBy(s => s.Id);
                    test = (AggregateTest)aggTestColl[0];
                    DateTime date = test.HireDate.Value;
                    Assert.AreEqual(Convert.ToDateTime("02/16/2000 05:59:31"), date);

                    test = new AggregateTest();
                    test.HireDate = Convert.ToDateTime("12/31/9999");
                    test.Save();
                    testId = test.Id.Value;

                    test = new AggregateTest();
                    Assert.IsTrue(test.LoadByPrimaryKey(testId));
                    Assert.AreEqual(Convert.ToDateTime("12/31/9999"), test.HireDate.Value);
                    test.MarkAsDeleted();
                    test.Save();
                }
            }
            finally
            {
                // Clean up
                test = new AggregateTest();
                if (test.LoadByPrimaryKey(testId))
                {
                    test.MarkAsDeleted();
                    test.Save();
                }
            }
		}
        public void TestIdentityInsert()
        {
            AggregateTestCollection coll = new AggregateTestCollection();

            coll.LoadAll();

            StringBuilder sql = new StringBuilder();

            sql.AppendLine("SET IDENTITY_INSERT [AggregateTest] ON");
            sql.AppendLine("SET NOCOUNT ON");

            for (int i = 1; i < coll.Count; i++)
            {
                sql.AppendLine("INSERT INTO [AggregateTest]([ID], [LastName])");
                sql.AppendLine("VALUES(" + i.ToString() + ", '" + coll[i].LastName + "')");
            }

            sql.AppendLine("SET IDENTITY_INSERT [AggregateTest] OFF");

            //esUtility u = new esUtility();
            //u.ExecuteNonQuery(esQueryType.Text, sql.ToString());
        }
        public void TwoFilteredViewsOnFilteredCollection()
        {
            AggregateTestCollection collection = new AggregateTestCollection();
            collection.Query.Load();
            Assert.AreEqual(30, collection.Count);
            collection.Filter = collection.AsQueryable().Where(f => f.LastName == "Doe");
            Assert.AreEqual(3, collection.Count);

            esEntityCollectionView<AggregateTest> view1 =
                new esEntityCollectionView<AggregateTest>(collection);
            Assert.AreEqual(30, view1.Count);
            view1.Filter = view1.AsQueryable().Where(f => f.Age > 20);
            Assert.AreEqual(18, view1.Count);
            Assert.AreEqual(3, collection.Count);

            esEntityCollectionView<AggregateTest> view2 =
                new esEntityCollectionView<AggregateTest>(collection);
            Assert.AreEqual(30, view2.Count);
            view2.Filter = view2.AsQueryable().Where(f => f.FirstName == "John");
            Assert.AreEqual(2, view2.Count);
            Assert.AreEqual(18, view1.Count);
            Assert.AreEqual(3, collection.Count);
        }
        public void PagingWithTop()
        {
            AggregateTestCollection collection = new AggregateTestCollection();

            if (collection.es.Connection.Name == "SqlCe"
                || collection.es.Connection.ProviderMetadataKey ==
                "esSqlCe4"
                || collection.es.Connection.ProviderMetadataKey ==
                "esSqlCe")
            {
                Assert.Ignore("Not tested for SqlCe.");
            }
            else
            {
                switch (collection.es.Connection.ProviderSignature.DataProviderName)
                {
                    case "EntitySpaces.MSAccessProvider":
                    case "EntitySpaces.VistaDBProvider":
                    case "EntitySpaces.VistaDB4Provider":
                        Assert.Ignore("Not supported");
                        break;
                    default:
                        AggregateTestCollection all = new AggregateTestCollection();

                        all.Query.es.Top = 20;
                        all.Query.OrderBy(all.Query.LastName, esOrderByDirection.Ascending);
                        all.Query.OrderBy(all.Query.Id, esOrderByDirection.Ascending);
                        all.Query.Load();

                        collection = new AggregateTestCollection();

                        collection.Query.es.Top = 20;
                        collection.Query.Select(
                            collection.Query.Id,
                            collection.Query.LastName,
                            collection.Query.FirstName,
                            collection.Query.IsActive);
                        collection.Query.OrderBy(collection.Query.LastName, esOrderByDirection.Ascending);
                        collection.Query.OrderBy(collection.Query.Id, esOrderByDirection.Ascending);
                        collection.Query.es.PageNumber = 1;
                        collection.Query.es.PageSize = 8;

                        Assert.IsTrue(collection.Query.Load(), "Load 1");
                        Assert.AreEqual(8, collection.Count, "Count 1");

                        AggregateTest all0 = (AggregateTest)all[0];
                        AggregateTest collection0 = (AggregateTest)collection[0];
                        Assert.AreEqual(all0.Id.Value, collection0.Id.Value, "Compare 1");

                        collection.Query.es.PageNumber = 2;
                        Assert.IsTrue(collection.Query.Load(), "Load 2");
                        Assert.AreEqual(8, collection.Count, "Count 2");

                        all0 = (AggregateTest)all[8];
                        collection0 = (AggregateTest)collection[0];
                        Assert.AreEqual(all0.Id.Value, collection0.Id.Value, "Compare 2");

                        break;
                }
            }
        }
        public void SkipTake()
        {
            AggregateTestCollection coll = new AggregateTestCollection();

            switch (coll.es.Connection.ProviderSignature.DataProviderName)
            {
                case "EntitySpaces.MSAccessProvider":
                case "EntitySpaces.SqlServerCeProvider":
                case "EntitySpaces.SqlClientProvider":
                case "EntitySpaces.VistaDBProvider":
                case "EntitySpaces.VistaDB4Provider":
                    Assert.Ignore("Not supported");
                    break;
                default:
                    AggregateTestCollection all = new AggregateTestCollection();

                    all.Query.OrderBy(all.Query.LastName, esOrderByDirection.Ascending);
                    all.Query.OrderBy(all.Query.Id, esOrderByDirection.Ascending);
                    all.Query.Load();

                    coll = new AggregateTestCollection();

                    coll.Query.Select(
                        coll.Query.Id,
                        coll.Query.LastName,
                        coll.Query.FirstName,
                        coll.Query.IsActive);
                    coll.Query.Skip(8).Take(2);
                    coll.Query.OrderBy(coll.Query.LastName, esOrderByDirection.Ascending);
                    coll.Query.OrderBy(coll.Query.Id, esOrderByDirection.Ascending);

                    //string lq = coll.Query.Parse();

                    Assert.IsTrue(coll.Query.Load(), "Load");
                    Assert.AreEqual(2, coll.Count, "Count");

                    AggregateTest all0 = (AggregateTest)all[8];
                    AggregateTest collection0 = (AggregateTest)coll[0];
                    Assert.AreEqual(all0.Id.Value, collection0.Id.Value, "Compare");

                    break;
            }
        }
        public void WhereConjunctionOrNotSeparateLines()
        {
            AggregateTestQuery query = new AggregateTestQuery();

            query.Where(query.DepartmentID == 1);

            query.es.DefaultConjunction = esConjunction.OrNot;
            query.Where(new esComparison(esParenthesis.Open));
            query.Where(query.IsActive == true);
            query.es.DefaultConjunction = esConjunction.And;
            query.Where(query.Age == 28);
            query.Where(new esComparison(esParenthesis.Close));

            AggregateTestCollection coll = new AggregateTestCollection();
            Assert.IsTrue(coll.Load(query));

            switch (coll.es.Connection.ProviderSignature.DataProviderName)
            {
                case "EntitySpaces.MSAccessProvider":
                    Assert.AreEqual(29, coll.Count);
                    break;

                case "EntitySpaces.NpgsqlProvider":
                case "EntitySpaces.Npgsql2Provider":
                case "EntitySpaces.OracleClientProvider":
                case "EntitySpaces.SqlClientProvider":
                case "EntitySpaces.SqlServerCeProvider":
                case "EntitySpaces.SybaseSqlAnywhereProvider":
                case "EntitySpaces.VistaDBProvider":
                case "EntitySpaces.VistaDB4Provider":
                    Assert.AreEqual(24, coll.Count);
                    break;

                default:
                    Assert.AreEqual(24, coll.Count);
                    break;
            }
        }
        public void WhereConjunctionOrNotNested()
        {
            AggregateTestQuery query = new AggregateTestQuery();

            query.Where
            (
                query.OrNot
                (
                    query.DepartmentID == 1,
                    query.And
                    (
                        query.IsActive == true,
                        query.Age == 28
                    )
                )
            );

            AggregateTestCollection coll = new AggregateTestCollection();
            Assert.IsTrue(coll.Load(query));

            switch (coll.es.Connection.ProviderSignature.DataProviderName)
            {
                case "EntitySpaces.MSAccessProvider":
                    Assert.AreEqual(29, coll.Count);
                    break;

                case "EntitySpaces.NpgsqlProvider":
                case "EntitySpaces.Npgsql2Provider":
                case "EntitySpaces.OracleClientProvider":
                case "EntitySpaces.SqlClientProvider":
                case "EntitySpaces.SqlServerCeProvider":
                case "EntitySpaces.SybaseSqlAnywhereProvider":
                case "EntitySpaces.VistaDBProvider":
                case "EntitySpaces.VistaDB4Provider":
                    Assert.AreEqual(24, coll.Count);
                    break;

                default:
                    Assert.AreEqual(24, coll.Count);
                    break;
            }
        }
        public void WhereConjunctionAndNotSeparateLines()
        {
            AggregateTestQuery query = new AggregateTestQuery();

            query.Where(query.DepartmentID == 1);

            query.es.DefaultConjunction = esConjunction.AndNot;
            query.Where(new esComparison(esParenthesis.Open));
            query.Where(query.IsActive == true);
            query.es.DefaultConjunction = esConjunction.And;
            query.Where(query.Age == 28);
            query.Where(new esComparison(esParenthesis.Close));

            AggregateTestCollection coll = new AggregateTestCollection();
            Assert.IsTrue(coll.Load(query));
            Assert.AreEqual(2, coll.Count);
        }
        public void WhereConjunctionAndNotNested()
        {
            AggregateTestQuery query = new AggregateTestQuery();

            query.Where
            (
                query.AndNot
                (
                    query.DepartmentID == 1,
                    query.And
                    (
                        query.IsActive == true,
                        query.Age == 28
                    )
                )
            );

            AggregateTestCollection coll = new AggregateTestCollection();
            Assert.IsTrue(coll.Load(query));
            Assert.AreEqual(2, coll.Count);
        }
		public void SerializeDeserializeCollectionBinary()
		{
            if (aggTestColl.es.Connection.Name == "SqlCe")
            {
                Assert.Ignore("Not tested for SqlCe.");
            }
            else
            {
                aggTestColl.LoadAll();

                BinaryFormatter bf = new BinaryFormatter();
                MemoryStream ms = new MemoryStream();
                bf.Serialize(ms, aggTestColl);

                ms.Position = 0;
                aggCloneColl = (AggregateTestCollection)bf.Deserialize(ms);
                ms.Close();

                Assert.AreEqual(30, aggCloneColl.Count);
            }
		}
        public void TestCommandTimeoutConfig()
        {
            switch (aggTestColl.es.Connection.ProviderSignature.DataProviderName)
            {
                case "EntitySpaces.SqlClientProvider":
                    // Collection
                    aggTestColl = new AggregateTestCollection();
                    Assert.AreEqual(39, aggTestColl.es.Connection.CommandTimeout);
                    Assert.IsTrue(aggTestColl.Query.Load(), "Query.Load");
                    aggTestColl = new AggregateTestCollection();
                    Assert.AreEqual(39, aggTestColl.es.Connection.CommandTimeout);
                    Assert.IsTrue(aggTestColl.LoadAll(), "LoadAll");

                    // Entity
                    aggTest = new AggregateTest();
                    Assert.AreEqual(39, aggTest.es.Connection.CommandTimeout);
                    aggTest.Query.es.Top = 1;
                    Assert.IsTrue(aggTest.Query.Load(), "Query.Load");
                    int aggKey = aggTest.Id.Value;
                    aggTest = new AggregateTest();
                    Assert.AreEqual(39, aggTest.es.Connection.CommandTimeout);
                    Assert.IsTrue(aggTest.LoadByPrimaryKey(aggKey), "LoadByPK");
                    break;

                default:
                    Assert.Ignore("tested for SQL Server only");
                    break;
            }
        }
		public void LoadTextEsParams()
		{
			aggTestColl = new AggregateTestCollection();
			aggTestColl.CustomLoadTextEsParams("D");
			Assert.AreEqual(6, aggTestColl.Count);
		}
		public void LoadText()
		{
			aggTestColl = new AggregateTestCollection();
			aggTestColl.CustomLoadText();
			Assert.AreEqual(8, aggTestColl.Count);
		}
        public void IterateSortedViewAndCollection()
        {
            AggregateTestCollection collection = new AggregateTestCollection();
            collection.Query.Load();
            collection.Filter = collection.AsQueryable().OrderBy(s => s.LastName);

            esEntityCollectionView<AggregateTest> view1 =
                new esEntityCollectionView<AggregateTest>(collection);
            view1.Filter = view1.AsQueryable().OrderByDescending(s => s.LastName);

            string prevName = collection[0].LastName;
            foreach (AggregateTest at in collection)
            {
                Assert.IsTrue(String.Compare(prevName, at.LastName) <= 0);
                prevName = at.LastName;
            }

            prevName = view1[0].LastName;
            foreach (AggregateTest at in view1)
            {
                Assert.IsTrue(String.Compare(prevName, at.LastName) >= 0);
                prevName = at.LastName;
            }
        }
        public void TestCommandTimeout()
        {
            switch (aggTestColl.es.Connection.ProviderSignature.DataProviderName)
            {
                case "EntitySpaces.SqlClientProvider":
                    aggTestColl = new AggregateTestCollection();
                    aggTestColl.es.Connection.CommandTimeout = 49;
                    Assert.IsTrue(aggTestColl.Query.Load(), "Query.Load");
                    Assert.AreEqual(49, aggTestColl.es.Connection.CommandTimeout);
                    aggTestColl = new AggregateTestCollection();
                    Assert.IsTrue(aggTestColl.LoadAll(), "LoadAll");
                    Assert.AreEqual(39, aggTestColl.es.Connection.CommandTimeout);
                    break;

                default:
                    Assert.Ignore("SQL Server only");
                    break;
            }
        }
        public void TestIdentityInsert()
        {
            AggregateTestCollection coll = new AggregateTestCollection();
            coll.LoadAll();

            StringBuilder sql = new StringBuilder();
            sql.AppendLine("SET IDENTITY_INSERT [AggregateTest] ON");
            sql.AppendLine("SET NOCOUNT ON");

            for (int i = 1; i < coll.Count; i++)
            {
                sql.AppendLine("INSERT INTO [AggregateTest]([ID], [LastName])");
                sql.AppendLine("VALUES(" + i.ToString() + ", '" + coll[ i ].LastName + "')");
            }

            sql.AppendLine("SET IDENTITY_INSERT [AggregateTest] OFF");

            //esUtility u = new esUtility();
            //u.ExecuteNonQuery(esQueryType.Text, sql.ToString());
        }
        public void PagingWithGroupBy()
        {
            AggregateTestCollection collection = new AggregateTestCollection();

            switch (collection.es.Connection.ProviderSignature.DataProviderName)
            {
                case "EntitySpaces.MSAccessProvider":
                case "EntitySpaces.SqlServerCeProvider":
                case "EntitySpaces.VistaDBProvider":
                case "EntitySpaces.VistaDB4Provider":
                    Assert.Ignore("Paging Not supported");
                    break;

                default:
                    AggregateTestCollection all = new AggregateTestCollection();

                    all.Query.Select(
                        all.Query.LastName,
                        all.Query.Salary.Avg());
                    all.Query.Where(all.Query.IsActive == true);
                    all.Query.GroupBy(all.Query.LastName);
                    all.Query.OrderBy(all.Query.LastName, esOrderByDirection.Ascending);
                    all.Query.Load();

                    collection = new AggregateTestCollection();

                    collection.Query.Select(
                        collection.Query.LastName,
                        collection.Query.Salary.Avg());
                    collection.Query.Where(collection.Query.IsActive == true);
                    collection.Query.GroupBy(collection.Query.LastName);
                    collection.Query.OrderBy(collection.Query.LastName, esOrderByDirection.Ascending);
                    collection.Query.es.PageNumber = 1;
                    collection.Query.es.PageSize = 8;

                    Assert.IsTrue(collection.Query.Load(), "Load 1");
                    Assert.AreEqual(8, collection.Count, "Count 1");

                    AggregateTest all0 = (AggregateTest)all[0];
                    AggregateTest collection0 = (AggregateTest)collection[0];
                    Assert.AreEqual(all0.LastName, collection0.LastName, "Compare 1");

                    collection.Query.es.PageNumber = 2;
                    Assert.IsTrue(collection.Query.Load(), "Load 2");
                    Assert.AreEqual(2, collection.Count, "Count 2");

                    all0 = (AggregateTest)all[8];
                    collection0 = (AggregateTest)collection[0];
                    Assert.AreEqual(all0.LastName, collection0.LastName, "Compare 2");

                    break;
            }
        }
		public static void RefreshDatabase(string connectionName)
		{
            AggregateTestCollection aggTestColl = new AggregateTestCollection();
			if (connectionName.Length != 0)
			{
				aggTestColl.es.Connection.Name = connectionName;
			}

			aggTestColl.LoadAll();
            aggTestColl.MarkAllAsDeleted();
			aggTestColl.Save();

			aggTestColl = new AggregateTestCollection();
			AggregateTest aggTest = new AggregateTest();
			if (connectionName.Length != 0)
			{
				aggTestColl.es.Connection.Name = connectionName;
				aggTest.es.Connection.Name = connectionName;
			}

            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "3";
            aggTest.str().FirstName = "David";
            aggTest.str().LastName = "Doe";
            aggTest.str().Age = "16";
            aggTest.str().HireDate = "2000-02-16 05:59:31";
            aggTest.str().Salary = "34.71";
            aggTest.str().IsActive = "true";
            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "1";
            aggTest.str().FirstName = "Sarah";
            aggTest.str().LastName = "McDonald";
            aggTest.str().Age = "28";
            aggTest.str().HireDate = "1999-03-25 00:00:00";
            aggTest.str().Salary = "11.06";
            aggTest.str().IsActive = "true";
            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "3";
            aggTest.str().FirstName = "David";
            aggTest.str().LastName = "Vincent";
            aggTest.str().Age = "43";
            aggTest.str().HireDate = "2000-10-17 00:00:00";
            aggTest.str().Salary = "10.27";
            aggTest.str().IsActive = "false";
            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "2";
            aggTest.str().FirstName = "Fred";
            aggTest.str().LastName = "Smith";
            aggTest.str().Age = "15";
            aggTest.str().HireDate = "1999-03-15 00:00:00";
            aggTest.str().Salary = "15.15";
            aggTest.str().IsActive = "true";
            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "3";
            aggTest.str().FirstName = "Sally";
            aggTest.str().LastName = "Johnson";
            aggTest.str().Age = "30";
            aggTest.str().HireDate = "2000-10-07 00:00:00";
            aggTest.str().Salary = "14.36";
            aggTest.str().IsActive = "true";
            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "5";
            aggTest.str().FirstName = "Jane";
            aggTest.str().LastName = "Rapaport";
            aggTest.str().Age = "44";
            aggTest.str().HireDate = "2002-05-02 00:00:00";
            aggTest.str().Salary = "13.56";
            aggTest.str().IsActive = "false";
            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "4";
            aggTest.str().FirstName = "Paul";
            aggTest.str().LastName = "Gellar";
            aggTest.str().Age = "16";
            aggTest.str().HireDate = "2000-09-27 00:00:00";
            aggTest.str().Salary = "18.44";
            aggTest.str().IsActive = "true";
            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "2";
            aggTest.str().FirstName = "John";
            aggTest.str().LastName = "Jones";
            aggTest.str().Age = "31";
            aggTest.str().HireDate = "2002-04-22 00:00:00";
            aggTest.str().Salary = "17.65";
            aggTest.str().IsActive = "true";
            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "3";
            aggTest.str().FirstName = "Michelle";
            aggTest.str().LastName = "Johnson";
            aggTest.str().Age = "45";
            aggTest.str().HireDate = "2003-11-14 00:00:00";
            aggTest.str().Salary = "16.86";
            aggTest.str().IsActive = "false";
            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "2";
            aggTest.str().FirstName = "David";
            aggTest.str().LastName = "Costner";
            aggTest.str().Age = "17";
            aggTest.str().HireDate = "2002-04-11 00:00:00";
            aggTest.str().Salary = "21.74";
            aggTest.str().IsActive = "true";
            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "4";
            aggTest.str().FirstName = "William";
            aggTest.str().LastName = "Gellar";
            aggTest.str().Age = "32";
            aggTest.str().HireDate = "2003-11-04 00:00:00";
            aggTest.str().Salary = "20.94";
            aggTest.str().IsActive = "false";
            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "3";
            aggTest.str().FirstName = "Sally";
            aggTest.str().LastName = "Rapaport";
            aggTest.str().Age = "39";
            aggTest.str().HireDate = "2002-04-01 00:00:00";
            aggTest.str().Salary = "25.82";
            aggTest.str().IsActive = "true";
            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "5";
            aggTest.str().FirstName = "Jane";
            aggTest.str().LastName = "Vincent";
            aggTest.str().Age = "18";
            aggTest.str().HireDate = "2003-10-25 00:00:00";
            aggTest.str().Salary = "25.03";
            aggTest.str().IsActive = "true";
            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "2";
            aggTest.str().FirstName = "Fred";
            aggTest.str().LastName = "Costner";
            aggTest.str().Age = "33";
            aggTest.str().HireDate = "1998-05-20 00:00:00";
            aggTest.str().Salary = "24.24";
            aggTest.str().IsActive = "false";
            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "1";
            aggTest.str().FirstName = "John";
            aggTest.str().LastName = "Johnson";
            aggTest.str().Age = "40";
            aggTest.str().HireDate = "2003-10-15 00:00:00";
            aggTest.str().Salary = "29.12";
            aggTest.str().IsActive = "true";
            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "3";
            aggTest.str().FirstName = "Michelle";
            aggTest.str().LastName = "Rapaport";
            aggTest.str().Age = "19";
            aggTest.str().HireDate = "1998-05-10 00:00:00";
            aggTest.str().Salary = "28.32";
            aggTest.str().IsActive = "true";
            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "4";
            aggTest.str().FirstName = "Sarah";
            aggTest.str().LastName = "Doe";
            aggTest.str().Age = "34";
            aggTest.str().HireDate = "1999-12-03 00:00:00";
            aggTest.str().Salary = "27.53";
            aggTest.str().IsActive = "false";
            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "4";
            aggTest.str().FirstName = "William";
            aggTest.str().LastName = "Jones";
            aggTest.str().Age = "41";
            aggTest.str().HireDate = "1998-04-30 00:00:00";
            aggTest.str().Salary = "32.41";
            aggTest.str().IsActive = "true";
            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "1";
            aggTest.str().FirstName = "Sarah";
            aggTest.str().LastName = "McDonald";
            aggTest.str().Age = "21";
            aggTest.str().HireDate = "1999-11-23 00:00:00";
            aggTest.str().Salary = "31.62";
            aggTest.str().IsActive = "false";
            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "4";
            aggTest.str().FirstName = "Jane";
            aggTest.str().LastName = "Costner";
            aggTest.str().Age = "28";
            aggTest.str().HireDate = "1998-04-20 00:00:00";
            aggTest.str().Salary = "36.50";
            aggTest.str().IsActive = "true";
            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "2";
            aggTest.str().FirstName = "Fred";
            aggTest.str().LastName = "Douglas";
            aggTest.str().Age = "42";
            aggTest.str().HireDate = "1999-11-13 00:00:00";
            aggTest.str().Salary = "35.71";
            aggTest.str().IsActive = "true";
            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "3";
            aggTest.str().FirstName = "Sarah";
            aggTest.str().LastName = "Jones";
            aggTest.str().Age = "22";
            aggTest.str().HireDate = "2001-06-07 00:00:00";
            aggTest.str().Salary = "34.91";
            aggTest.str().IsActive = "false";
            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "3";
            aggTest.str().FirstName = "Michelle";
            aggTest.str().LastName = "Doe";
            aggTest.str().Age = "29";
            aggTest.str().HireDate = "1999-11-03 00:00:00";
            aggTest.str().Salary = "39.79";
            aggTest.str().IsActive = "true";
            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "4";
            aggTest.str().FirstName = "Paul";
            aggTest.str().LastName = "Costner";
            aggTest.str().Age = "43";
            aggTest.str().HireDate = "2001-05-28 00:00:00";
            aggTest.str().Salary = "39.00";
            aggTest.str().IsActive = "true";

            aggTest = aggTestColl.AddNew();
            aggTest.str().DepartmentID = "0";
            aggTest.str().FirstName = "";
            aggTest.str().LastName = "";
            aggTest.str().Age = "0";
            aggTest.str().Salary = "0";

            aggTest = aggTestColl.AddNew();
            aggTest = aggTestColl.AddNew();
            aggTest = aggTestColl.AddNew();
            aggTest = aggTestColl.AddNew();
            aggTest = aggTestColl.AddNew();

            aggTestColl.Save();

        }
        public void CollectionChangesBinary()
        {
            if (aggTestColl.es.Connection.Name == "SqlCe")
            {
                Assert.Ignore("Not tested for SqlCe.");
            }
            else
            {
                aggTestColl.LoadAll();
                Assert.AreEqual(30, aggTestColl.Count, "Old");
                aggTestColl.Filter = aggTestColl.AsQueryable().OrderBy(s => s.Id);

                aggTestColl[0].MarkAsDeleted();
                foreach (AggregateTest entity in aggTestColl)
                {
                    if (entity.LastName == "Doe")
                    {
                        entity.LastName = "Changed";
                    }
                }
                aggTest = aggTestColl.AddNew();
                aggTest.LastName = "New";

                int rowCount = 0;
                foreach (AggregateTest r in aggTestColl)
                {
                    if (r.es.IsAdded || r.es.IsModified)
                    {
                        rowCount++;
                    }
                }
                foreach (AggregateTest r in aggTestColl.es.DeletedEntities)
                {
                    rowCount++;
                }
                //aggTestColl.RowStateFilter = DataViewRowState.ModifiedCurrent |
                //    DataViewRowState.Deleted |
                //    DataViewRowState.Added;

                Assert.AreEqual(4, rowCount, "OldFiltered");

                BinaryFormatter bf = new BinaryFormatter();
                MemoryStream ms = new MemoryStream();
                bf.Serialize(ms, aggTestColl);

                ms.Position = 0;
                aggCloneColl = (AggregateTestCollection)bf.Deserialize(ms);
                ms.Close();

                Assert.AreEqual(30, aggCloneColl.Count, "New");

                rowCount = 0;
                foreach (AggregateTest r in aggTestColl)
                {
                    if (r.es.IsAdded|| r.es.IsModified)
                    {
                        rowCount++;
                    }
                }
                foreach (AggregateTest r in aggTestColl.es.DeletedEntities)
                {
                    rowCount++;
                }
                //aggCloneColl.RowStateFilter = DataViewRowState.ModifiedCurrent |
                //    DataViewRowState.Deleted |
                //    DataViewRowState.Added;

                Assert.AreEqual(4, rowCount, "NewFiltered");
            }
        }
 public void AliasAndGetColumn()
 {
     int totalNo = 0;
     AggregateTestCollection collection = new AggregateTestCollection();
     collection.Query.Select(
         collection.Query.Age.Sum().As("total"));
     collection.Query.Load();
     totalNo = Convert.ToInt32(collection[0].GetColumn("total"));
     Assert.AreEqual(726, totalNo);
 }