<!doctype html>
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
<style>
#test-root * {
    background-color: red;
}
</style>
<style id="style">
</style>
</head>
<body>
    <div style="display:none" id="test-root">
    </div>
</body>
<script>
description('Test :not(selector) on larger scale.');

var classes = [];
for (var i = 0; i < 30; ++i)
    classes.push("class" + i);

var attributes = [];
for (var i = 0; i < 30; ++i)
    attributes.push(["attribute" + i, "value" + i]);

function generateTestTree() {
    var testRoot = document.getElementById('test-root');

    for (var classIndex = 0; classIndex <= classes.length; ++classIndex) {
        for (var attributeIndex = 0; attributeIndex <= attributes.length; ++attributeIndex) {
            var testCase = document.createElement("testcase");

            for (var i = 0; i < classIndex; ++i)
                testCase.classList.add(classes[i]);

            for (var i = 0; i < attributeIndex; ++i)
                testCase.setAttribute(attributes[i][0], attributes[i][1]);

            testRoot.appendChild(testCase);
        }
    }
}

generateTestTree();

var testCaseCount = (classes.length + 1) * (attributes.length + 1);
shouldBe('document.querySelectorAll("testcase:not(.class29[attribute7=value7][attribute5=value5][attribute17=value17].class13[attribute18=value18].class11[attribute28=value28][attribute25=value25].class0.class19.class6[attribute11=value11].class28[attribute3=value3].class23[attribute21=value21][attribute24=value24][attribute6=value6][attribute1=value1].class25[attribute15=value15][attribute27=value27][attribute23=value23].class15[attribute13=value13].class22.class12[attribute20=value20].class2[attribute9=value9][attribute26=value26].class1.class26.class27.class16[attribute10=value10].class18.class21.class5.class8.class4[attribute19=value19].class10[attribute29=value29][attribute14=value14][attribute8=value8].class3.class20[attribute4=value4].class9[attribute16=value16][attribute22=value22][attribute2=value2][attribute12=value12].class14.class24.class7.class17[attribute0=value0])").length', '' + (testCaseCount - 1));

shouldBe('document.querySelectorAll("testcase:not(.class16):not([attribute21=value21]):not([attribute8=value8]):not(.class20):not([attribute18=value18]):not([attribute20=value20]):not([attribute3=value3]):not(.class10):not(.class14):not([attribute17=value17]):not(.class4):not(.class17):not(.class22):not([attribute12=value12]):not([attribute16=value16]):not(.class9):not(.class5):not([attribute23=value23]):not(.class7):not(.class27):not(.class0):not([attribute9=value9]):not([attribute0=value0]):not([attribute27=value27]):not(.class3):not([attribute28=value28]):not([attribute6=value6]):not([attribute13=value13]):not(.class2):not([attribute24=value24]):not([attribute2=value2]):not(.class15):not([attribute5=value5]):not([attribute15=value15]):not(.class21):not([attribute22=value22]):not(.class29):not([attribute29=value29]):not(.class12):not([attribute1=value1]):not(.class8):not(.class19):not([attribute4=value4]):not([attribute25=value25]):not(.class28):not(.class13):not(.class26):not(.class18):not([attribute14=value14]):not(.class1):not([attribute11=value11]):not(.class24):not(.class6):not(.class23):not(.class11):not([attribute10=value10]):not(.class25):not([attribute7=value7]):not([attribute26=value26]):not([attribute19=value19])").length', '' + 1);
</script>
<script src="../../resources/js-test-post.js"></script>
</html>
