public void EnumerateNone([Values(0, 1, 2, 3, 100 /*, 200_000_000*/)] int count)
        {
            var collection = new StubCollection(count);

            AssertToArrayBehaviour(() => collection.AsLowCostLinq().Where(i => i != 0).ToArray(), count, 0);
            AssertToArrayBehaviour(() => collection.AsLowCostLinqWithoutChecks().Where(i => i != 0).ToArray(), count, 0);
            AssertIEnumerableBehaviour(() => collection.AsLowCostLinq().Where(i => i != 0), count, 0);
            AssertIEnumerableBehaviour(() => collection.AsLowCostLinqWithoutChecks().Where(i => i != 0), count, 0);

            AssertToArrayBehaviour(() => collection.AsLowCostLinq().Where(i => i != 0).Where(i => i != 0).ToArray(), count, 0);
            AssertToArrayBehaviour(() => collection.AsLowCostLinqWithoutChecks().Where(i => i != 0).Where(i => i != 0).ToArray(), count, 0);
            AssertIEnumerableBehaviour(() => collection.AsLowCostLinq().Where(i => i != 0).Where(i => i != 0), count, 0);
            AssertIEnumerableBehaviour(() => collection.AsLowCostLinqWithoutChecks().Where(i => i != 0).Where(i => i != 0), count, 0);

            AssertToArrayBehaviour(() => collection.AsLowCostLinq().Where(i => i != 0).Where(i => i != 0).Where(i => i != 0).ToArray(), count, 0);
            AssertToArrayBehaviour(() => collection.AsLowCostLinqWithoutChecks().Where(i => i != 0).Where(i => i != 0).Where(i => i != 0).ToArray(), count, 0);
            AssertIEnumerableBehaviour(() => collection.AsLowCostLinq().Where(i => i != 0).Where(i => i != 0).Where(i => i != 0), count, 0);
            AssertIEnumerableBehaviour(() => collection.AsLowCostLinqWithoutChecks().Where(i => i != 0).Where(i => i != 0).Where(i => i != 0), count, 0);

            AssertToArrayBehaviour(() => collection.AsLowCostLinq().Where(i => i != 0).Where(i => i != 0).Where(i => i != 0).Where(i => i != 0).ToArray(), count, 0);
            AssertToArrayBehaviour(() => collection.AsLowCostLinqWithoutChecks().Where(i => i != 0).Where(i => i != 0).Where(i => i != 0).Where(i => i != 0).ToArray(), count, 0);
            AssertIEnumerableBehaviour(() => collection.AsLowCostLinq().Where(i => i != 0).Where(i => i != 0).Where(i => i != 0).Where(i => i != 0), count, 0);
            AssertIEnumerableBehaviour(() => collection.AsLowCostLinqWithoutChecks().Where(i => i != 0).Where(i => i != 0).Where(i => i != 0).Where(i => i != 0), count, 0);

            AssertToArrayBehaviour(() => collection.AsLowCostLinq().Where(i => i != 0).Where(i => i != 0).Where(i => i != 0).Where(i => i != 0).Where(i => i != 0).ToArray(), count, 0);
            AssertToArrayBehaviour(() => collection.AsLowCostLinqWithoutChecks().Where(i => i != 0).Where(i => i != 0).Where(i => i != 0).Where(i => i != 0).Where(i => i != 0).ToArray(), count, 0);
            AssertIEnumerableBehaviour(() => collection.AsLowCostLinq().Where(i => i != 0).Where(i => i != 0).Where(i => i != 0).Where(i => i != 0).Where(i => i != 0), count, 0);
            AssertIEnumerableBehaviour(() => collection.AsLowCostLinqWithoutChecks().Where(i => i != 0).Where(i => i != 0).Where(i => i != 0).Where(i => i != 0).Where(i => i != 0), count, 0);
        }
        public void BreakEarly([Values(0, 1, 2, 3, 100 /*, 200_000_000*/)] int count, [Values(0, 1, 5)] int breakAfter)
        {
            var collection = new StubCollection(count);

            AssertEarlyBreakToArrayBehaviour(() => collection.AsLowCostLinq().Take(breakAfter).ToArray(), count, breakAfter);
            AssertEarlyBreakToArrayBehaviour(() => collection.AsLowCostLinqWithoutChecks().Take(breakAfter).ToArray(), count, breakAfter);
            AssertEarlyBreakIEnumerableBehaviour(() => collection.AsLowCostLinq().Take(breakAfter), count, breakAfter);
            AssertEarlyBreakIEnumerableBehaviour(() => collection.AsLowCostLinqWithoutChecks().Take(breakAfter), count, breakAfter);

            AssertEarlyBreakToArrayBehaviour(() => collection.AsLowCostLinq().Where(i => i == 0).Take(breakAfter).ToArray(), count, breakAfter);
            AssertEarlyBreakToArrayBehaviour(() => collection.AsLowCostLinqWithoutChecks().Where(i => i == 0).Take(breakAfter).ToArray(), count, breakAfter);
            AssertEarlyBreakIEnumerableBehaviour(() => collection.AsLowCostLinq().Where(i => i == 0).Take(breakAfter), count, breakAfter);
            AssertEarlyBreakIEnumerableBehaviour(() => collection.AsLowCostLinqWithoutChecks().Where(i => i == 0).Take(breakAfter), count, breakAfter);

            AssertEarlyBreakToArrayBehaviour(() => collection.AsLowCostLinq().Where(i => i == 0).Where(i => i == 0).Take(breakAfter).ToArray(), count, breakAfter);
            AssertEarlyBreakToArrayBehaviour(() => collection.AsLowCostLinqWithoutChecks().Where(i => i == 0).Where(i => i == 0).Take(breakAfter).ToArray(), count, breakAfter);
            AssertEarlyBreakIEnumerableBehaviour(() => collection.AsLowCostLinq().Where(i => i == 0).Where(i => i == 0).Take(breakAfter), count, breakAfter);
            AssertEarlyBreakIEnumerableBehaviour(() => collection.AsLowCostLinqWithoutChecks().Where(i => i == 0).Where(i => i == 0).Take(breakAfter), count, breakAfter);

            AssertEarlyBreakToArrayBehaviour(() => collection.AsLowCostLinq().Where(i => i == 0).Where(i => i == 0).Where(i => i == 0).Take(breakAfter).ToArray(), count, breakAfter);
            AssertEarlyBreakToArrayBehaviour(() => collection.AsLowCostLinqWithoutChecks().Where(i => i == 0).Where(i => i == 0).Where(i => i == 0).Take(breakAfter).ToArray(), count, breakAfter);
            AssertEarlyBreakIEnumerableBehaviour(() => collection.AsLowCostLinq().Where(i => i == 0).Where(i => i == 0).Where(i => i == 0).Take(breakAfter), count, breakAfter);
            AssertEarlyBreakIEnumerableBehaviour(() => collection.AsLowCostLinqWithoutChecks().Where(i => i == 0).Where(i => i == 0).Where(i => i == 0).Take(breakAfter), count, breakAfter);

            AssertEarlyBreakToArrayBehaviour(() => collection.AsLowCostLinq().Where(i => i == 0).Where(i => i == 0).Where(i => i == 0).Where(i => i == 0).Take(breakAfter).ToArray(), count, breakAfter);
            AssertEarlyBreakToArrayBehaviour(() => collection.AsLowCostLinqWithoutChecks().Where(i => i == 0).Where(i => i == 0).Where(i => i == 0).Where(i => i == 0).Take(breakAfter).ToArray(), count, breakAfter);
            AssertEarlyBreakIEnumerableBehaviour(() => collection.AsLowCostLinq().Where(i => i == 0).Where(i => i == 0).Where(i => i == 0).Where(i => i == 0).Take(breakAfter), count, breakAfter);
            AssertEarlyBreakIEnumerableBehaviour(() => collection.AsLowCostLinqWithoutChecks().Where(i => i == 0).Where(i => i == 0).Where(i => i == 0).Where(i => i == 0).Take(breakAfter), count, breakAfter);

            AssertEarlyBreakToArrayBehaviour(() => collection.AsLowCostLinq().Where(i => i == 0).Where(i => i == 0).Where(i => i == 0).Where(i => i == 0).Where(i => i == 0).Take(breakAfter).ToArray(), count, breakAfter);
            AssertEarlyBreakToArrayBehaviour(() => collection.AsLowCostLinqWithoutChecks().Where(i => i == 0).Where(i => i == 0).Where(i => i == 0).Where(i => i == 0).Where(i => i == 0).Take(breakAfter).ToArray(), count, breakAfter);
            AssertEarlyBreakIEnumerableBehaviour(() => collection.AsLowCostLinq().Where(i => i == 0).Where(i => i == 0).Where(i => i == 0).Where(i => i == 0).Where(i => i == 0).Take(breakAfter), count, breakAfter);
            AssertEarlyBreakIEnumerableBehaviour(() => collection.AsLowCostLinqWithoutChecks().Where(i => i == 0).Where(i => i == 0).Where(i => i == 0).Where(i => i == 0).Where(i => i == 0).Take(breakAfter), count, breakAfter);
        }
        public async Task GenericCollection_UpdateItem_ShouldReturnTrue()
        {
            // Arrange
            var initialPrice = 100;
            var finalPrice   = 200;

            var collection = new StubCollection();
            var item       = _fixture
                             .Build <StubModel>()
                             .With(x => x.Price, initialPrice)
                             .Create();

            await collection.Add(item);

            item.Price = finalPrice;
            var expectedResult = true;

            // Act
            var result = await collection.Update(item.Id, item);

            var finalItem = (await collection.Items()).FirstOrDefault(x => x.Id == item.Id);

            // Assert
            result
            .Should()
            .Be(expectedResult);

            finalItem.Price
            .Should()
            .Be(finalPrice);
        }
Example #4
0
        public void TestRemoveInvalidIndex()
        {
            StubCollection testedCollection = new StubCollection();

            testedCollection.RemoveAt(0);

            Assert.Fail("The RemoveAt(index) did not throw an Exception although an invalid index was passed.");
        }
Example #5
0
        public void TestRemoveInvalidItem()
        {
            StubCollection testedCollection = new StubCollection();

            bool foundAndRemoved = testedCollection.Remove(new TestObject());

            Assert.IsFalse(foundAndRemoved, "The Remove(item) method returned true although an invalid item was passed.");
        }
Example #6
0
        public void TestRemoveInvalidKey()
        {
            StubCollection testedCollection = new StubCollection();

            bool foundAndRemoved = testedCollection.Remove("InvalidKey");

            Assert.IsFalse(foundAndRemoved, "The Remove(key) method returned true although an invalid key was passed.");
        }
        public void TestRemoveInvalidIndex()
        {
            StubCollection testedCollection = new StubCollection();

            Assert.Throws <ArgumentOutOfRangeException>(() => testedCollection.RemoveAt(0));

            //Assert.Fail( "The RemoveAt(index) did not throw an Exception although an invalid index was passed." );
        }
        public void AssertEarlyBreakToArrayBehaviour(Func <int[]> testedAction, int inputCount, int breakAfter)
        {
            StubCollection.ResetStatistics();

            var array = testedAction();

            Assert.AreEqual(Math.Min(inputCount, breakAfter), array.Length);
            StubCollection.VeryfiEnumerateBechaviourAfterEarlyBreakAndReset(inputCount, breakAfter);
        }
        public void AssertToArrayBehaviour(Func <int[]> testedAction, int inputCount, int outputCount)
        {
            StubCollection.ResetStatistics();

            var array = testedAction();

            Assert.AreEqual(outputCount, array.Length);
            StubCollection.VeryfiEnumerateBechaviourAndReset(inputCount);
        }
        public async Task GenericCollection_AddItems_ShouldReturnTrue()
        {
            // Arrange
            var collection     = new StubCollection();
            var items          = _fixture.CreateMany <StubModel>(5);
            var expectedResult = true;

            // Act
            var result = await collection.Add(items);

            // Assert
            result
            .Should()
            .Be(expectedResult);
        }
        public void AssertEarlyBreakIEnumerableBehaviour(Func <IEnumerable <int> > testedAction, int inputCount, int breakAfter)
        {
            StubCollection.ResetStatistics();

            var result = testedAction();

            Assert.AreEqual(Math.Min(inputCount, breakAfter), result.Count());
            StubCollection.VeryfiEnumerateBechaviourAfterEarlyBreakAndReset(inputCount, breakAfter);

            Assert.AreEqual(Math.Min(inputCount, breakAfter), Enumerate(testedAction()).count);
            StubCollection.VeryfiEnumerateBechaviourAfterEarlyBreakAndReset(inputCount, breakAfter);

            AssertCorrectEnumeratorBehaviour(testedAction().GetEnumerator());
            StubCollection.VeryfiEnumerateBechaviourAfterEarlyBreakAndReset(inputCount, breakAfter);

            Assert.Throws <NotImplementedException>(() => testedAction().GetEnumerator().Reset());
        }
        public async Task GenericCollection_DeleteItem_ShouldReturnTrue()
        {
            // Arrange
            var collection = new StubCollection();
            var item       = _fixture.Create <StubModel>();
            await collection.Add(item);

            var expectedResult = true;

            // Act
            var result = await collection.Delete(item.Id);

            // Assert
            result
            .Should()
            .Be(expectedResult);
        }
        public async Task GenericCollection_GetItems_ShouldReturnAddedItems()
        {
            // Arrange
            var collection = new StubCollection();
            var items      = _fixture.CreateMany <StubModel>(5);
            await collection.Add(items);

            var expectedResult = items.ToList();

            // Act
            var result = await collection.Items();

            // Assert
            result
            .Should()
            .BeEquivalentTo(expectedResult);
        }