test: unit and end-to-end suites
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
27fafa0bcd
commit
9b00e21c44
49 files changed
+6694
-1
No files matched your search
@@ -0,0 +1,31 @@
|
||||
// The icon sets: every icon offered has a drawing, nothing is offered twice, and the drawings are well-formed.
|
||||
import { test } from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import { PATHS, PICKER_ICONS, PICKER_EMOJI, isEmoji } from '../src/lib/icons.js';
|
||||
|
||||
test('every icon in the picker has a drawing, and none is listed twice', () => {
|
||||
const names = PICKER_ICONS.map(([n]) => n);
|
||||
assert.deepEqual(names.filter((n) => !PATHS[n]), [], 'missing drawings');
|
||||
assert.deepEqual(names.filter((n, i) => names.indexOf(n) !== i), [], 'duplicates');
|
||||
for (const [n, words] of PICKER_ICONS) assert.ok(words && words.trim(), `${n} has search words`);
|
||||
assert.ok(names.length >= 100, `a good number of icons (${names.length})`);
|
||||
});
|
||||
|
||||
test('every drawing is made of valid path commands, inside the 24px grid', () => {
|
||||
for (const [name, d] of Object.entries(PATHS)) {
|
||||
for (const part of d.split('|')) {
|
||||
assert.match(part, /^[MmLlHhVvCcSsQqTtAaZz0-9eE.,\s-]+$/, `${name}: unexpected characters in "${part}"`);
|
||||
assert.match(part, /^[Mm]/, `${name}: a path starts with a move`);
|
||||
const nums = (part.match(/-?\d*\.?\d+/g) || []).map(Number);
|
||||
assert.ok(nums.length >= 2, `${name} has coordinates`);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
test('emoji in the picker are real emoji, listed once, with words to find them by', () => {
|
||||
const list = PICKER_EMOJI.map(([e]) => e);
|
||||
assert.ok(list.every((e) => isEmoji(e)), 'all are emoji');
|
||||
assert.deepEqual(list.filter((e, i) => list.indexOf(e) !== i), [], 'duplicates');
|
||||
assert.ok(PICKER_EMOJI.every(([, words]) => words.trim()));
|
||||
assert.ok(list.length >= 200, `plenty of emoji (${list.length})`);
|
||||
});
|
||||
Reference in new issue
Block a user