Exemple #1
0
        public void WrapsSingleBreak()
        {
            int[] expected = new int[] { 1, 2, 3 };

            EnumerableTester <int> first;
            JoinedEnumerable <int> joined = InitSingle(out first);

            foreach (int actual in joined)
            {
                Assert.AreEqual(expected[0], actual, "first one was not what was expected.");
                break;
            }

            Assert.IsTrue(first.WasDisposed, "should have been disposed of.");
        }
        public void WrapsSingleBreak()
        {
            int[] expected = new int[] { 1, 2, 3 };

            EnumerableTester first;
            JoinedEnumerable joined = InitSingle(out first);

            foreach (int actual in joined)
            {
                Assert.AreEqual(expected[0], actual, "first one was not what was expected.");
                break;
            }

            // ensure that the first was disposed of even though we didn't enumerate
            // all the way through
            Assert.IsTrue(first.WasDisposed, "should have been disposed of.");
        }
Exemple #3
0
        public void WrapsSingle()
        {
            int[] expected = new int[] { 1, 2, 3 };

            EnumerableTester <int> first;
            JoinedEnumerable <int> joined = InitSingle(out first);

            int index = 0;

            foreach (int actual in joined)
            {
                Assert.AreEqual(expected[index], actual, "Failure at " + index);
                index++;
            }

            Assert.AreEqual(expected.Length, index, "Every expected value was found");
            Assert.IsTrue(first.WasDisposed, "should have been disposed of.");
        }
        public void WrapsMultiple()
        {
            int[] expected = new int[] { 1, 2, 3, 4, 5, 6 };

            EnumerableTester first;
            EnumerableTester second;
            JoinedEnumerable joined = InitMultiple(out first, out second);

            int index = 0;

            foreach (int actual in joined)
            {
                Assert.AreEqual(expected[index], actual, "Failure at " + index.ToString());
                index++;
            }

            Assert.AreEqual(expected.Length, index, "Every expected value was found");
            Assert.IsTrue(first.WasDisposed, "first should have been disposed of.");
            Assert.IsTrue(second.WasDisposed, "second should have been disposed of. ");
        }
Exemple #5
0
        private static void WrapsMultipleBreak(int breakIndex)
        {
            int[] expected = new int[] { 1, 2, 3, 4, 5, 6 };

            EnumerableTester <int> first;
            EnumerableTester <int> second;
            JoinedEnumerable <int> joined = InitMultiple(out first, out second);

            int index = 0;

            foreach (int actual in joined)
            {
                Assert.AreEqual(expected[index], actual, "Failure at " + index);
                index++;
                if (index == breakIndex)
                {
                    break;
                }
            }

            Assert.IsTrue(first.WasDisposed, "first should have been disposed of.");
            Assert.IsTrue(second.WasDisposed, "second should have been disposed of. ");
        }
Exemple #6
0
        protected string GenerateSubquery(PersistentClass model, IMapping mapping)
        {
            Dialect.Dialect dialect  = Factory.Dialect;
            Settings        settings = Factory.Settings;

            if (!model.HasSubclasses)
            {
                return(model.Table.GetQualifiedName(dialect, settings.DefaultCatalogName, settings.DefaultSchemaName));
            }

            HashedSet <Column> columns = new HashedSet <Column>();

            foreach (Table table in model.SubclassTableClosureIterator)
            {
                if (!table.IsAbstractUnionTable)
                {
                    foreach (Column column in table.ColumnIterator)
                    {
                        columns.Add(column);
                    }
                }
            }

            StringBuilder buf = new StringBuilder().Append("( ");
            IEnumerable <PersistentClass> siter =
                new JoinedEnumerable <PersistentClass>(new SingletonEnumerable <PersistentClass>(model),
                                                       new SafetyEnumerable <PersistentClass>(model.SubclassIterator));

            foreach (PersistentClass clazz in siter)
            {
                Table table = clazz.Table;
                if (!table.IsAbstractUnionTable)
                {
                    buf.Append("select ");
                    foreach (Column col in columns)
                    {
                        if (!table.ContainsColumn(col))
                        {
                            SqlType sqlType = col.GetSqlTypeCode(mapping);
                            buf.Append(dialect.GetSelectClauseNullString(sqlType)).Append(" as ");
                        }
                        buf.Append(col.Name);
                        buf.Append(StringHelper.CommaSpace);
                    }
                    buf.Append(clazz.SubclassId).Append(" as clazz_");
                    buf.Append(" from ").Append(table.GetQualifiedName(dialect, settings.DefaultCatalogName, settings.DefaultSchemaName));
                    buf.Append(" union ");
                    if (dialect.SupportsUnionAll)
                    {
                        buf.Append("all ");
                    }
                }
            }

            if (buf.Length > 2)
            {
                //chop the last union (all)
                buf.Length -= (dialect.SupportsUnionAll ? 11 : 7);                 //" union " : "all "
            }

            return(buf.Append(" )").ToString());
        }