Пример #1
0
        public void Should_resolve_to_user_defined_themes_directory_When_url_starts_with_macro()
        {
            var resolver     = new ThemeCssUrlResolver(CreateMockThemePathProvider());
            var resolvedPath = resolver.ResolveCssUrl("{UserAppData}/dark.css");

            resolvedPath.Should().Be(Path.Combine(UserDefinedThemesMockPath, "dark.css"));
        }
Пример #2
0
        public void Should_resolve_to_preinstalled_themes_directory_by_default()
        {
            var resolver     = new ThemeCssUrlResolver(CreateMockThemePathProvider());
            var resolvedPath = resolver.ResolveCssUrl("dark.css");

            resolvedPath.Should().Be(Path.Combine(PreinstalledThemesMockPath, "dark.css"));
        }
Пример #3
0
        public void Should_override_imported_color_When_current_theme_redefines_it(
            [Values(KnownColor.Control)] KnownColor colorName,
            [ValueSource(nameof(TestColorValues))] Color baseColor,
            [ValueSource(nameof(AlternativeTestColorValues))] Color colorOverride)
        {
            var pathProvider = CreateMockPathProvider();
            var resolver     = new ThemeCssUrlResolver(pathProvider);

            string themePath     = Path.Combine(pathProvider.AppThemesDirectory, "theme.css");
            string baseThemePath = Path.Combine(pathProvider.AppThemesDirectory, "base.css");

            var mockFileReader = CreateMockFileReader(new Dictionary <string, string>
            {
                [baseThemePath] = GetThemeContent(colorName, baseColor),
                [themePath]     =
                    "@import url(\"base.css\");" + Environment.NewLine +
                    GetThemeContent(colorName, colorOverride)
            });

            var loader = new ThemeLoader(resolver, mockFileReader);

            var theme = loader.LoadTheme(themePath, new ThemeId("theme", isBuiltin: true), allowedClasses: ThemeVariations.None);

            theme.GetColor(colorName).ToArgb().Should().Be(colorOverride.ToArgb());
        }
Пример #4
0
        public void Should_honor_css_import_directive(
            [Values(KnownColor.Control)] KnownColor colorName,
            [ValueSource(nameof(TestColorValues))] Color baseColor)
        {
            var pathProvider = CreateMockPathProvider();
            var resolver     = new ThemeCssUrlResolver(pathProvider);

            string themePath     = Path.Combine(pathProvider.AppThemesDirectory, "theme.css");
            string baseThemePath = Path.Combine(pathProvider.AppThemesDirectory, "base.css");

            var mockFileReader = CreateMockFileReader(new Dictionary <string, string>
            {
                [baseThemePath] = GetThemeContent(colorName, baseColor),
                [themePath]     = "@import url(\"base.css\");",
            });

            var loader = new ThemeLoader(resolver, mockFileReader);

            var theme = loader.LoadTheme(themePath, new ThemeId("theme", isBuiltin: true), allowedClasses: ThemeVariations.None);

            theme.GetColor(colorName).ToArgb().Should().Be(baseColor.ToArgb());
        }
Пример #5
0
        public void Should_throw_When_cyclic_css_imports()
        {
            var pathProvider = CreateMockPathProvider();
            var resolver     = new ThemeCssUrlResolver(pathProvider);

            string themePath     = Path.Combine(pathProvider.AppThemesDirectory, "theme.css");
            string baseThemePath = Path.Combine(pathProvider.AppThemesDirectory, "base.css");

            var mockFileReader = CreateMockFileReader(new Dictionary <string, string>
            {
                [baseThemePath] = "@import url(\"theme.css\");",
                [themePath]     = "@import url(\"base.css\");"
            });

            var loader = new ThemeLoader(resolver, mockFileReader);

            loader.Invoking(_ => _.LoadTheme(
                                themePath,
                                new ThemeId("theme", isBuiltin: true),
                                allowedClasses: ThemeVariations.None))
            .Should().Throw <ThemeException>()
            .Which.Message.Should().Contain("Cycling CSS import");
        }