import { test } from 'node:test'; import assert from 'node:assert/strict'; import { forms, urduEntry, pronunciations } from './dictionary.ts'; test('spelling forms: diacritics dropped, final noon ghunna tried as noon', () => { assert.deepEqual(forms('ناداں'), ['ناداں', 'نادان']); assert.deepEqual(forms('وِصال'), ['وِصال', 'وصال']); }); test('ur.wiktionary entry: meanings and origin', () => { const wt = "وِصال {وِصال} ([[عربی]])\n\nاسم [[نکرہ]]\n\n==معانی==\n\n1. بھیٹ، ملاقات، [[عاشق و معشوق]] کی محبت۔\n\n==مرکبات==\n\nوِصال کا دِن"; assert.deepEqual(urduEntry(wt), { meanings: ['بھیٹ، ملاقات، عاشق و معشوق کی محبت۔'], origin: 'عربی' }); }); test('en.wiktionary HTML: IPA, transliteration and audio per language', () => { const html = '

Persian

/qis.ˈmat/-at' + 'qismat' + '

Urdu

/qɪs.mət̪/qismat'; assert.deepEqual(pronunciations(html), { fa: { ipa: ['/qis.ˈmat/'], tr: 'qismat', audio: 'https://upload.wikimedia.org/a/b.ogg' }, ur: { ipa: ['/qɪs.mət̪/'], tr: 'qismat', audio: null }, }); }); test('fa./ar.wiktionary definitions: skip etymology, follow Arabic pointers', async () => { const { definitions, formsIn } = await import('./dictionary.ts'); const fa = '==فارسی==\n===ریشه‌شناسی===\n* [[عربی]]\n# قسمة\n===اسم===\n#بهره، نصیب.\n#:example\n#سرنوشت، تقدیر.\n====برگردان‌ها====\n# x y z'; assert.deepEqual(definitions(fa, 'fa').defs, ['بهره، نصیب.', 'سرنوشت، تقدیر.']); const ar = '== {{اللغة|عربية}} ==\nهل تقصد:\n* [[عِشْق]]\n* [[عَشَقَ]]\n----\n== {{اللغة|أردية}} ==\n# [[x]]'; assert.deepEqual(definitions(ar, 'ar'), { defs: [], links: ['عِشْق', 'عَشَقَ'] }); assert.deepEqual(definitions('# {{مصدر|عَشِقَ}}.\n# فرط الحب.', 'ar').defs, ['فرط الحب.']); assert.deepEqual(formsIn('fa', 'نگاہ'), ['نگاه']); assert.deepEqual(formsIn('ar', 'معنی'), ['معني', 'معنى']); });