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());
        }
Exemple #2
0
        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);
        }