public void StaticInstanceSameAsCreateInstance() { PrismContainerExtension.Reset(); var created = PrismContainerExtension.Create(new Container()); Assert.Same(created, PrismContainerExtension.Current); }
public void StaticInstanceSameAsNewInstance() { PrismContainerExtension.Reset(); var newInstance = new PrismContainerExtension(); Assert.Same(newInstance, PrismContainerExtension.Current); }
protected override void RegisterTypes(IContainerRegistry containerRegistry) { // Core Services PrismContainerExtension.Create(Container.GetContainer()); containerRegistry.Register <IFileService, FileService>(); // App Services containerRegistry.Register <IApplicationInfoService, ApplicationInfoService>(); containerRegistry.Register <ISystemService, SystemService>(); containerRegistry.Register <IPersistAndRestoreService, PersistAndRestoreService>(); containerRegistry.Register <IThemeSelectorService, ThemeSelectorService>(); containerRegistry.RegisterSingleton <IToastNotificationsService, ToastNotificationsService>(); // Views containerRegistry.RegisterForNavigation <SettingsPage, SettingsViewModel>(PageKeys.Settings); containerRegistry.RegisterForNavigation <MainPage, MainViewModel>(PageKeys.Main); containerRegistry.RegisterForNavigation <ShellWindow, ShellViewModel>(); // Configuration var configuration = BuildConfiguration(); var appConfig = configuration .GetSection(nameof(AppConfig)) .Get <AppConfig>(); // Register configurations to IoC containerRegistry.RegisterInstance <IConfiguration>(configuration); containerRegistry.RegisterInstance <AppConfig>(appConfig); }
public void SingletonFactoryIsResolved() { lock (testLock) { PrismContainerExtension.Reset(); GC.Collect(); int counter = 0; var services = new ServiceCollection(); services.AddSingleton <IFoo>(sp => new Foo { Message = $"Foo has been resolved {++counter} time(s)." }); PrismContainerExtension.Current.CreateServiceProvider(services); IFoo foo = null; var ex = Record.Exception(() => foo = PrismContainerExtension.Current.Resolve <IFoo>()); Assert.Null(ex); Assert.NotNull(foo); Assert.Equal(1, counter); Assert.Equal("Foo has been resolved 1 time(s).", foo.Message); var foo2 = PrismContainerExtension.Current.Resolve <IFoo>(); Assert.Equal(1, counter); Assert.Same(foo, foo2); Assert.Equal("Foo has been resolved 1 time(s).", foo2.Message); } }
public static void InitializeContainer(Action <IContainer> registerPlatformService) { var container = new Container(); registerPlatformService(container); PrismContainerExtension.Init(container); ContainerLocator.SetContainerExtension(() => PrismContainerExtension.Current); }
public void CreateCanOnlyBeCalledOnce() { var newInstance1 = CreateContainer(); Assert.Same(newInstance1, PrismContainerExtension.Current); var ex = Record.Exception(() => PrismContainerExtension.Init()); Assert.NotNull(ex); Assert.IsType <NotSupportedException>(ex); }
public void RegisterInstanceResolveSameNamedInstance() { PrismContainerExtension.Reset(); var c = PrismContainerExtension.Current; var foo = new Foo(); c.RegisterInstance <IFoo>(foo, "test"); Assert.True(c.IsRegistered <IFoo>("test")); Assert.Same(foo, c.Resolve <IFoo>("test")); }
public void WarningGeneratedFromMultipleInstances() { PrismContainerExtension.Reset(); var listener = new MockListener(); Trace.Listeners.Add(listener); var newInstance1 = new PrismContainerExtension(); var newInstance2 = new PrismContainerExtension(); Assert.Single(listener.Messages); Assert.NotSame(newInstance1, PrismContainerExtension.Current); Assert.Same(newInstance2, PrismContainerExtension.Current); }
public void ScopedServiceNotSupported() { var services = new ServiceCollection(); services.AddScoped <IFoo, Foo>(); var container = new PrismContainerExtension(); IServiceProvider serviceProvider = null; var ex = Record.Exception(() => serviceProvider = container.CreateServiceProvider(services)); Assert.NotNull(ex); Assert.IsType <NotSupportedException>(ex); }
public void RegisterTransientService() { PrismContainerExtension.Reset(); var c = PrismContainerExtension.Current; c.Register <IFoo, Foo>(); IFoo foo = null; var ex = Record.Exception(() => foo = c.Resolve <IFoo>()); Assert.Null(ex); Assert.NotNull(foo); Assert.IsType <Foo>(foo); }
// Initialize IOC container public static void InitializeServiceLocator(Action <IContainer> registerPlatformTypes) { if (!FirstLoad) { return; } var container = new Container(GetContainerRules()); registerPlatformTypes(container); RegisterCommonTypes(container); PrismContainerExtension.Init(container); ContainerLocator.SetContainerExtension(() => PrismContainerExtension.Current); }
public void FactoryCreatesSingletonTypeWithoutContainerProvider() { PrismContainerExtension.Reset(); var c = PrismContainerExtension.Current; var message = "expected"; c.RegisterSingletonFromDelegate <IFoo>(FooFactory); IFoo foo = null; var ex = Record.Exception(() => foo = c.Resolve <IFoo>()); Assert.Null(ex); Assert.Equal(message, foo.Message); Assert.Same(foo, c.Resolve <IFoo>()); }
public void SingletonServiceIsRegistered() { var services = new ServiceCollection(); services.AddSingleton <IFoo, Foo>(); var container = PrismContainerExtension.Init(); var serviceProvider = container.CreateServiceProvider(services); object service = null; var ex = Record.Exception(() => service = serviceProvider.GetService(typeof(IFoo))); Assert.Null(ex); Assert.NotNull(service); Assert.IsAssignableFrom <IFoo>(service); Assert.IsType <Foo>(service); Assert.Same(service, serviceProvider.GetService(typeof(IFoo))); }
public void RegisterSingletonNamedService() { PrismContainerExtension.Reset(); var c = PrismContainerExtension.Current; c.RegisterSingleton <IFoo, Foo>("fooBar"); IFoo foo = null; var ex = Record.Exception(() => foo = c.Resolve <IFoo>()); Assert.NotNull(ex); ex = null; ex = Record.Exception(() => foo = c.Resolve <IFoo>("fooBar")); Assert.Null(ex); Assert.NotNull(foo); Assert.IsType <Foo>(foo); Assert.Same(foo, c.Resolve <IFoo>("fooBar")); }
public void FactoryCreatesSingletonTypeWithServiceProviderFromGeneric() { PrismContainerExtension.Reset(); var c = PrismContainerExtension.Current; var expectedMessage = "constructed with IServiceProvider"; c.RegisterSingletonFromDelegate <IBar>(BarFactoryWithIServiceProvider); c.RegisterInstance <IFoo>(new Foo { Message = expectedMessage }); IBar bar = null; var ex = Record.Exception(() => bar = c.Resolve <IBar>()); Assert.Null(ex); Assert.False(string.IsNullOrWhiteSpace(bar.Foo.Message)); Assert.Equal(expectedMessage, bar.Foo.Message); Assert.Same(bar, c.Resolve <IBar>()); }
public void ScopedServiceIsSupported() { lock (testLock) { PrismContainerExtension.Reset(); GC.Collect(); var services = new ServiceCollection(); services.AddScoped <IFoo, Foo>(); var container = PrismContainerExtension.Current; IServiceProvider serviceProvider = null; var ex = Record.Exception(() => serviceProvider = container.CreateServiceProvider(services)); Assert.Null(ex); Assert.True(((IContainerProvider)container).IsRegistered <IFoo>()); } }
public void FactoryCreatesSingletonTypeWithContainerProviderWithGeneric() { PrismContainerExtension.Reset(); var c = PrismContainerExtension.Current; var expectedMessage = "constructed with IContainerProvider"; c.RegisterSingletonFromDelegate <IBar>(BarFactoryWithIContainerProvider); c.RegisterSingleton <IFoo, Foo>(); IBar bar = null; var ex = Record.Exception(() => bar = c.Resolve <IBar>()); Assert.Null(ex); Assert.IsType <Bar>(bar); Assert.Equal(expectedMessage, ((Bar)bar).Message); Assert.Same(c.Resolve <IFoo>(), bar.Foo); Assert.Same(c.Resolve <IBar>(), bar); }
protected override void RegisterTypes(IContainerRegistry containerRegistry) { // Core Services containerRegistry.Register <IMicrosoftGraphService, MicrosoftGraphService>(); PrismContainerExtension.Create(Container.GetContainer()); PrismContainerExtension.Current.RegisterServices(s => { s.AddHttpClient("msgraph", client => { client.BaseAddress = new System.Uri("https://graph.microsoft.com/v1.0/"); }); }); containerRegistry.Register <IIdentityCacheService, IdentityCacheService>(); containerRegistry.RegisterSingleton <IIdentityService, IdentityService>(); containerRegistry.Register <IFileService, FileService>(); // App Services containerRegistry.RegisterSingleton <IUserDataService, UserDataService>(); containerRegistry.Register <ISystemService, SystemService>(); containerRegistry.Register <IPersistAndRestoreService, PersistAndRestoreService>(); containerRegistry.Register <IThemeSelectorService, ThemeSelectorService>(); // Views containerRegistry.RegisterForNavigation <SettingsPage, SettingsViewModel>(PageKeys.Settings); containerRegistry.RegisterForNavigation <MainPage, MainViewModel>(PageKeys.Main); containerRegistry.RegisterForNavigation <ShellWindow, ShellViewModel>(); // Configuration var configuration = BuildConfiguration(); var appConfig = configuration .GetSection(nameof(AppConfig)) .Get <AppConfig>(); // Register configurations to IoC containerRegistry.RegisterInstance <IConfiguration>(configuration); containerRegistry.RegisterInstance <AppConfig>(appConfig); }
public void ResolveWithSpecifiedTypeOverridesRegistration() { PrismContainerExtension.Reset(); var c = PrismContainerExtension.Current; c.Register <IBar, Bar>(); var foo = new Foo { Message = "This shouldn't be resolved" }; c.RegisterInstance <IFoo>(foo); var overrideFoo = new Foo { Message = "We expect this one" }; Assert.Same(foo, c.Resolve <IFoo>()); var bar = c.Resolve <IBar>((typeof(IFoo), overrideFoo)); Assert.Same(overrideFoo, bar.Foo); }
public void SingletonInstanceIsResolved() { lock (testLock) { PrismContainerExtension.Reset(); GC.Collect(); var foo = new Foo(); var services = new ServiceCollection(); services.AddSingleton <IFoo>(foo); var container = PrismContainerExtension.Create(); var serviceProvider = container.CreateServiceProvider(services); object service = null; var ex = Record.Exception(() => service = serviceProvider.GetService(typeof(IFoo))); Assert.Null(ex); Assert.NotNull(service); Assert.IsAssignableFrom <IFoo>(service); Assert.IsType <Foo>(service); Assert.Same(foo, service); } }
public void TransientServiceIsRegistered() { lock (testLock) { PrismContainerExtension.Reset(); GC.Collect(); var services = new ServiceCollection(); services.AddTransient <IFoo, Foo>(); var container = PrismContainerExtension.Init(); var serviceProvider = container.CreateServiceProvider(services); object service = null; var ex = Record.Exception(() => service = serviceProvider.GetService(typeof(IFoo))); Assert.Null(ex); Assert.NotNull(service); Assert.IsAssignableFrom <IFoo>(service); Assert.IsType <Foo>(service); Assert.NotSame(service, serviceProvider.GetService(typeof(IFoo))); } }
public void RegisterManyHasSameInstanceAcrossServices() { PrismContainerExtension.Reset(); var c = PrismContainerExtension.Current; c.RegisterManySingleton <FooBarImpl>(); IFoo foo = null; IBar bar = null; var ex = Record.Exception(() => foo = c.Resolve <IFoo>()); Assert.Null(ex); Assert.NotNull(foo); Assert.IsType <FooBarImpl>(foo); ex = Record.Exception(() => bar = c.Resolve <IBar>()); Assert.Null(ex); Assert.NotNull(bar); Assert.IsType <FooBarImpl>(bar); Assert.Same(foo, bar); }
//}]} protected override void RegisterTypes(IContainerRegistry containerRegistry) { // Core Services //{[{ containerRegistry.Register <IMicrosoftGraphService, MicrosoftGraphService>(); PrismContainerExtension.Create(Container.GetContainer()); PrismContainerExtension.Current.RegisterServices(s => { s.AddHttpClient("msgraph", client => { client.BaseAddress = new System.Uri("https://graph.microsoft.com/v1.0/"); }); }); containerRegistry.Register <IIdentityCacheService, IdentityCacheService>(); containerRegistry.RegisterSingleton <IIdentityService, IdentityService>(); //}]} // App Services //{[{ containerRegistry.RegisterSingleton <IUserDataService, UserDataService>(); //}]} }
public PrismApplicationTests() { Xamarin.Forms.Mocks.MockForms.Init(); PrismContainerExtension.Init(); }
public MicrosoftExtensionsTests() { PrismContainerExtension.Reset(); }
protected override IContainerExtension Init() => PrismContainerExtension.Init();
public void Dispose() { PrismContainerExtension.Reset(); PageNavigationRegistry.ClearRegistrationCache(); }
public CommonAspNetServiceTests() { PrismContainerExtension.Reset(); }
protected override IContainerExtension CreateContainerExtension() { return(PrismContainerExtension.Current ?? PrismContainerExtension.Create()); }
private AppMock CreateApp(string runtimePlatform = "Test") { Xamarin.Forms.Mocks.MockForms.Init(runtimePlatform); PrismContainerExtension.Reset(); return(new AppMock()); }