Esempio n. 1
0
        public void Filter_ForVehicleColorNumber_returns_Empty()
        {
            var vehicle1 = new Vehicle()
            {
                VehicleNumber = "KA-03-8986", VehicleColor = ColorEnums.Black
            };
            var vehicle2 = new Vehicle()
            {
                VehicleNumber = "KA-03-8981", VehicleColor = ColorEnums.Black
            };
            var vehicle3 = new Vehicle()
            {
                VehicleNumber = "KA-03-8982", VehicleColor = ColorEnums.Brown
            };
            var vehicle4 = new Vehicle()
            {
                VehicleNumber = "KA-03-8983", VehicleColor = ColorEnums.Yellow
            };
            var vehicle5 = new Vehicle()
            {
                VehicleNumber = "KA-03-8984", VehicleColor = ColorEnums.Magenta
            };


            IParkingManagement parkingMgmt = new ParkingManagement(5);

            parkingMgmt.AddVehicleToSlot(vehicle1);
            parkingMgmt.AddVehicleToSlot(vehicle2);
            parkingMgmt.AddVehicleToSlot(vehicle3);
            parkingMgmt.AddVehicleToSlot(vehicle4);
            parkingMgmt.AddVehicleToSlot(vehicle5);

            var slots    = parkingMgmt.GetParkingSlotsInformation().AsEnumerable();
            var filter   = new ParkingSlotFilter();
            var criteria = new VehicleColorCriteria(ColorEnums.Red);
            var result   = filter.Filter(slots, criteria);

            Assert.IsTrue(result.Count() == 0);

            var criteria1 = new VehicleNumberCriteria("KA-03-8981");
            var result1   = filter.Filter(slots, criteria1);

            Assert.IsTrue(result1.Count() == 1);
            Assert.IsTrue(result1.ElementAt(0).VehicleInSlot.VehicleNumber == "KA-03-8981");

            var criteria3 = new ConjunctionCriteria <ParkingSlot>(criteria, criteria1);
            var result2   = filter.Filter(slots, criteria3);

            Assert.IsTrue(result2.Count() == 0);

            var criteria4 = new VehicleNumberCriteria("KA-03-8988");
            var result3   = filter.Filter(slots, criteria4);

            Assert.IsTrue(result3.Count() == 0);

            var criteria5 = new ConjunctionCriteria <ParkingSlot>(criteria, criteria4);
            var result4   = filter.Filter(slots, criteria5);

            Assert.IsTrue(result4.Count() == 0);
        }
        public void AddCriteria(SearchCriteriaContract contract)
        {
            var wordListCriteria = contract as WordListCriteriaContract;

            if (contract.Key != CriteriaKey || wordListCriteria == null)
            {
                return;
            }

            var newCriteria = new ConjunctionCriteria();

            foreach (var wordCriteria in wordListCriteria.Disjunctions)
            {
                newCriteria.Disjunctions.Add(CriteriaConditionBuilder.Create(wordCriteria));
            }

            CriteriaList.Add(newCriteria);
        }