@git-emoji/dataset-js
Version:
Emoji data and contextual emoji data
53 lines (47 loc) • 1.99 kB
text/typescript
import * as assert from 'assert';
import { context } from "../context";
import { contextV2 } from "../context_v2";
import { emoji } from "../emoji";
import { word } from "../word";
import { assertSorted, emojiIdToFieldName } from "./util";
suite('Context data', () => {
const allContexts = [
{ name: "context", data: context },
{ name: "contextV2", data: contextV2 },
];
suite('should be ordered', () => {
for (const { name, data } of allContexts) {
for (const entry of data) {
((entry, name) => {
test(`(${name}) entry with keywords: ${entry.keyword.join(',')}`, () => {
assertSorted(entry.keyword, `(${name}) keyword: ${entry.keyword.join(',')}`);
const ids = entry.emoji.map(x => x.id);
assertSorted(ids, `(${name}) emoji: ${ids.join(',')}`);
});
})(entry, name);
}
}
});
suite('should reference defined emojis', () => {
for (const { name, data } of allContexts) {
for (const entry of data) {
((entry, name) => {
test(`(${name}) entry with keywords: ${entry.keyword.join(',')}`, () => {
entry.emoji.forEach(e => assert.ok((emoji as any)[emojiIdToFieldName(e.id)], `(${name}) unknown emoji id: ${e.id}`));
});
})(entry, name);
}
}
});
suite('should reference defined words', () => {
for (const { name, data } of allContexts) {
for (const entry of data) {
((entry, name) => {
test(`(${name}) entry with keywords: ${entry.keyword.join(',')}`, () => {
entry.keyword.forEach(kw => assert.ok((word as any)[kw], `(${name}) unknown word: ${kw}`));
});
})(entry, name);
}
}
});
});