public void CombineFilteredOriginalAndCombine()
        {
            // Load a collection and apply a filter.
            OrderItemCollection coll = new OrderItemCollection();

            coll.es.Connection.ConnectionString =
                UnitTestBase.GetFktString(coll.es.Connection);

            coll.LoadAll();
            Assert.AreEqual(15, coll.Count);
            coll.Filter = coll.AsQueryable().Where(f => f.ProductID == 1);
            Assert.AreEqual(4, coll.Count);

            // Load a second collection and apply a different filter.
            OrderItemCollection coll2 = new OrderItemCollection();

            coll2.es.Connection.ConnectionString =
                UnitTestBase.GetFktString(coll2.es.Connection);

            coll2.LoadAll();
            Assert.AreEqual(15, coll2.Count);
            coll2.Filter = coll2.AsQueryable().Where(f => f.ProductID == 2);
            Assert.AreEqual(3, coll2.Count);

            // Add only the 3 filtered rows from coll2
            // to all 15 rows in coll1.
            // The filter for coll1 still applies.
            // None of the items from coll2 appear,
            // until the filter is removed from coll1.
            coll.Combine(coll2);
            Assert.AreEqual(4, coll.Count);
            coll.Filter = null;
            Assert.AreEqual(18, coll.Count);
        }
        public void CombineFilteredOriginal()
        {
            // Load a collection and apply a filter
            OrderItemCollection coll = new OrderItemCollection();

            coll.es.Connection.ConnectionString =
                UnitTestBase.GetFktString(coll.es.Connection);

            coll.LoadAll();
            Assert.AreEqual(15, coll.Count);
            coll.Filter = coll.AsQueryable().Where(f => f.ProductID == 1);
            Assert.AreEqual(4, coll.Count);

            // Load a second collection
            OrderItemCollection coll2 = new OrderItemCollection();

            coll2.es.Connection.ConnectionString =
                UnitTestBase.GetFktString(coll2.es.Connection);

            coll2.LoadAll();
            Assert.AreEqual(15, coll2.Count);

            // Combine the 15 rows from the second collection
            // to the 15 rows from the first collection.
            // Since the first collection still has a filter,
            // only 8 rows are counted (4 from the first and 4 from the second).
            coll.Combine(coll2);
            Assert.AreEqual(8, coll.Count);

            // Remove the filter to count all 30 rows.
            coll.Filter = null;
            Assert.AreEqual(30, coll.Count);
        }
        public void CombineBuildOriginal()
        {
            // Start with an empty collection
            OrderItemCollection coll = new OrderItemCollection();

            coll.es.Connection.ConnectionString =
                UnitTestBase.GetFktString(coll.es.Connection);

            Assert.AreEqual(0, coll.Count);

            OrderItemCollection coll2 = new OrderItemCollection();

            coll2.es.Connection.ConnectionString =
                UnitTestBase.GetFktString(coll2.es.Connection);

            coll2.LoadAll();
            Assert.AreEqual(15, coll2.Count);
            coll2.Filter = coll2.AsQueryable().Where(f => f.ProductID == 1);
            Assert.AreEqual(4, coll2.Count);

            // Add only the 4 filtered rows for coll2
            coll.Combine(coll2);
            Assert.AreEqual(4, coll.Count);

            OrderItemCollection coll3 = new OrderItemCollection();

            coll3.es.Connection.ConnectionString =
                UnitTestBase.GetFktString(coll3.es.Connection);

            coll3.LoadAll();
            Assert.AreEqual(15, coll3.Count);
            coll3.Filter = coll3.AsQueryable().Where(f => f.ProductID == 2);
            Assert.AreEqual(3, coll3.Count);

            // Add only the 3 filtered rows for coll3
            // coll1 now has all 7 rows
            coll.Combine(coll3);
            Assert.AreEqual(7, coll.Count);
        }
        public void CombineFilteredCombine()
        {
            OrderItemCollection coll = new OrderItemCollection();

            coll.es.Connection.ConnectionString =
                UnitTestBase.GetFktString(coll.es.Connection);

            coll.LoadAll();
            Assert.AreEqual(15, coll.Count);

            OrderItemCollection coll2 = new OrderItemCollection();

            coll2.es.Connection.ConnectionString =
                UnitTestBase.GetFktString(coll2.es.Connection);

            coll2.LoadAll();
            Assert.AreEqual(15, coll2.Count);
            coll2.Filter = coll.AsQueryable().Where(f => f.ProductID == 1);
            Assert.AreEqual(4, coll2.Count);

            coll.Combine(coll2);
            Assert.AreEqual(19, coll.Count);
        }