@plangrid/structure
Version:
CSS structure library
77 lines (64 loc) • 1.6 kB
JavaScript
const structure = require("./");
const assert = require("assert");
const cader = require("cader");
const ssv = require("ssv");
assert.ok(structure instanceof cader);
assert.throws(() => structure.save({
"Input": "should be frozen"
}));
const testAtom = (atom, expected) => {
var fusion = structure.fuse(atom);
assert.strictEqual(typeof atom, "string");
assert.strictEqual(typeof fusion, "string");
assert.strictEqual(typeof expected, "string");
assert.ok(ssv.all(fusion, expected));
assert.ok(ssv.all(expected, fusion));
assert.strictEqual(
ssv.count(ssv.uniq(fusion)),
ssv.count(fusion)
);
};
const testAlias = (atom1, atom2) => {
assert.strictEqual(typeof atom1, "string");
assert.strictEqual(typeof atom2, "string");
assert.strictEqual(
structure.fuse(atom1),
structure.fuse(atom2)
);
};
const testSpread = ported => {
Object.keys(ported).forEach(k => {
ssv.split(ported[k]).forEach(v => {
assert.strictEqual(v, v.toLowerCase(), "Unspread: " + v + " in " + k);
})
});
};
testSpread(structure.port());
testAtom(
"FontXL",
"font-os font-xl"
);
testAtom(
"TruncateDIY",
"overflow-hidden overflow-dots ws-nowrap"
);
testAtom(
"TruncateBox",
ssv.union(structure.fuse("TruncateDIY"), "preset-box")
);
testAlias(
"Button:additive",
"Additive"
);
testAtom(
"Input:validate",
ssv.union(structure.fuse("Input"), "tone-validate")
);
testAtom(
"Textarea:validate",
ssv.union(structure.fuse("Textarea"), "tone-validate")
);
structure.help();
console.log();
console.log("JavaScript tests passed =)");
console.log();