public void AggregateQueryConcatenatesIndividualQueriesIfNoOrderingButSequenceIsInvalid()
        {
            // Arrange
            IEnumerable <IQueryable <string> > sources = new[] {
                Enumerable.Range(0, 3).Select(i => i + "C").AsQueryable(),
                GetInvalidSequence("B"),
                Enumerable.Range(0, 3).Select(i => i + "A").AsQueryable(),
            };

            // Act
            var aggregateQuery = new AggregateQuery <string>(sources, StringComparer.Ordinal, NullLogger.Instance, ignoreFailures: false);

            // Assert
            ExceptionAssert.Throws <Exception>(() => aggregateQuery.ToArray(), "Bad sequence");
        }
        public void AggregateQueryConcatenatesIndividualQueriesIfNoOrderingButSequenceIsInvalid()
        {
            // Arrange
            IEnumerable<IQueryable<string>> sources = new[] {
                Enumerable.Range(0, 3).Select(i => i + "C").AsQueryable(),
                GetInvalidSequence("B"),
                Enumerable.Range(0, 3).Select(i => i + "A").AsQueryable(),
            };

            // Act
            var aggregateQuery = new AggregateQuery<string>(sources, StringComparer.Ordinal, NullLogger.Instance, ignoreFailures: false);

            // Assert
            ExceptionAssert.Throws<Exception>(() => aggregateQuery.ToArray(), "Bad sequence");
        }
        public void AggregateQueryConcatenatesIndividualQueriesIfNoOrderingIsAvailable()
        {
            // Arrange
            IEnumerable <IQueryable <string> > sources = new[] {
                Enumerable.Range(0, 3).Select(i => i + "C").AsQueryable(),
                Enumerable.Range(0, 3).Select(i => i + "A").AsQueryable(),
            };

            // Act
            var aggregateQuery = new AggregateQuery <string>(sources, StringComparer.Ordinal, NullLogger.Instance, ignoreFailures: false);

            // Assert
            Assert.Equal(
                new[] { "0C", "1C", "2C", "0A", "1A", "2A" },
                aggregateQuery.ToArray()
                );
        }
        public void AggregateQueryConcatenatesIndividualQueriesIfNoOrderingIsAvailable()
        {
            // Arrange
            IEnumerable<IQueryable<string>> sources = new[] {
                Enumerable.Range(0, 3).Select(i => i + "C").AsQueryable(),
                Enumerable.Range(0, 3).Select(i => i + "A").AsQueryable(),
            };

            // Act
            var aggregateQuery = new AggregateQuery<string>(sources, StringComparer.Ordinal, NullLogger.Instance, ignoreFailures: false);

            // Assert
            Assert.Equal(
                new[] { "0C", "1C", "2C", "0A", "1A", "2A" },
                aggregateQuery.ToArray()
            );
        }
        public void AggregateQueryIgnoresInvalidRepositoriesIfFlagIsSet()
        {
            // Arrange
            IEnumerable <IQueryable <string> > sources = new[] {
                Enumerable.Range(0, 3).Select(i => i + "A").AsQueryable(),
                GetInvalidSequence("B"),
                Enumerable.Range(0, 3).Select(i => i + "C").AsQueryable(),
            };

            // Act
            var aggregateQuery = new AggregateQuery <string>(sources, StringComparer.Ordinal, NullLogger.Instance, ignoreFailures: true).OrderBy(c => c);

            // Assert
            Assert.Equal(
                new[] { "0A", "0C", "1A", "1C", "2A", "2C" },
                aggregateQuery.ToArray()
                );
        }
        public void AggregateQueryIgnoresInvalidRepositoriesIfFlagIsSet()
        {
            // Arrange
            IEnumerable<IQueryable<string>> sources = new[] {
                Enumerable.Range(0, 3).Select(i => i + "A").AsQueryable(),
                GetInvalidSequence("B"),
                Enumerable.Range(0, 3).Select(i => i + "C").AsQueryable(),
            };

            // Act
            var aggregateQuery = new AggregateQuery<string>(sources, StringComparer.Ordinal, NullLogger.Instance, ignoreFailures: true).OrderBy(c => c);

            // Assert
            Assert.Equal(
                new[] { "0A", "0C", "1A", "1C", "2A", "2C" },
                aggregateQuery.ToArray()
            );
        }