Module:User:Erutuon/he-translit-superscript/testcases

-- Put tab character between Hebrew and its transliteration. local examples = [[ בַּיִת	bayiṯ בֵּית	beʸṯ בָּתִּים	bɔttiʸm מַחֲנֶה	maḥănɛʰ בָּרָא	bɔrɔˀ רֶגֶל	rɛḡɛl כֹּהֵן	kohen מֶלֶךְ	mɛlɛḵ מַמְלָכָה	mamlɔḵɔʰ הַמַּמְלָכָה	hammamlɔḵɔʰ הַלְּלוּיָהּ	hall'luʷyɔh -- apostrophe to separate two identical consonants (not specified in paper) הַלְלוּיָהּ	hal'luʷyɔh -- apostrophe to separate two identical consonants (not specified in paper) יָדַע	yɔḏaʕ שָׁבוּעַ	šɔḇuʷaʕ רוּחַ	ruʷaḥ גָּבֹהַּ	gɔḇoah מָשִׁיחַ	mɔšiʸaḥ רֵיחַ	reʸaḥ שָׂדֶה	śɔḏɛʰ שְׂדֵה	śḏeʰ בָּנַי	bɔnay בְּנֵי	bneʸ צָרְכִּי	ṣɔrkiʸ חָכְמָה	ḥɔḵmɔʰ שִׁפְרָה	šip̄rɔʰ שָׁכְבְּךָ	šɔḵbḵɔ -- weird הָפְכָּה	hɔp̄kɔʰ קָטְבּוֹ	qɔṭboʷ נִשְׂרְפָה	niśrp̄ɔʰ -- weird בָּנָיו	bɔnɔʸw בָּנֶיהָ	bɔnɛʸhɔ מִצְוֹת	miṣwoṯ זִוּוּג	ziwwuʷḡ רֹאשׁ	roˀš רֵאשִׁית	reˀšiʸṯ רִאשׁוֹן	riˀšoʷn מְלָאכָה	mlɔˀḵɔʰ מְלֶאכֶת	mlɛˀḵɛṯ חֵטְא	ḥeṭˀ בָּרָאתָ	bɔrɔˀṯɔ חַטֹּאות	ḥaṭṭoˀʷṯ יְראוּ	yrˀuʷ הָחְלַט	hɔḥlaṭ וַיֵּבְךְּ	wayyeḇk אַרְאֶךָּ	ʔarʔɛkkɔ וַיַּשְׁקְ	wayyašq אַתְּ	ʔatt וּוָווֹ	uʷwɔwoʷ וָו	wɔw תָּו	tɔw קַו	qaw לָאו	lɔˀw חַי	ḥay חָי	ḥɔy פִּיו	piʸw כִּסְלֵו	kislew גּוֹי	goʷy גֹּיִים	goyiʸm רָאוּי	rɔʔuʷy קִיא	qiʸˀ יָבִיאוּ	yɔḇiʸʔuʷ יְבִיאוּן	yḇiʸʔuʷn מֵאוּן	meʔuʷn מֵיאוּן	meʸʔuʷn בּוֹאוּ	boʷʔuʷ בֹּאוּ	boʔuʷ בּוּאוּ	buʷʔuʷ אָבִיאָה	ʔɔḇiʸʔɔʰ מֵאָה	meʔɔʰ גֵּיאָהּ	geʸʔɔh אָבוֹאָה	ʔɔḇoʷʔɔʰ אָבֹאָה	ʔɔḇoʔɔʰ נְשׂוּאָה	nśuʷʔɔʰ קִיאוֹ	qiʸʔoʷ גֵּאוֹ	geʔoʷ גֵּיאוֹ	geʸʔoʷ בּוֹאוֹ	boʷʔoʷ בֹּאוֹ	boʔoʷ מִלּוּאוֹ	milluʷʔoʷ מִי	miʸ אִיִּים	ʔiyyiʸm אִיּוֹב	ʔiyyoʷḇ אִיּוּן	ʔiyyuʷn אַיִן	ʔayin בּוֹא	boʷˀ יְפֵהפֶה	yp̄eʰp̄ɛʰ אֹהֶל	ʔohɛl הָאֹהֱלָה	hɔʔohĕlɔʰ אָהֳלוֹ	ʔɔhŏloʷ אָהָלְךָ	ʔɔhɔlḵɔ יִשָּׂשכָר	yiśśɔḵɔr -- silent sin הוֹשִׁיעָה נָּא	hoʷšiʸʕɔʰ nnɔˀ -- initial gemination עַד בֹּאֲךָ	ʕaḏ boʔăḵɔ וַיַּשְׁקְ אֶת הַצֹּאן	wayyašq ʔɛṯ haṣṣoˀn בְּנֵי בְרָק	bneʸ ḇrɔq בְרָק	ḇrɔq אִישׁ יְהוּדִי הָיָה בְּשׁוּשַׁן הַבִּירָה וּשְׁמוֹ מָרְדֳּכַי בֶּן יָאִיר בֶּן־שִׁמְעִי בֶּן־קִישׁ אִישׁ יְמִינִי׃	ʔiʸš yhuʷḏiʸ hɔyɔʰ bšuʷšan habbiʸrɔʰ uʷšmoʷ mɔrdŏḵay bɛn yɔʔiʸr bɛn-šimʕiʸ bɛn-qiʸš ʔiʸš ymiʸniʸ. -- omit cantillation mark stuff -- implicit ktiv/qre that would be nice to have הִוא	hiʷˀ יְרוּשָׁלִַם	yruʷšɔlaim יְרוּשָׁלִָם	yruʷšɔlɔim יְרוּשָׁלְַמָה	yruʷšɔlaymɔʰ יְרוּשָׁלְָמָה	yruʷšɔlɔymɔʰ -- ktiv male tests חַיָּיב	ḥayyɔʸḇ חַוָּוה	ḥawwɔʷʰ הֱוֵוה	hĕweʷʰ הַיְינוּ	hayʸnuʷ הִתְכַּוְּונוּ	hiṯkawwʷnuʷ גַּוְונָא	gawʷnɔˀ מְייוּחָד	mʸyuʷḥɔḏ כְּדַאי	kḏaˀy כּוּלָּם	kuʷllɔm קִידּוּשׁ	qiʸdduʷš -- more alef אֲאַזֶּרְךָ	ʔăʔazzɛrḵɔ מְאֹד	mʔoḏ וַיִּבְאַשׁ	wayyiḇʔaš וַיֶּאְסֹר	wayyɛʔsor רֻאּוּ	ruʔʔuʷ תָּבִיאּוּ	tɔḇiʸʔʔuʷ וַיָּבִיאּוּ	wayyɔḇiʸʔʔuʷ -- sheva stress tests שָׁתְתָה	šɔṯ'ṯɔʰ שְׁתֵּי	šteʸ שְׁתַּיִם	štayim שְׁתֵּים עֶשְׁרֵי	šteʸm ʕɛšreʸ ]] -- special character inventory: -- ă ɛ ĕ ɔ ŏ -- ʔ ˀ ḇ ḡ ḏ ʰ ʷ ḥ ʸ ḵ ʕ p̄ -- ṭ š ś ṯ -- English order: -- ḇ ḏ ḡ ʰ ḥ ḵ p̄ -- š ś ṯ ṭ ʷ ʸ ʔ ˀ ʕ

local tests = require('Module:UnitTests')

local he_translit = require('Module:User:Erutuon/he-translit-superscript')

local full_link = require('Module:links').full_link local lang = require('Module:languages').getByCode('he') local sc = require('Module:scripts').getByCode('Hebr') local function link(term) return full_link{lang = lang, sc = sc, term = term} end

local function parse_examples(example_string) local examples = {} for line in mw.text.gsplit(example_string, "\n") do		local rest, comment = line:match("^(.-)%-%-%s*([^\n]+)%s*$") if not rest then rest = line end rest = mw.text.trim(rest) if rest == "" then table.insert(examples, comment) else local example = mw.text.split(rest, "\t") assert(#example == 2, #example .. "\t" .. mw.text.jsonEncode(rest)) table.insert(example, comment) table.insert(examples, example) end end return examples end

function tests:test_Tiberian self:iterate(		parse_examples(examples),		function(self, Hebrew, translit, comment)			assert(type(Hebrew) == "string", type(Hebrew))			assert(type(translit) == "string", type(translit))			return self:equals(link(Hebrew), mw.ustring.toNFC(he_translit.transliterate(Hebrew)), translit, {comment = comment})		end) end

return tests