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