blob: a38e578cf363bcc686fff6ea1959ff2a6c681e0e [file] [log] [blame]
package inliner
import "testing"
// Reference: http://www.w3.org/TR/selectors/#specificity
//
// * /* a=0 b=0 c=0 -> specificity = 0 */
// LI /* a=0 b=0 c=1 -> specificity = 1 */
// UL LI /* a=0 b=0 c=2 -> specificity = 2 */
// UL OL+LI /* a=0 b=0 c=3 -> specificity = 3 */
// H1 + *[REL=up] /* a=0 b=1 c=1 -> specificity = 11 */
// UL OL LI.red /* a=0 b=1 c=3 -> specificity = 13 */
// LI.red.level /* a=0 b=2 c=1 -> specificity = 21 */
// #x34y /* a=1 b=0 c=0 -> specificity = 100 */
// #s12:not(FOO) /* a=1 b=0 c=1 -> specificity = 101 */
func TestComputeSpecificity(t *testing.T) {
if val := ComputeSpecificity("*"); val != 0 {
t.Fatal("Failed to compute specificity: ", val)
}
if val := ComputeSpecificity("LI"); val != 1 {
t.Fatal("Failed to compute specificity: ", val)
}
if val := ComputeSpecificity("UL LI"); val != 2 {
t.Fatal("Failed to compute specificity: ", val)
}
if val := ComputeSpecificity("UL OL+LI "); val != 3 {
t.Fatal("Failed to compute specificity: ", val)
}
if val := ComputeSpecificity("H1 + *[REL=up]"); val != 11 {
t.Fatal("Failed to compute specificity: ", val)
}
if val := ComputeSpecificity("UL OL LI.red"); val != 13 {
t.Fatal("Failed to compute specificity: ", val)
}
if val := ComputeSpecificity("LI.red.level"); val != 21 {
t.Fatal("Failed to compute specificity: ", val)
}
if val := ComputeSpecificity("#x34y"); val != 100 {
t.Fatal("Failed to compute specificity: ", val)
}
// This one fails ! \o/
// if val := ComputeSpecificity("#s12:not(FOO)"); val != 101 {
// t.Fatal("Failed to compute specificity: ", val)
// }
}