예제 #1
0
        public async Task LoadCurrentCultureResourcesAsync_DoesNotReadAssembliesWhenThereAreNone()
        {
            // Arrange
            using var cultureReplacer = new CultureReplacer("en-GB");
            var invoker = new Mock <IJSUnmarshalledRuntime>();

            invoker.Setup(i => i.InvokeUnmarshalled <string[], object, object, Task <object> >(GetSatelliteAssemblies, new[] { "en-GB", "en" }, null, null))
            .Returns(Task.FromResult <object>(0))
            .Verifiable();

            var loader = new WebAssemblyCultureProvider(invoker.Object, CultureInfo.CurrentCulture, CultureInfo.CurrentUICulture);

            // Act
            await loader.LoadCurrentCultureResourcesAsync();

            // Assert
            invoker.Verify(i => i.InvokeUnmarshalled <object, object, object, object[]>(ReadSatelliteAssemblies, null, null, null), Times.Never());
        }
예제 #2
0
    public void ThrowIfCultureChangeIsUnsupported_ThrowsIfCulturesAreDifferentAndICUShardingIsUsed()
    {
        // Arrange
        Environment.SetEnvironmentVariable("__BLAZOR_SHARDED_ICU", "1");
        try
        {
            // WebAssembly is initialized with en-US
            var cultureProvider = new WebAssemblyCultureProvider(DefaultWebAssemblyJSRuntime.Instance, new CultureInfo("en-US"), new CultureInfo("en-US"));

            // Culture is changed to fr-FR as part of the app
            using var cultureReplacer = new CultureReplacer("fr-FR");

            var ex = Assert.Throws <InvalidOperationException>(() => cultureProvider.ThrowIfCultureChangeIsUnsupported());
            Assert.Equal("Blazor detected a change in the application's culture that is not supported with the current project configuration. " +
                         "To change culture dynamically during startup, set <BlazorWebAssemblyLoadAllGlobalizationData>true</BlazorWebAssemblyLoadAllGlobalizationData> in the application's project file.",
                         ex.Message);
        }
        finally
        {
            Environment.SetEnvironmentVariable("__BLAZOR_SHARDED_ICU", null);
        }
    }
예제 #3
0
        public async Task LoadCurrentCultureResourcesAsync_ReadsAssemblies()
        {
            // Arrange
            using var cultureReplacer = new CultureReplacer("en-GB");
            var invoker = new Mock <IJSUnmarshalledRuntime>();

            invoker.Setup(i => i.InvokeUnmarshalled <string[], object, object, Task <object> >(GetSatelliteAssemblies, new[] { "en-GB", "en" }, null, null))
            .Returns(Task.FromResult <object>(1))
            .Verifiable();

            invoker.Setup(i => i.InvokeUnmarshalled <object, object, object, object[]>(ReadSatelliteAssemblies, null, null, null))
            .Returns(new object[] { File.ReadAllBytes(GetType().Assembly.Location) })
            .Verifiable();

            var loader = new WebAssemblyCultureProvider(invoker.Object, CultureInfo.CurrentCulture, CultureInfo.CurrentUICulture);

            // Act
            await loader.LoadCurrentCultureResourcesAsync();

            // Assert
            invoker.Verify();
        }