public ThemeSwitcher(string assemblyDir = null) { var reader = new CacheableResourceReader <Theme>(); var rootDir = assemblyDir ?? Directory.GetParent(Assembly.GetCallingAssembly().Location).ToString(); var themeDir = Path.Combine(rootDir, "Themes"); var resources = new ResourceDirectory <Theme>(new ThemeKeyValueGenerator(), themeDir, "*.xaml"); _finder = new ResourceFinder <Theme>(resources); _state = new ResourceState <Theme>(new ResourceUpdater <Theme>(reader, Application.Current.Resources.MergedDictionaries)); }
public void ResourceCompositeTest() { var dir = new ResourceDirectory <Theme>(new ThemeKeyValueGenerator(), _themeDir, "*.xaml"); var finder = new ResourceFinder <Theme>(dir); var reader = new CacheableResourceReader <Theme>(); var r = new ResourceDictionary(); var mergedDictionaries = r.MergedDictionaries; var switcher = new ResourceState <Theme>(new ResourceUpdater <Theme>(reader, mergedDictionaries)); PrivateObject po = new PrivateObject(reader); var cachedDic = (po.GetField("_cachedDictionaries") as IDictionary <string, ResourceDictionary>); Assert.AreEqual(0, cachedDic.Count); switcher.Switch(finder, "General"); Assert.AreEqual("General", switcher.Current.Id); Assert.AreEqual(1, cachedDic.Count); switcher.Switch(finder, "Solarized"); Assert.AreEqual("Solarized", switcher.Current.Id); Assert.AreEqual(2, cachedDic.Count); switcher.SwitchNext(finder); Assert.AreEqual("General", switcher.Current.Id); Assert.AreEqual(2, cachedDic.Count); switcher.Switch(finder, "Solarized"); Assert.AreEqual("Solarized", switcher.Current.Id); Assert.AreEqual(2, cachedDic.Count); switcher.SwitchNext(finder); Assert.AreEqual("General", switcher.Current.Id); Assert.AreEqual(2, cachedDic.Count); switcher.SwitchNext(finder); Assert.AreEqual("General2", switcher.Current.Id); Assert.AreEqual(3, cachedDic.Count); switcher.SwitchNext(finder); Assert.AreEqual("Solarized", switcher.Current.Id); Assert.AreEqual(3, cachedDic.Count); switcher.SwitchNext(finder); Assert.AreEqual("General", switcher.Current.Id); Assert.AreEqual(3, cachedDic.Count); }
public void LanguageTest() { var dir = new ResourceDirectory <Language>(new LanguageKeyValueGenerator(), _languageDir, "*.xaml"); var finder = new ResourceFinder <Language>(dir); var reader = new CacheableResourceReader <Language>(); var r = new ResourceDictionary(); var mergedDictionaries = r.MergedDictionaries; var switcher = new ResourceState <Language>(new ResourceUpdater <Language>(reader, mergedDictionaries)); switcher.Switch(finder, "en-US"); Assert.AreEqual("en-US", switcher.Current.Id); switcher.Switch(finder, "ja-JP"); Assert.AreEqual("ja-JP", switcher.Current.Id); switcher.Switch(finder, null); Assert.AreEqual("en-US", switcher.Current.Id); }
public void ResourceUpdaterTest() { var r = new ResourceDictionary(); var mergedDictionaries = r.MergedDictionaries; var reader = new CacheableResourceReader <Theme>(); var updater = new ResourceUpdater <Theme>(reader, mergedDictionaries); Assert.AreEqual(0, mergedDictionaries.Count); // General to General (update, merge) updater.Update(_generalTheme, _generalTheme); Assert.AreEqual(1, mergedDictionaries.Count); // General to Solarized (update, merge, remove) updater.Update(_generalTheme, _solarizedTheme); Assert.AreEqual(1, mergedDictionaries.Count); Assert.AreEqual("Solarized theme", mergedDictionaries[0]["ThemeName"] as string); // Solarized to General2 (update, merge, remove) updater.Update(_solarizedTheme, _general2Theme); Assert.AreEqual(1, mergedDictionaries.Count); Assert.AreEqual("General2 theme", mergedDictionaries[0]["ThemeName"] as string); }
public void CacheableResourceReaderTest() { var reader = new CacheableResourceReader <Theme>(); PrivateObject po = new PrivateObject(reader); var cachedDic = (po.GetField("_cachedDictionaries") as IDictionary <string, ResourceDictionary>); var result = reader.Read(_themeDic["General"]); Assert.AreEqual("General theme", result["ThemeName"]); Assert.AreEqual(1, cachedDic.Count); result = reader.Read(_themeDic["Solarized"]); Assert.AreEqual("Solarized theme", result["ThemeName"]); Assert.AreEqual(2, cachedDic.Count); result = reader.Read(_themeDic["General"]); Assert.AreEqual("General theme", result["ThemeName"]); Assert.AreEqual(2, cachedDic.Count); result = reader.Read(_themeDic["Solarized"]); Assert.AreEqual("Solarized theme", result["ThemeName"]); Assert.AreEqual(2, cachedDic.Count); }