public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .UseMauiApp <App>() .UseMobileBlazorBindings() .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); }); builder.Services.AddMauiBlazorWebView(); builder.Services.AddSingleton <CounterState>(); return(builder.Build()); }
public void EnsureHandlerCreated(Action <MauiAppBuilder> additionalCreationActions = null) { if (_isCreated) { return; } _isCreated = true; var appBuilder = MauiApp .CreateBuilder(); additionalCreationActions?.Invoke(appBuilder); _mauiApp = appBuilder.Build(); _mauiContext = new ContextStub(_mauiApp.Services); }
public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .RegisterBlazorMauiWebView() .UseMauiApp <App>() .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); }); builder.Services.AddBlazorWebView(); builder.Services.AddSingleton <WeatherForecastService>(); return(builder.Build()); }
public void GetServiceHandlesUsesCorrectCtor_DefaultWithBar() { var builder = MauiApp.CreateBuilder(); builder.Services.AddTransient <IBarService, BarService>(); builder.Services.AddTransient <IFooBarService, FooTrioConstructor>(); var mauiApp = builder.Build(); var service = mauiApp.Services.GetService <IFooBarService>(); var trio = Assert.IsType <FooTrioConstructor>(service); Assert.Null(trio.Foo); Assert.Null(trio.Bar); Assert.Null(trio.Cat); Assert.Equal("()", trio.Option); }
public void CanSpecifyHandler() { var mauiApp = MauiApp.CreateBuilder() .UseMauiApp <ApplicationStub>() .ConfigureMauiHandlers(handlers => handlers.AddHandler <Button, ButtonHandlerStub>()) .Build(); Assert.NotNull(mauiApp.Services); var handlers = mauiApp.Services.GetRequiredService <IMauiHandlersFactory>(); Assert.NotNull(handlers); var specificHandler = handlers.GetHandler(typeof(Button)); Assert.NotNull(specificHandler); Assert.AreEqual(typeof(ButtonHandlerStub), specificHandler.GetType()); }
public void GetServiceCanReturnTypesThatHaveRegisteredConstructorParamsAndHaveDefaultValues() { var builder = MauiApp.CreateBuilder(); builder.Services.AddTransient <IBarService, BarService>(); builder.Services.AddTransient <IFooBarService, FooDefaultValueConstructor>(); var mauiApp = builder.Build(); var foo = mauiApp.Services.GetService <IFooBarService>(); Assert.NotNull(foo); var actual = Assert.IsType <FooDefaultValueConstructor>(foo); Assert.NotNull(actual.Bar); Assert.IsType <BarService>(actual.Bar); }
public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .RegisterBlazorMauiWebView() .UseMauiApp <App>() .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); }); var configuration = builder.Configuration; configuration.AddInMemoryCollection(new Dictionary <string, string> { ["apiBaseUrl"] = "https://theidserver-duende.herokuapp.com/api", ["authenticationPaths:remoteRegisterPath"] = "/identity/account/register", ["authenticationPaths:remoteProfilePath"] = "/identity/account/manage", ["userOptions:roleClaim"] = "role", ["providerOptions:authority"] = "https://theidserver-duende.herokuapp.com", ["providerOptions:clientId"] = "theidserveradmin", ["providerOptions:defaultScopes"] = @" [ ""openid"", ""profile"", ""theidserveradminapi"" ]", ["providerOptions:postLogoutRedirectUri"] = "https://theidserver-duende.herokuapp.com/authentication/logout-callback", ["providerOptions:postLogoutRedirectUri"] = "https://theidserver-duende.herokuapp.com/authentication/login-callback", ["providerOptions:responseType"] = "code", ["welcomeContenUrl"] = "https://theidserver-duende.herokuapp.com/api/welcomefragment", ["settingsOptions:typeName"] = "Aguacongas.TheIdServer.BlazorApp.Models.ServerConfig, Aguacongas.TheIdServer.BlazorApp.Infrastructure", ["settingsOptions:apiUrl"] = "https://theidserver-duende.herokuapp.com/api/api/configuration", ["menuOptions:showSettings"] = "true" }); var settings = configuration.Get <Settings>(); var services = builder.Services.AddBlazorWebView(); WebAssemblyHostBuilderExtensions.ConfigureServices(services, configuration, settings); return(builder.Build()); }
public void AppConfigurationReachesBuilder() { var builder = MauiApp.CreateBuilder(); builder.Host .ConfigureAppConfiguration((_, builder) => { builder.AddInMemoryCollection(new Dictionary <string, string> { { "key 1", "value 1" }, }); }); var appConfigValue = builder.Configuration["key 1"]; var mauiApp = builder.Build(); Assert.Equal("value 1", appConfigValue); }
public void ConfigureAppConfigurationConfiguresValues() { var builder = MauiApp.CreateBuilder(); builder.Host .ConfigureAppConfiguration((_, builder) => { builder.AddInMemoryCollection(new Dictionary <string, string> { { "key 1", "value 1" }, }); }); var mauiApp = builder.Build(); var configuration = mauiApp.Services.GetRequiredService <IConfiguration>(); Assert.Equal("value 1", configuration["key 1"]); }
public void ConfigureFontsRegistersTheCorrectServices() { var builder = MauiApp .CreateBuilder() .ConfigureFonts(); var mauiApp = builder.Build(); var manager = mauiApp.Services.GetRequiredService <IFontManager>(); Assert.NotNull(manager); var registrar = mauiApp.Services.GetRequiredService <IFontRegistrar>(); Assert.NotNull(registrar); var loader = mauiApp.Services.GetRequiredService <IEmbeddedFontLoader>(); Assert.NotNull(loader); }
public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .UseMauiApp <App>() .ConfigureEssentials(essentials => { essentials.UseVersionTracking(); #if WINDOWS essentials.UseMapServiceToken("RJHqIE53Onrqons5CNOx~FrDr3XhjDTyEXEjng-CRoA~Aj69MhNManYUKxo6QcwZ0wmXBtyva0zwuHB04rFYAPf7qqGJ5cHb03RCDw1jIW8l"); #endif essentials.AddAppAction("app_info", "App Info", icon: "app_info_action_icon"); essentials.AddAppAction("battery_info", "Battery Info"); essentials.OnAppAction(App.HandleAppActions); }); return(builder.Build()); }
public void GetServiceCanReturnEnumerableParams() { var builder = MauiApp.CreateBuilder(); builder.Services.AddTransient <IFooService, FooService>(); builder.Services.AddTransient <IFooService, FooService2>(); builder.Services.AddTransient <IFooBarService, FooEnumerableService>(); var mauiApp = builder.Build(); var service = mauiApp.Services.GetService <IFooBarService>(); var foobar = Assert.IsType <FooEnumerableService>(service); var serviceTypes = foobar.Foos .Select(s => s.GetType().FullName) .ToArray(); Assert.Contains(typeof(FooService).FullName, serviceTypes); Assert.Contains(typeof(FooService2).FullName, serviceTypes); }
public void CanAddLoggingProviders() { var loggerProvider = new MyLoggerProvider(); var builder = MauiApp.CreateBuilder(); builder .Logging .Services .AddSingleton <ILoggerProvider>(loggerProvider); var mauiApp = builder.Build(); ILogger logger = mauiApp.Services.GetService <ILogger <HostBuilderLoggingTests> >(); logger.LogError("An error"); Assert.Single(loggerProvider.Messages); Assert.Equal("An error", loggerProvider.Messages[0]); }
public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .UseMauiApp <App>() .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); }); builder.Services.AddMauiBlazorWebView(); #if DEBUG builder.Services.AddBlazorWebViewDeveloperTools(); #endif builder.Services.AddSingleton <WeatherForecastService>(); return(builder.Build()); }
public static MauiApp CreateMauiApp() { var appBuilder = MauiApp.CreateBuilder(); appBuilder .ConfigureTests(new TestOptions { Assemblies = { typeof(MauiProgram).Assembly }, }) .UseHeadlessRunner(new HeadlessRunnerOptions { RequiresUIContext = true, }) .UseVisualRunner(); return(appBuilder.Build()); }
public void AddingMemoryStreamBackedConfigurationWorks() { var builder = MauiApp.CreateBuilder(); var jsonConfig = @"{ ""foo"": ""bar"" }"; using var ms = new MemoryStream(); using var sw = new StreamWriter(ms); sw.WriteLine(jsonConfig); sw.Flush(); ms.Position = 0; builder.Configuration.AddJsonStream(ms); Assert.AreEqual("bar", builder.Configuration["foo"]); using var app = builder.Build(); Assert.AreEqual("bar", app.Configuration["foo"]); }
public void DelegateEventsFireExactlyOnce() { var eventFired = 0; var newValue = 0; var mauiApp = MauiApp.CreateBuilder() .ConfigureLifecycleEvents(builder => builder.AddEvent <CustomDelegate>("TestEvent", param => param + 1)) .Build(); var service = mauiApp.Services.GetRequiredService <ILifecycleEventService>(); service.InvokeEvents <CustomDelegate>("TestEvent", del => { eventFired++; newValue = del(10); }); Assert.Equal(1, eventFired); Assert.Equal(11, newValue); }
public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .UseMauiApp <App>() .ConfigureEssentials() .ConfigureCoreServices() .ConfigureServices() .ConfigurePages() .ConfigureViewModels() .ConfigureFonts(fonts => { fonts.AddFont("SpaceMono-Bold.ttf", "SpaceMonoBold"); fonts.AddFont("SpaceMono-Italic.ttf", "SpaceMonoItalic"); fonts.AddFont("SpaceMono-Regular.ttf", "SpaceMonoRegular"); }); return(builder.Build()); }
public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .UseMauiApp <App>() .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold"); }); //-:cnd:noEmit #if DEBUG builder.Logging.AddDebug(); #endif //+:cnd:noEmit return(builder.Build()); }
public void CanAddMultipleEventsViaBuilder() { var event1Fired = 0; var event2Fired = 0; var mauiApp = MauiApp.CreateBuilder() .ConfigureLifecycleEvents(builder => { builder.AddEvent("TestEvent", () => event1Fired++); builder.AddEvent("TestEvent", () => event2Fired++); }) .Build(); var service = mauiApp.Services.GetRequiredService <ILifecycleEventService>(); service.InvokeEvents("TestEvent"); Assert.Equal(1, event1Fired); Assert.Equal(1, event2Fired); }
public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .UseMauiApp <App>() .UseMauiCommunityToolkitMarkup() .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold"); fonts.AddFont("Font Awesome 6 Free-Regular-400.otf", "FontAwesome"); }); builder.Services.AddSingleton <MainViewModel>(); builder.Services.AddSingleton <MainPage>(); return(builder.Build()); }
public void WillRetrieveEnumerables() { var builder = MauiApp.CreateBuilder(); builder.Services.AddTransient <IFooService, FooService>(); builder.Services.AddTransient <IFooService, FooService2>(); var mauiApp = builder.Build(); var fooServices = mauiApp.Services .GetServices <IFooService>() .ToArray(); Assert.Equal(2, fooServices.Length); var serviceTypes = fooServices .Select(s => s.GetType().FullName) .ToArray(); Assert.Contains(typeof(FooService).FullName, serviceTypes); Assert.Contains(typeof(FooService2).FullName, serviceTypes); }
public void MauiAppCanObserveSourcesClearedInInnerBuild() { using var listener = new HostingListener(hostBuilder => { hostBuilder.ConfigureHostConfiguration(config => { // Clearing here would not remove the app config added via builder.Configuration. config.AddInMemoryCollection(new Dictionary <string, string>() { { "A", "A" }, }); }); hostBuilder.ConfigureAppConfiguration(config => { // This clears both the chained host configuration and chained builder.Configuration. config.Sources.Clear(); config.AddInMemoryCollection(new Dictionary <string, string>() { { "B", "B" }, }); }); }); var builder = MauiApp.CreateBuilder(); builder.Configuration.AddInMemoryCollection(new Dictionary <string, string>() { { "C", "C" }, }); using var app = builder.Build(); Assert.True(string.IsNullOrEmpty(app.Configuration["A"])); Assert.True(string.IsNullOrEmpty(app.Configuration["C"])); Assert.AreEqual("B", app.Configuration["B"]); Assert.AreSame(builder.Configuration, app.Configuration); }
public static MauiApp CreateMauiApp() { BitExceptionHandlerBase.Current = new SampleExceptionHandler(); Simple.OData.Client.V4Adapter.Reference(); AssemblyContainer.Current.Init(); var builder = MauiApp.CreateBuilder(); builder.Host.UseServiceProviderFactory(new BitServiceProviderFactory(ConfigureServicesImpl)); builder .RegisterBlazorMauiWebView() .UseMauiApp <App>() .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); }); return(builder.Build()); }
public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .RegisterBlazorMauiWebView() .UseMauiApp <App>() .ConfigureEssentials() .ConfigureServices() .ConfigureViewModels() .ConfigureFonts(fonts => { fonts.AddFont("Segoe-Ui-Bold.ttf", "SegoeUiBold"); fonts.AddFont("Segoe-Ui-Regular.ttf", "SegoeUiRegular"); fonts.AddFont("Segoe-Ui-Semibold.ttf", "SegoeUiSemibold"); fonts.AddFont("Segoe-Ui-Semilight.ttf", "SegoeUiSemilight"); }); Barrel.ApplicationId = "dotnetpodcasts"; return(builder.Build()); }
public static MauiApp CreateMauiApp() { var appBuilder = MauiApp.CreateBuilder(); #if WINDOWS Microsoft.Maui.Essentials.Platform.MapServiceToken = "RJHqIE53Onrqons5CNOx~FrDr3XhjDTyEXEjng-CRoA~Aj69MhNManYUKxo6QcwZ0wmXBtyva0zwuHB04rFYAPf7qqGJ5cHb03RCDw1jIW8l"; #endif appBuilder .ConfigureLifecycleEvents(lifecycle => { #if __IOS__ lifecycle .AddiOS(iOS => iOS .OpenUrl((app, url, options) => Microsoft.Maui.Essentials.Platform.OpenUrl(app, url, options)) .ContinueUserActivity((application, userActivity, completionHandler) => Microsoft.Maui.Essentials.Platform.ContinueUserActivity(application, userActivity, completionHandler)) .PerformActionForShortcutItem((application, shortcutItem, completionHandler) => Microsoft.Maui.Essentials.Platform.PerformActionForShortcutItem(application, shortcutItem, completionHandler))); #elif WINDOWS lifecycle .AddWindows(windows => { windows .OnLaunched((app, e) => Microsoft.Maui.Essentials.Platform.OnLaunched(e)); windows .OnActivated((window, e) => Microsoft.Maui.Essentials.Platform.OnActivated(window, e)); }); #endif }) .UseMauiApp <App>(); return(appBuilder.Build()); }
public static MauiApp CreateMauiApp() { var appBuilder = MauiApp.CreateBuilder(); appBuilder .ConfigureLifecycleEvents(life => { #if ANDROID life.AddAndroid(android => { android.OnCreate((a, b) => DefaultContext = a); }); #elif WINDOWS life.AddWindows(windows => { windows.OnWindowCreated((w) => DefaultWindow = w); }); #endif }) .ConfigureTests(new TestOptions { Assemblies = { typeof(MauiProgram).Assembly }, }) .UseHeadlessRunner(new HeadlessRunnerOptions { RequiresUIContext = true, }) .UseVisualRunner(); var mauiApp = appBuilder.Build(); DefaultTestApp = mauiApp.Services.GetRequiredService <IApplication>(); return(mauiApp); }
public static MauiApp CreateMauiApp() { var appBuilder = MauiApp.CreateBuilder(); appBuilder .ConfigureLifecycleEvents(life => { #if __ANDROID__ life.AddAndroid(android => { android.OnCreate((activity, bundle) => Platform.Init(activity, bundle)); android.OnRequestPermissionsResult((activity, requestCode, permissions, grantResults) => Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults)); }); #endif }) .ConfigureTests(new TestOptions { Assemblies = { typeof(MauiProgram).Assembly }, SkipCategories = Traits .GetSkipTraits() #if __ANDROID__ .Append($"{Traits.FileProvider}={Traits.FeatureSupport.ToExclude(Platform.HasApiLevel(24))}") #endif .ToList(), }) .UseHeadlessRunner(new HeadlessRunnerOptions { RequiresUIContext = true, }) .UseVisualRunner(); return(appBuilder.Build()); }
public void CanRetrieveFontUsingConcreteImageSource() { var builder = MauiApp .CreateBuilder() .ConfigureFonts() .ConfigureImageSources(); var mauiApp = builder.Build(); var manager = mauiApp.Services.GetRequiredService <IFontManager>(); Assert.NotNull(manager); var images = mauiApp.Services.GetRequiredService <IImageSourceServiceProvider>(); Assert.NotNull(images); var imageSourceService = images.GetRequiredImageSourceService <FontImageSourceStub>(); Assert.NotNull(imageSourceService); var fontService = Assert.IsType <FontImageSourceService>(imageSourceService); Assert.Equal(manager, fontService.FontManager); }
public void EnsureHandlerCreated(Action <MauiAppBuilder> additionalCreationActions = null) { if (_isCreated) { return; } _isCreated = true; var appBuilder = MauiApp .CreateBuilder() .ConfigureMauiHandlers(handlers => { //handlers.AddHandler(typeof(Editor), typeof(EditorHandler)); //handlers.AddHandler(typeof(Editor), typeof(EditorHandler)); //handlers.AddHandler(typeof(VerticalStackLayout), typeof(LayoutHandler)); }); additionalCreationActions?.Invoke(appBuilder); _mauiApp = appBuilder.Build(); _mauiContext = new ContextStub(_mauiApp.Services); }