public void HigherPriorityClassIsPickedOverLowerPriorityDuringRegistration() { // arrange var sut = new AutomaticRegistrationMock(); // act sut.RetrieveClassesRequiringRegistration(true); // assert sut.DiscoveredTypes.Should().Contain(typeof(HigherPriorityDummy)); sut.DiscoveredTypes.Should().NotContain(typeof(DefaultPriorityDummy)); }
public void GatherAndAutoRegisterConcretionClasses() { // arrange const bool autoRegister = true; var sut = new AutomaticRegistrationMock(); // act sut.RetrieveConcretionClassesRequiringRegistration(autoRegister); // assert sut.RegisterConcretionClassesCalled.Should().BeTrue(); }
public void ConcretionRegistrationPicksUpClassesThatInheritFromInterfacesInheritingBaseInterface() { // arrange const bool autoRegister = false; var sut = new AutomaticRegistrationMock(); // act sut.RetrieveConcretionClassesRequiringRegistration(autoRegister); // assert sut.DiscoveredConcretionClasses[typeof(IInterfaceDummy)].Should().Contain(typeof(DoubleInterfaceImplementationDummy)); }
public void ConcretionRegistrationIgnoresInterfacesThatImplementInterfaces() { // arrange const bool autoRegister = false; var sut = new AutomaticRegistrationMock(); // act sut.RetrieveConcretionClassesRequiringRegistration(autoRegister); // assert sut.DiscoveredConcretionClasses[typeof(IInterfaceDummy)].Should().NotContain(typeof(IDeepInterfaceDummy)); }
public void ConcretionRegistrationAvoidsAbstractChildClasses() { // arrange const bool autoRegister = false; var sut = new AutomaticRegistrationMock(); // act sut.RetrieveConcretionClassesRequiringRegistration(autoRegister); // assert sut.DiscoveredConcretionClasses[typeof(BaseClassDummy)].Should().NotContain(typeof(InheritingAbstractDummy)); }
public void GatherClassesForAutomaticRegistration() { // arrange const bool autoRegister = false; const int knownClassesWithAutomaticRegistration = 1; var sut = new AutomaticRegistrationMock(); // act sut.RetrieveClassesRequiringRegistration(autoRegister); // assert sut.RegisterClassesCalled.Should().BeFalse(); sut.RegisteredClasses.Should().BeGreaterOrEqualTo(knownClassesWithAutomaticRegistration); sut.DiscoveredTypes.Should().Contain(typeof(AutomaticRegistrationDummy)); }
public void RetrieveAllClassesImplementingABaseClass() { // arrange const bool autoRegister = false; const int knowConcretionClasses = 2; const int knownConcretionBases = 2; var sut = new AutomaticRegistrationMock(); // act sut.RetrieveConcretionClassesRequiringRegistration(autoRegister); // assert sut.ConcretionClassesRegistered.Should().BeGreaterOrEqualTo(knowConcretionClasses); sut.ConcretionBaseClasses.Should().BeGreaterOrEqualTo(knownConcretionBases); sut.RegisterConcretionClassesCalled.Should().BeFalse(); sut.DiscoveredConcretionClasses.Should().ContainKey(typeof(BaseClassDummy)); sut.DiscoveredConcretionClasses.Should().ContainKey(typeof(IInterfaceDummy)); sut.DiscoveredConcretionClasses[typeof(BaseClassDummy)].Should().Contain(typeof(ConcretionClassDummy)); sut.DiscoveredConcretionClasses[typeof(IInterfaceDummy)].Should() .Contain(typeof(InterfaceImplementationDummy)); }