예제 #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 SwitchNext()
 {
     Application.Current.Dispatcher.Invoke(() => _state.SwitchNext(_finder));
 }