public void CanHandleFalsyValuesAndSubComponentStylesThatHasObjects() { Func <object, StyleSetFake> fn1 = (props) => new StyleSetFake { Root = new Style { Background = "green", FontSize = 12 } }; Func <object, StyleSetFake> fn2 = (props) => new StyleSetFake { Root = new Style { Background = "yellow", Color = "pink" } }; var result = StyleEngine.ConcatStyleSet(false, new StyleSetFake { SubComponentStyles = { ["A"] = fn1 } }, new StyleSetFake { SubComponentStyles = { ["A"] = fn2 } }, null, null, false, new StyleSetFake { SubComponentStyles = { ["A"] = new StyleSetFake { Root = new Style { FontSize = 14 } } } }); Assert.IsTrue(result.ContainsKey(("sub-component-styles", "SubComponentStyles"))); if (result.SubComponentStyles["A"] is Func <object, StyleSetFake> function) { var aExpanded = function(new StyleSetFake { }); Assert.AreEqual(new StyleSetFake { Root = new Style[] { new Style { Background = "green", FontSize = 12, }, new Style { Background = "yellow", Color = "pink" }, new Style { FontSize = 14 } } }, aExpanded); } else { Assert.IsTrue(false, "The subcompoment must be a function"); } }
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); }
public void CanConcatMixedStyleSetsWithStyleFunctionsOnBothEnds() { Func <object, StyleSetFake> fn1 = (prop) => { return(new StyleSetFake() { Root = new Style { Background = "yellow" }, }); }; Func <object, StyleSetFake> fn2 = (porps) => { return(new StyleSetFake { Root = new Style { Background = "yellow", Color = "pink" } }); }; var result = StyleEngine.ConcatStyleSet(new StyleSetFake { Root = new Style { Background = "red" }, A = new Style { Background = "green" }, SubComponentStyles = { ["A"] = fn1 }, }, new StyleSetFake { A = new Style { Background = "white" }, B = new Style { Background = "blue" }, SubComponentStyles = { ["A"] = fn2 } }, new StyleSetFake { Root = new Style { Selectors = { [":hover"] = new Style { Background = "yellow" } } } }); Assert.AreEqual(new Style[] { new Style { Background = "red" }, new Style { Selectors = { [":hover"] = new Style { Background = "yellow" } } } }, result.Root); Assert.AreEqual(new Style { Background = "blue" }, result.B); Assert.AreEqual(new Style[] { new Style { Background = "green" }, new Style { Background = "white" } }, result.A); if (result.SubComponentStyles["A"] is Func <object, StyleSetFake> function) { var aExpanded = function(new StyleSetFake { }); Assert.AreEqual(new StyleSetFake { Root = new Style[] { new Style { Background = "green", FontSize = 12, }, new Style { Background = "yellow", Color = "pink" } } }, aExpanded); } else { Assert.IsTrue(false, "The subcompoment must be a function"); } }