public void ResizeTest() { //Arrange var capatity1 = 2; var newcapatity1 = 4; var capatity2 = 6; var newcapatity2 = 4; var garage1 = new Garage <Vehicle>(capatity1); var garage2 = new Garage <Vehicle>(capatity2); var garage3 = new Garage <Vehicle>(capatity2); var item1 = mockDataSource[Rnd.Next(0, mockDataSource.Count - 1)]; for (int i = 0; i < capatity1; i++) { while (garage1.Where(v => v != null).Any(v => v.Eq(item1))) { item1 = mockDataSource[Rnd.Next(0, mockDataSource.Count - 1)]; } garage1.Add(item1); } for (int i = 0; i < capatity2; i++) { while (garage2.Where(v => v != null).Any(v => v.Eq(item1))) { item1 = mockDataSource[Rnd.Next(0, mockDataSource.Count - 1)]; } garage2.Add(item1); garage3.Add(item1); } //act var wasfull = garage1.IsFull; var leftovers1 = garage1.Resize(newcapatity1); var leftovers2 = garage2.Resize(newcapatity2); var isfull = garage1.IsFull; var expectedcount1 = 0; var actualcount1 = leftovers1.Length; var expectedcount2 = (capatity2 - newcapatity2); var actualcount2 = leftovers2.Length; var checkIfNoLeftovers2InGarage2 = true; // does Linq support own predicats in stead of eqauls? foreach (var itemIn in garage2.Where(v => v != null)) { foreach (var itemOut in leftovers2) { if (itemIn.Eq(itemOut)) { checkIfNoLeftovers2InGarage2 = false; break; } } } var checkifLeftooversWasInGarage = true; foreach (var itemOut in leftovers2) { checkifLeftooversWasInGarage = checkifLeftooversWasInGarage | garage3.Any(v => v.Eq(itemOut)); if (checkifLeftooversWasInGarage == false) { break; } } //assert Assert.IsTrue(wasfull & (!isfull), "When rezing a full garage to something bigger the garage stayed full"); Assert.AreEqual(expectedcount1, actualcount1, "When rezing a full garage to something bigger Some items was returned, and shouldn't"); Assert.AreEqual(expectedcount2, actualcount2, "When resizing to as smaller, and some pre element didn't fit, the returned elemetns was the wrong count"); Assert.IsTrue(checkIfNoLeftovers2InGarage2, "When resizing to as smaller, and some pre element didn't fit, Some returned elments stays in garage, and shouldn't"); Assert.IsTrue(checkifLeftooversWasInGarage, "When resizing to as smaller, and some pre element didn't fit, Some returned elemts wasn't in the garage"); }