[6a3a178] | 1 | "use strict";
|
---|
| 2 |
|
---|
| 3 | var _helpers = require("./util/helpers");
|
---|
| 4 |
|
---|
| 5 | (0, _helpers.test)('class name', '.one', function (t, tree) {
|
---|
| 6 | t.deepEqual(tree.nodes[0].nodes[0].value, 'one');
|
---|
| 7 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 8 | });
|
---|
| 9 | (0, _helpers.test)('multiple class names', '.one.two.three', function (t, tree) {
|
---|
| 10 | t.deepEqual(tree.nodes[0].nodes[0].value, 'one');
|
---|
| 11 | t.deepEqual(tree.nodes[0].nodes[1].value, 'two');
|
---|
| 12 | t.deepEqual(tree.nodes[0].nodes[2].value, 'three');
|
---|
| 13 | });
|
---|
| 14 | (0, _helpers.test)('qualified class', 'button.btn-primary', function (t, tree) {
|
---|
| 15 | t.deepEqual(tree.nodes[0].nodes[0].type, 'tag');
|
---|
| 16 | t.deepEqual(tree.nodes[0].nodes[1].type, 'class');
|
---|
| 17 | });
|
---|
| 18 | (0, _helpers.test)('escaped numbers in class name', '.\\31\\ 0', function (t, tree) {
|
---|
| 19 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 20 | t.deepEqual(tree.nodes[0].nodes[0].value, '1 0');
|
---|
| 21 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\31\\ 0');
|
---|
| 22 | });
|
---|
| 23 | (0, _helpers.test)('extraneous non-combinating whitespace', ' .h1 , .h2 ', function (t, tree) {
|
---|
| 24 | t.deepEqual(tree.nodes[0].nodes[0].value, 'h1');
|
---|
| 25 | t.deepEqual(tree.nodes[0].nodes[0].spaces.before, ' ');
|
---|
| 26 | t.deepEqual(tree.nodes[0].nodes[0].spaces.after, ' ');
|
---|
| 27 | t.deepEqual(tree.nodes[1].nodes[0].value, 'h2');
|
---|
| 28 | t.deepEqual(tree.nodes[1].nodes[0].spaces.before, ' ');
|
---|
| 29 | t.deepEqual(tree.nodes[1].nodes[0].spaces.after, ' ');
|
---|
| 30 | });
|
---|
| 31 | (0, _helpers.test)('Less interpolation within a class', '.foo@{bar}', function (t, tree) {
|
---|
| 32 | t.deepEqual(tree.nodes[0].nodes.length, 1);
|
---|
| 33 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 34 | t.deepEqual(tree.nodes[0].nodes[0].value, 'foo@{bar}');
|
---|
| 35 | });
|
---|
| 36 | (0, _helpers.test)('ClassName#set value', ".fo\\o", function (t, selectors) {
|
---|
| 37 | var className = selectors.first.first;
|
---|
| 38 | t.deepEqual(className.raws, {
|
---|
| 39 | value: "fo\\o"
|
---|
| 40 | });
|
---|
| 41 | className.value = "bar";
|
---|
| 42 | t.deepEqual(className.raws, {});
|
---|
| 43 | });
|
---|
| 44 | (0, _helpers.test)('escaped dot in class name', '.foo\\.bar', function (t, tree) {
|
---|
| 45 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 46 | t.deepEqual(tree.nodes[0].nodes[0].value, 'foo.bar');
|
---|
| 47 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'foo\\.bar');
|
---|
| 48 | });
|
---|
| 49 | (0, _helpers.test)('class selector with escaping', '.♥', function (t, tree) {
|
---|
| 50 | t.deepEqual(tree.nodes[0].nodes[0].value, '♥');
|
---|
| 51 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 52 | });
|
---|
| 53 | (0, _helpers.test)('class selector with escaping (1)', '.©', function (t, tree) {
|
---|
| 54 | t.deepEqual(tree.nodes[0].nodes[0].value, '©');
|
---|
| 55 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 56 | });
|
---|
| 57 | (0, _helpers.test)('class selector with escaping (2)', '.“‘’”', function (t, tree) {
|
---|
| 58 | t.deepEqual(tree.nodes[0].nodes[0].value, '“‘’”');
|
---|
| 59 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 60 | });
|
---|
| 61 | (0, _helpers.test)('class selector with escaping (3)', '.☺☃', function (t, tree) {
|
---|
| 62 | t.deepEqual(tree.nodes[0].nodes[0].value, '☺☃');
|
---|
| 63 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 64 | });
|
---|
| 65 | (0, _helpers.test)('class selector with escaping (4)', '.⌘⌥', function (t, tree) {
|
---|
| 66 | t.deepEqual(tree.nodes[0].nodes[0].value, '⌘⌥');
|
---|
| 67 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 68 | });
|
---|
| 69 | (0, _helpers.test)('class selector with escaping (5)', '.𝄞♪♩♫♬', function (t, tree) {
|
---|
| 70 | t.deepEqual(tree.nodes[0].nodes[0].value, '𝄞♪♩♫♬');
|
---|
| 71 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 72 | });
|
---|
| 73 | (0, _helpers.test)('class selector with escaping (6)', '.💩', function (t, tree) {
|
---|
| 74 | t.deepEqual(tree.nodes[0].nodes[0].value, '💩');
|
---|
| 75 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 76 | });
|
---|
| 77 | (0, _helpers.test)('class selector with escaping (7)', '.\\?', function (t, tree) {
|
---|
| 78 | t.deepEqual(tree.nodes[0].nodes[0].value, '?');
|
---|
| 79 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 80 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\?');
|
---|
| 81 | });
|
---|
| 82 | (0, _helpers.test)('class selector with escaping (8)', '.\\@', function (t, tree) {
|
---|
| 83 | t.deepEqual(tree.nodes[0].nodes[0].value, '@');
|
---|
| 84 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 85 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\@');
|
---|
| 86 | });
|
---|
| 87 | (0, _helpers.test)('class selector with escaping (9)', '.\\.', function (t, tree) {
|
---|
| 88 | t.deepEqual(tree.nodes[0].nodes[0].value, '.');
|
---|
| 89 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 90 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\.');
|
---|
| 91 | });
|
---|
| 92 | (0, _helpers.test)('class selector with escaping (10)', '.\\3A \\)', function (t, tree) {
|
---|
| 93 | t.deepEqual(tree.nodes[0].nodes[0].value, ':)');
|
---|
| 94 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 95 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\3A \\)');
|
---|
| 96 | });
|
---|
| 97 | (0, _helpers.test)('class selector with escaping (11)', '.\\3A \\`\\(', function (t, tree) {
|
---|
| 98 | t.deepEqual(tree.nodes[0].nodes[0].value, ':`(');
|
---|
| 99 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 100 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\3A \\`\\(');
|
---|
| 101 | });
|
---|
| 102 | (0, _helpers.test)('class selector with escaping (12)', '.\\31 23', function (t, tree) {
|
---|
| 103 | t.deepEqual(tree.nodes[0].nodes[0].value, '123');
|
---|
| 104 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 105 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\31 23');
|
---|
| 106 | });
|
---|
| 107 | (0, _helpers.test)('class selector with escaping (13)', '.\\31 a2b3c', function (t, tree) {
|
---|
| 108 | t.deepEqual(tree.nodes[0].nodes[0].value, '1a2b3c');
|
---|
| 109 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 110 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\31 a2b3c');
|
---|
| 111 | });
|
---|
| 112 | (0, _helpers.test)('class selector with escaping (14)', '.\\<p\\>', function (t, tree) {
|
---|
| 113 | t.deepEqual(tree.nodes[0].nodes[0].value, '<p>');
|
---|
| 114 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 115 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\<p\\>');
|
---|
| 116 | });
|
---|
| 117 | (0, _helpers.test)('class selector with escaping (15)', '.\\<\\>\\<\\<\\<\\>\\>\\<\\>', function (t, tree) {
|
---|
| 118 | t.deepEqual(tree.nodes[0].nodes[0].value, '<><<<>><>');
|
---|
| 119 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 120 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\<\\>\\<\\<\\<\\>\\>\\<\\>');
|
---|
| 121 | });
|
---|
| 122 | (0, _helpers.test)('class selector with escaping (16)', '.\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\[\\>\\+\\+\\+\\+\\+\\+\\+\\>\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\>\\+\\+\\+\\>\\+\\<\\<\\<\\<\\-\\]\\>\\+\\+\\.\\>\\+\\.\\+\\+\\+\\+\\+\\+\\+\\.\\.\\+\\+\\+\\.\\>\\+\\+\\.\\<\\<\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\.\\>\\.\\+\\+\\+\\.\\-\\-\\-\\-\\-\\-\\.\\-\\-\\-\\-\\-\\-\\-\\-\\.\\>\\+\\.\\>\\.', function (t, tree) {
|
---|
| 123 | t.deepEqual(tree.nodes[0].nodes[0].value, '++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.');
|
---|
| 124 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 125 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\[\\>\\+\\+\\+\\+\\+\\+\\+\\>\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\>\\+\\+\\+\\>\\+\\<\\<\\<\\<\\-\\]\\>\\+\\+\\.\\>\\+\\.\\+\\+\\+\\+\\+\\+\\+\\.\\.\\+\\+\\+\\.\\>\\+\\+\\.\\<\\<\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\+\\.\\>\\.\\+\\+\\+\\.\\-\\-\\-\\-\\-\\-\\.\\-\\-\\-\\-\\-\\-\\-\\-\\.\\>\\+\\.\\>\\.');
|
---|
| 126 | });
|
---|
| 127 | (0, _helpers.test)('class selector with escaping (17)', '.\\#', function (t, tree) {
|
---|
| 128 | t.deepEqual(tree.nodes[0].nodes[0].value, '#');
|
---|
| 129 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 130 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\#');
|
---|
| 131 | });
|
---|
| 132 | (0, _helpers.test)('class selector with escaping (18)', '.\\#\\#', function (t, tree) {
|
---|
| 133 | t.deepEqual(tree.nodes[0].nodes[0].value, '##');
|
---|
| 134 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 135 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\#\\#');
|
---|
| 136 | });
|
---|
| 137 | (0, _helpers.test)('class selector with escaping (19)', '.\\#\\.\\#\\.\\#', function (t, tree) {
|
---|
| 138 | t.deepEqual(tree.nodes[0].nodes[0].value, '#.#.#');
|
---|
| 139 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 140 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\#\\.\\#\\.\\#');
|
---|
| 141 | });
|
---|
| 142 | (0, _helpers.test)('class selector with escaping (20)', '.\\_', function (t, tree) {
|
---|
| 143 | t.deepEqual(tree.nodes[0].nodes[0].value, '_');
|
---|
| 144 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 145 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\_');
|
---|
| 146 | });
|
---|
| 147 | (0, _helpers.test)('class selector with escaping (21)', '.\\{\\}', function (t, tree) {
|
---|
| 148 | t.deepEqual(tree.nodes[0].nodes[0].value, '{}');
|
---|
| 149 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 150 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\{\\}');
|
---|
| 151 | });
|
---|
| 152 | (0, _helpers.test)('class selector with escaping (22)', '.\\#fake\\-id', function (t, tree) {
|
---|
| 153 | t.deepEqual(tree.nodes[0].nodes[0].value, '#fake-id');
|
---|
| 154 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 155 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\#fake\\-id');
|
---|
| 156 | });
|
---|
| 157 | (0, _helpers.test)('class selector with escaping (23)', '.foo\\.bar', function (t, tree) {
|
---|
| 158 | t.deepEqual(tree.nodes[0].nodes[0].value, 'foo.bar');
|
---|
| 159 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 160 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'foo\\.bar');
|
---|
| 161 | });
|
---|
| 162 | (0, _helpers.test)('class selector with escaping (24)', '.\\3A hover', function (t, tree) {
|
---|
| 163 | t.deepEqual(tree.nodes[0].nodes[0].value, ':hover');
|
---|
| 164 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 165 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\3A hover');
|
---|
| 166 | });
|
---|
| 167 | (0, _helpers.test)('class selector with escaping (25)', '.\\3A hover\\3A focus\\3A active', function (t, tree) {
|
---|
| 168 | t.deepEqual(tree.nodes[0].nodes[0].value, ':hover:focus:active');
|
---|
| 169 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 170 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\3A hover\\3A focus\\3A active');
|
---|
| 171 | });
|
---|
| 172 | (0, _helpers.test)('class selector with escaping (26)', '.\\[attr\\=value\\]', function (t, tree) {
|
---|
| 173 | t.deepEqual(tree.nodes[0].nodes[0].value, '[attr=value]');
|
---|
| 174 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 175 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\[attr\\=value\\]');
|
---|
| 176 | });
|
---|
| 177 | (0, _helpers.test)('class selector with escaping (27)', '.f\\/o\\/o', function (t, tree) {
|
---|
| 178 | t.deepEqual(tree.nodes[0].nodes[0].value, 'f/o/o');
|
---|
| 179 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 180 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'f\\/o\\/o');
|
---|
| 181 | });
|
---|
| 182 | (0, _helpers.test)('class selector with escaping (28)', '.f\\\\o\\\\o', function (t, tree) {
|
---|
| 183 | t.deepEqual(tree.nodes[0].nodes[0].value, 'f\\o\\o');
|
---|
| 184 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 185 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'f\\\\o\\\\o');
|
---|
| 186 | });
|
---|
| 187 | (0, _helpers.test)('class selector with escaping (29)', '.f\\*o\\*o', function (t, tree) {
|
---|
| 188 | t.deepEqual(tree.nodes[0].nodes[0].value, 'f*o*o');
|
---|
| 189 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 190 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'f\\*o\\*o');
|
---|
| 191 | });
|
---|
| 192 | (0, _helpers.test)('class selector with escaping (30)', '.f\\!o\\!o', function (t, tree) {
|
---|
| 193 | t.deepEqual(tree.nodes[0].nodes[0].value, 'f!o!o');
|
---|
| 194 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 195 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'f\\!o\\!o');
|
---|
| 196 | });
|
---|
| 197 | (0, _helpers.test)('class selector with escaping (31)', '.f\\\'o\\\'o', function (t, tree) {
|
---|
| 198 | t.deepEqual(tree.nodes[0].nodes[0].value, 'f\'o\'o');
|
---|
| 199 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 200 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'f\\\'o\\\'o');
|
---|
| 201 | });
|
---|
| 202 | (0, _helpers.test)('class selector with escaping (32)', '.f\\~o\\~o', function (t, tree) {
|
---|
| 203 | t.deepEqual(tree.nodes[0].nodes[0].value, 'f~o~o');
|
---|
| 204 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 205 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'f\\~o\\~o');
|
---|
| 206 | });
|
---|
| 207 | (0, _helpers.test)('class selector with escaping (33)', '.f\\+o\\+o', function (t, tree) {
|
---|
| 208 | t.deepEqual(tree.nodes[0].nodes[0].value, 'f+o+o');
|
---|
| 209 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 210 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'f\\+o\\+o');
|
---|
| 211 | });
|
---|
| 212 | (0, _helpers.test)('class selector with escaping (34)', '.\\1D306', function (t, tree) {
|
---|
| 213 | t.deepEqual(tree.nodes[0].nodes[0].value, '𝌆');
|
---|
| 214 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 215 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\1D306');
|
---|
| 216 | });
|
---|
| 217 | (0, _helpers.test)('class selector with escaping (35)', '.not-pseudo\\:focus', function (t, tree) {
|
---|
| 218 | t.deepEqual(tree.nodes[0].nodes[0].value, 'not-pseudo:focus');
|
---|
| 219 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 220 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'not-pseudo\\:focus');
|
---|
| 221 | });
|
---|
| 222 | (0, _helpers.test)('class selector with escaping (36)', '.not-pseudo\\:\\:focus', function (t, tree) {
|
---|
| 223 | t.deepEqual(tree.nodes[0].nodes[0].value, 'not-pseudo::focus');
|
---|
| 224 | t.deepEqual(tree.nodes[0].nodes[0].type, 'class');
|
---|
| 225 | t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'not-pseudo\\:\\:focus');
|
---|
| 226 | }); |
---|