public void CanMergeStylesSet() { Func <object, StyleSetFake> fn1 = (prop) => { return(new StyleSetFake() { Root = new Style { Background = "green", FontSize = 12 }, }); }; Func <object, StyleSetFake> fn2 = (porps) => { return(new StyleSetFake { Root = new Style { Background = "yellow", Color = "pink" } }); }; var empty = new StyleSetFake { }; var result = StyleEngine .MergeStyleSets(empty, new StyleSetFake { Root = new Style { Background = "red", }, A = new Style { Background = "green" }, SubComponentStyles = { ["labelStyles"] = fn1 } }, new StyleSetFake { A = new Style { Background = "white" }, B = new Style { Background = "blue" } }, new StyleSetFake { Root = new Style { Selectors = { [":hover"] = new Style { Background = "yellow" } } }, SubComponentStyles = { ["labelStyles"] = fn2 } }); Assert.AreEqual("root-0", result.Root); Assert.AreEqual("a-1", result.A); Assert.AreEqual("b-2", result.B); Assert.IsTrue(result.ContainsKey(("sub-component-styles", "SubComponentStyles"))); if (result.SubComponentStyles["labelStyles"] is Func <object, StyleSetFake> function) { var mergedLabelStyles = function(new StyleSetFake { }); Assert.AreEqual(new StyleSetFake { Root = new Style[] { new Style { Background = "green", FontSize = 12, }, new Style { Background = "yellow", Color = "pink" } } }, mergedLabelStyles); } else { Assert.IsTrue(false, "The subcompoment must be a function"); } Assert.AreEqual(".root-0{background:red;}.root-0:hover{background:yellow;}" + ".a-1{background:white;}" + ".b-2{background:blue;}", _stylesheet.GetRules()); }
public void CanConcatStylesSets() { var result = StyleEngine.ConcatStyleSet(new StyleSetFake { Root = new Style { Background = "red" }, A = new Style { Background = "green" } }, new StyleSetFake { A = new Style { Background = "white", }, B = new Style { Background = "blue" } }, new StyleSetFake { Root = new Style { Selectors = { [":hover"] = new Style { Background = "yellow" } } } }); var expected = new StyleSetFake { Root = new Style[] { new Style { Background = "red" }, new Style { Selectors = { [":hover"] = new Style { Background = "yellow" } } } }, A = new Style[] { new Style { Background = "green" }, new Style { Background = "white" } }, B = new Style { Background = "blue" } }; Assert.AreEqual(expected, result); }