(test) check that pronouns/examples.tsv contains examples for plurals and honorifics if the locale is configured accordingly

This commit is contained in:
Valentyne Stigloher 2024-05-21 18:35:55 +02:00
parent 9605b33154
commit a707924dd7

View File

@ -4,6 +4,8 @@ import allLocales from '../../locale/locales.ts';
import { loadTsv } from '../../src/tsv.js';
import { Example } from '../../src/classes.ts';
import type { ExpectationResult } from 'expect';
import { loadSumlFromBase } from '../../server/loader.ts';
import type { Config } from '../../locale/config.ts';
const __dirname = new URL('.', import.meta.url).pathname;
@ -34,6 +36,10 @@ declare module 'expect' {
expect.extend({ toHaveValidMorphemes });
describe.each(allLocales)('data files of $code', ({ code }) => {
const config = loadSumlFromBase(`locale/${code}/config`) as Config;
const examples = loadTsv(`${__dirname}/../../locale/${code}/pronouns/examples.tsv`);
test('pronouns/pronouns.tsv match schema', async () => {
const { default: MORPHEMES } = await import(`../../locale/${code}/pronouns/morphemes.js`);
const pronouns = loadTsv(`${__dirname}/../../locale/${code}/pronouns/pronouns.tsv`);
@ -56,7 +62,6 @@ describe.each(allLocales)('data files of $code', ({ code }) => {
});
test('pronouns/examples.tsv contain valid morphemes', async () => {
const { default: MORPHEMES } = await import(`../../locale/${code}/pronouns/morphemes.js`);
const examples = loadTsv(`${__dirname}/../../locale/${code}/pronouns/examples.tsv`);
for (const example of examples) {
expect(example.singular).toHaveValidMorphemes(MORPHEMES);
if (example.plural) {
@ -64,4 +69,14 @@ describe.each(allLocales)('data files of $code', ({ code }) => {
}
}
});
test('pronouns/examples.tsv contains plural examples when language has plurals', () => {
const hasExamplesWithPlurals = examples.some((example) => {
return example.plural && example.plural !== example.singular;
});
expect(hasExamplesWithPlurals).toBe(!!config.pronouns.plurals);
});
test('pronouns/examples.tsv contains honorific examples when language has honorifics', () => {
const hasExamplesWithHonorifics = examples.some((example) => example.isHonorific);
expect(hasExamplesWithHonorifics).toBe(!!config.pronouns.honorifics);
});
});