public void DurationList() { Init(); //For Bus var bus = _toReachOfficeResolver.Resolve(s => s.TravelBy == TravelBy.Bus); bus.Duration(); //For Car var car = _toReachOfficeResolver.Resolve(s => s.TravelBy == TravelBy.Car); car.Duration(); //For Taxi var taxi = _toReachOfficeResolver.Resolve(s => s.TravelBy == TravelBy.Taxi); taxi.Duration(); //After few days busness want to add one more feature called bike //To implement that I have adde Bike class with implementation //and add enum value for bik, no other changes. //Am I violating open close principle. //For Bike //var bike = toReachOfficeResolver.Resolve(s => s.TravelBy == TravelBy.Bike); //bike.Duration(); }
//[TestCase(TravelBy.Bike , typeof(ByBike))] public void Test(TravelBy travelBy, Type strategyType) { var strategy = _toReachOfficeStrategiesResolver.Resolve(s => s.TravelBy == travelBy); Assert.That(strategy.GetType(), Is.EqualTo(strategyType)); }