예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        public void ResourceSwitcherTest1()
        {
            int updateCount = 0;
            var updater     = new Mock <IResourceUpdater <Theme> >();

            updater.Setup(x => x.Update(It.IsAny <Theme>(), It.IsAny <Theme>()))
            .Callback((Theme old, Theme x) => ++ updateCount);

            var dir = new Mock <IResourceDirectory <Theme> >();

            dir.Setup(x => x.AvailableResources).Returns(_themeDic);
            var finder = new ResourceFinder <Theme>(dir.Object);

            var switcher = new ResourceState <Theme>(updater.Object);

            switcher.Switch(finder, "General");
            Assert.AreEqual("General", switcher.Current.Id);
            Assert.AreEqual(1, updateCount);

            switcher.Switch(finder, "Solarized");
            Assert.AreEqual("Solarized", switcher.Current.Id);
            Assert.AreEqual(2, updateCount);

            switcher.Switch(finder, "General");
            Assert.AreEqual("General", switcher.Current.Id);
            Assert.AreEqual(3, updateCount);

            switcher.Switch(finder, "Solarized");
            Assert.AreEqual("Solarized", switcher.Current.Id);
            Assert.AreEqual(4, updateCount);

            switcher.Switch(finder, "Solarized");
            Assert.AreEqual("Solarized", switcher.Current.Id);
            Assert.AreEqual(5, updateCount);

            switcher.Switch(finder, "General");
            Assert.AreEqual("General", switcher.Current.Id);
            Assert.AreEqual(6, updateCount);
        }
예제 #4
0
 public void SwitchLanguage(IResourceItem language)
 {
     Application.Current.Dispatcher.Invoke(() => _state.Switch(_finder, language.Id));
 }
예제 #5
0
 public void Switch(string id)
 {
     Application.Current.Dispatcher.Invoke(() => _state.Switch(_finder, id));
 }