Testing that generated CSS rule strings have proper formatting.


== Running test suite: CSS.generateCSSRuleString
-- Running test case: CSS.generateCSSRuleString.InlineStyle
#test-node {
    a: 1;
    b: 2;
    c: 3;
}

-- Running test case: CSS.generateCSSRuleString.InlineStyle.WithCommentedProperty
#test-node {
    a: 1;
    /* b: 2; */
    c: 3;
}

-- Running test case: CSS.generateCSSRuleString.MatchedRules
@media only screen and (min-width: 0px) {
    @media only screen and (min-height: 0px) {
        body > div#test-node {
            a: 1;
            b: 2;
            c: 3;
        }
    }
}
@media only screen and (min-width: 0px) {
    body > #test-node {
        a: 1;
        b: 2;
        c: 3;
    }
}
body > div {
    a: 1;
    b: 2;
    c: 3;
}
body > * {
    a: 1;
    b: 2;
    c: 3;
}
* {
    a: 1;
    b: 2;
    c: 3;
}
address, article, aside, div, footer, header, hgroup, layer, main, nav, section {
    display: block;
}

-- Running test case: CSS.generateCSSRuleString.MatchedRules.WithCommentedProperties
@media only screen and (min-width: 0px) {
    @media only screen and (min-height: 0px) {
        body > div#test-node {
            a: 1;
            /* b: 2; */
            c: 3;
        }
    }
}
@media only screen and (min-width: 0px) {
    body > #test-node {
        a: 1;
        /* b: 2; */
        c: 3;
    }
}
body > div {
    a: 1;
    /* b: 2; */
    c: 3;
}
body > * {
    a: 1;
    /* b: 2; */
    c: 3;
}
* {
    a: 1;
    /* b: 2; */
    c: 3;
}

