public void Add7ItemsDuplicates_Remove3Items_Max2Items() { // Arrange var items = FirstLastListFactory.Create <Product>(); items.Add(new Product(0.50m, "coffee")); items.Add(new Product(1.20m, "mint drops")); items.Add(new Product(1.20m, "beer")); items.Add(new Product(2.22m, "chocolate")); items.Add(new Product(0.50m, "candy")); items.Add(new Product(0.01m, "cent")); items.Add(new Product(1.20m, "cola")); // Act var countRemoved = items.RemoveAll(new Product(1.20m, null)); var returnedItems = items.Max(3).Select(p => p.Title).ToList(); // Assert Assert.AreEqual(3, countRemoved); var expectedItems = new string[] { "chocolate", "coffee", "candy" }; CollectionAssert.AreEqual(expectedItems, returnedItems); }
public void ComplexTest_AllOperationsProducts() { var items = FirstLastListFactory.Create <Product>(); Assert.AreEqual(0, items.Count); items.Add(new Product(0.50m, "coffee")); Assert.AreEqual(1, items.Count); var first = items.First(1).FirstOrDefault(); var last = items.Last(1).FirstOrDefault(); var min = items.Min(1).FirstOrDefault(); var max = items.Max(1).FirstOrDefault(); Assert.AreEqual("coffee", first.Title); Assert.AreEqual("coffee", last.Title); Assert.AreEqual("coffee", min.Title); Assert.AreEqual("coffee", max.Title); items.Add(new Product(0.50m, "candy")); Assert.AreEqual(2, items.Count); first = items.First(1).FirstOrDefault(); last = items.Last(1).FirstOrDefault(); min = items.Min(1).FirstOrDefault(); max = items.Max(1).FirstOrDefault(); Assert.AreEqual("coffee", first.Title); Assert.AreEqual("candy", last.Title); Assert.AreEqual("coffee", min.Title); Assert.AreEqual("coffee", max.Title); items.Add(new Product(2.99m, "chocolate")); Assert.AreEqual(3, items.Count); first = items.First(1).FirstOrDefault(); last = items.Last(1).FirstOrDefault(); min = items.Min(1).FirstOrDefault(); max = items.Max(1).FirstOrDefault(); Assert.AreEqual("coffee", first.Title); Assert.AreEqual("chocolate", last.Title); Assert.AreEqual("coffee", min.Title); Assert.AreEqual("chocolate", max.Title); items.Add(new Product(0.50m, "candy")); Assert.AreEqual(4, items.Count); first = items.First(1).FirstOrDefault(); last = items.Last(1).FirstOrDefault(); min = items.Min(1).FirstOrDefault(); max = items.Max(1).FirstOrDefault(); Assert.AreEqual("coffee", first.Title); Assert.AreEqual("candy", last.Title); Assert.AreEqual("coffee", min.Title); Assert.AreEqual("chocolate", max.Title); var countRemoved = items.RemoveAll(new Product(0.50m, "some product")); Assert.AreEqual(3, countRemoved); Assert.AreEqual(1, items.Count); first = items.First(1).FirstOrDefault(); last = items.Last(1).FirstOrDefault(); min = items.Min(1).FirstOrDefault(); max = items.Max(1).FirstOrDefault(); Assert.AreEqual("chocolate", first.Title); Assert.AreEqual("chocolate", last.Title); Assert.AreEqual("chocolate", min.Title); Assert.AreEqual("chocolate", max.Title); items.Add(new Product(0.50m, "candy")); Assert.AreEqual(2, items.Count); first = items.First(1).FirstOrDefault(); last = items.Last(1).FirstOrDefault(); min = items.Min(1).FirstOrDefault(); max = items.Max(1).FirstOrDefault(); Assert.AreEqual("chocolate", first.Title); Assert.AreEqual("candy", last.Title); Assert.AreEqual("candy", min.Title); Assert.AreEqual("chocolate", max.Title); items.Clear(); Assert.AreEqual(0, items.Count); items.Add(new Product(2.50m, "beer")); items.Add(new Product(7.35m, "vodka")); items.Add(new Product(0.50m, "coffee")); items.Add(new Product(0.50m, "candy")); Assert.AreEqual(4, items.Count); var first2 = items.First(2).Select(p => p.Title).ToList(); var last2 = items.Last(2).Select(p => p.Title).ToList(); var min2 = items.Min(2).Select(p => p.Title).ToList(); var max2 = items.Max(2).Select(p => p.Title).ToList(); CollectionAssert.AreEqual(new string[] { "beer", "vodka" }, first2); CollectionAssert.AreEqual(new string[] { "candy", "coffee" }, last2); CollectionAssert.AreEqual(new string[] { "coffee", "candy" }, min2); CollectionAssert.AreEqual(new string[] { "vodka", "beer" }, max2); var removedCount = items.RemoveAll(new Product(12345, null)); Assert.AreEqual(0, removedCount); removedCount = items.RemoveAll(new Product(7.35m, null)); Assert.AreEqual(1, removedCount); removedCount = items.RemoveAll(new Product(2.50m, null)); Assert.AreEqual(1, removedCount); Assert.AreEqual(2, items.Count); first2 = items.First(2).Select(p => p.Title).ToList(); last2 = items.Last(2).Select(p => p.Title).ToList(); min2 = items.Min(2).Select(p => p.Title).ToList(); max2 = items.Max(2).Select(p => p.Title).ToList(); CollectionAssert.AreEqual(new string[] { "coffee", "candy" }, first2); CollectionAssert.AreEqual(new string[] { "candy", "coffee" }, last2); CollectionAssert.AreEqual(new string[] { "coffee", "candy" }, min2); CollectionAssert.AreEqual(new string[] { "coffee", "candy" }, max2); removedCount = items.RemoveAll(new Product(0.50m, null)); Assert.AreEqual(2, removedCount); Assert.AreEqual(0, items.Count); items.Add(new Product(0.50m, "milk")); items.Add(new Product(1.20m, "amstel")); items.Add(new Product(1.20m, "xxx")); Assert.AreEqual(3, items.Count); first2 = items.First(2).Select(p => p.Title).ToList(); last2 = items.Last(2).Select(p => p.Title).ToList(); min2 = items.Min(2).Select(p => p.Title).ToList(); max2 = items.Max(2).Select(p => p.Title).ToList(); CollectionAssert.AreEqual(new string[] { "milk", "amstel" }, first2); CollectionAssert.AreEqual(new string[] { "xxx", "amstel" }, last2); CollectionAssert.AreEqual(new string[] { "milk", "amstel" }, min2); CollectionAssert.AreEqual(new string[] { "amstel", "xxx" }, max2); removedCount = items.RemoveAll(new Product(0.50m, null)); Assert.AreEqual(1, removedCount); Assert.AreEqual(2, items.Count); removedCount = items.RemoveAll(new Product(1.20m, null)); Assert.AreEqual(2, removedCount); Assert.AreEqual(0, items.Count); items.Add(new Product(0.50m, "coffee")); Assert.AreEqual(1, items.Count); first = items.First(1).FirstOrDefault(); last = items.Last(1).FirstOrDefault(); min = items.Min(1).FirstOrDefault(); max = items.Max(1).FirstOrDefault(); Assert.AreEqual("coffee", first.Title); Assert.AreEqual("coffee", last.Title); Assert.AreEqual("coffee", min.Title); Assert.AreEqual("coffee", max.Title); }