notes/node_modules/css-tokenize/test/base.js

101 lines
2.5 KiB
JavaScript

var fs = require('fs'),
test = require('tape'),
through = require('through2'),
tokenize = require('../')
test('basic', function(t) {
var tok = tokenize();
var input = "html { font-size: 10px; }"
var expected = [
['rule_start', 'html {'],
['rule', ' font-size: 10px; '],
['rule_end', '}']
]
t.plan(expected.length);
tok.pipe(through.obj(function(token, enc, next) {
token[1] = token[1].toString();
if (expected.length > 0) t.same(token, expected.shift())
next();
}))
tok.end(input);
})
test('at-rule nesting', function(t) {
var tok = tokenize();
var expected = [
[ 'atrule_start', '@media screen and (min-width: 1000px) {' ],
[ 'atrule', '\n ' ],
[ 'rule_start', 'a {' ],
[ 'rule', '\n text-decoration: underline;\n ' ],
[ 'rule_end', '}' ],
[ 'atrule', '\n' ],
[ 'atrule_end', '}' ],
[ 'root', '\n' ]
]
t.plan(expected.length);
tok.pipe(through.obj(function(token, enc, next) {
token[1] = token[1].toString();
if (expected.length > 0) t.same(token, expected.shift())
next();
}))
fs.createReadStream(__dirname + '/nested.css').pipe(tok);
})
test('gauntlet', function(t) {
var tok = tokenize();
var expected = [
['root', '\n'],
['rule_start', 'div {'],
['rule', '\n background: red;\n'],
['rule_end', '}'],
['root', '\n\n'],
['rule_start', '.cls {'],
['rule', '\n color: green;\n'],
['rule_end', '}'],
['root', '\n\n'],
['rule_start', '#id {'],
['rule', '\n font-size: 10px;\n'],
['rule_end', '}'],
['comment', '\n\n/* comment */'],
['space', '\n\n'],
['atrule_start', '@media screen and (min-width: 1000px) {'],
['atrule', '\n '],
['rule_start', 'a {'],
['rule', '\n text-decoration: underline;\n '],
['rule_end', '}'],
['atrule', '\n'],
['atrule_end', '}'],
['root', '\n\n'],
['rule_start', 'a:hover {'],
['rule', '\n font-weight: bold; \n'],
['rule_end', '}'],
['root', '\n\n'],
['rule_start', 'section \n\n\n{'],
['rule', '\n margin: 0;\n '],
['comment', '/* comment wthin a rule */'],
['rule', '\n padding: 5px;\n'],
['rule_end', '}'],
['root', '\n\n\n'],
['rule_start', 'body > * {'],
['rule', '\n \n'],
['rule_end', '}'],
['root', '\n']
]
t.plan(expected.length);
tok.pipe(through.obj(function(token, enc, next) {
token[1] = token[1].toString();
if (expected.length > 0) t.same(token, expected.shift())
next();
}));
fs.createReadStream(__dirname + '/gauntlet.css').pipe(tok);
})