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) // } }