public void WhenGettingServicesWithoutOverrideThenReturnsSameAsOriginals() { ProcessorConfiguration config = new ProcessorConfiguration(); HandlerServices services = new HandlerServices(config.Services); // Act var localVal = services.GetServices(typeof(IFilterProvider)); var globalVal = config.Services.GetServices(typeof(IFilterProvider)); // Assert // Local handler didn't override, should get same value as global case. Assert.Equal(localVal.ToArray(), globalVal.ToArray()); }
public void WhenAddingServiceToOverrideThenOriginalIsNotMutated() { // Handler Services has "copy on write" semantics for inherited list. // It can get the inherited list and mutate it. ProcessorConfiguration config = new ProcessorConfiguration(); ServicesContainer global = config.Services; HandlerServices services = new HandlerServices(global); IFilterProvider resolver = new Mock <IFilterProvider>().Object; // Act services.Add(typeof(IFilterProvider), resolver); // appends to end // Assert IEnumerable <object> original = global.GetServices(typeof(IFilterProvider)); object[] modified = services.GetServices(typeof(IFilterProvider)).ToArray(); Assert.True(original.Count() > 1); object[] expected = original.Concat(new object[] { resolver }).ToArray(); Assert.Equal(expected, modified); }