예제 #1
0
        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");
        }