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); }
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."); }
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."); }
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); }