Jump to content

Module:cmn-pron/sandbox/testcases

From Wiktionary, the free dictionary


local p = require('Module:UnitTests')
local m_pron = require('Module:cmn-pron/sandbox')
 
function p:check_convert(text, expected)
	self:equals(text, m_pron.py_zhuyin(text), expected)
end
 
function p:check_diacr2num(text, expected)
	self:equals(text, m_pron.py_transform(text,true), expected)
end

function p:zhuyin_py(text, expected)
	self:equals(text, m_pron.zhuyin_py(text), expected)
end

function p:gwoyeu(text, expected)
	self:equals(text, m_pron.py_gwoyeu(text), expected)
end

function p:py_wg(text, expected)
	self:equals(text, m_pron.py_wg(text), expected)
end

function p:tongyong(text, expected)
	self:equals(text, m_pron.py_tongyong(text), expected)
end

function p:test_convert_diacritics()
	local examples = {
		{ 'yái','ㄧㄞˊ' },
		{ 'ōyō','ㄛ ㄧㄛ' },	
		--èr, ěr and apostrophe
		{ 'ěrduo','ㄦˇ ˙ㄉㄨㄛ' },
		{ 'èr','ㄦˋ' },
		{ "dì'èr shǒu","ㄉㄧˋ ㄦˋ ㄕㄡˇ" },
		{ 'Běijīng','ㄅㄟˇ ㄐㄧㄥ' },
		{ 'Zhōngguó','ㄓㄨㄥ ㄍㄨㄛˊ' },
		{ 'biān ... biān ...','ㄅㄧㄢ ... ㄅㄧㄢ ...' },
		{ 'bùyóu fēnshuō','ㄅㄨˋ ㄧㄡˊ ㄈㄣ ㄕㄨㄛ' },
		--erhua (???)
		{ 'wánr','ㄨㄢˊㄦ' },
		{ 'dàir','ㄉㄞˋㄦ' },
		-- neutral tone
		{ 'zhong','˙ㄓㄨㄥ' },
		{ 'ma','˙ㄇㄚ' },
		{ 'ba','˙ㄅㄚ' },
		{ 'ne','˙ㄋㄜ' },
		{ 'a','˙ㄚ' },
		{ 'le','˙ㄌㄜ' },
		{ 'fèiyong','ㄈㄟˋ ˙ㄩㄥ' },
		{ 'zhùyīn','ㄓㄨˋ ㄧㄣ' },
		{ 'fúhào','ㄈㄨˊ ㄏㄠˋ' },
		{ 'Dōngnán-Yà','ㄉㄨㄥ ㄋㄢˊ ㄧㄚˋ' },	
	}
	self:iterate(examples, 'check_convert')
end
 
function p:test_convert_numeric()
	local examples = {
		{ 'a1','ㄚ' },
		{ 'a2','ㄚˊ' },
		{ 'a3','ㄚˇ' },
		{ 'a4','ㄚˋ' },
		{ 'a5','˙ㄚ' },
		{ 'ai1','ㄞ' },
		{ 'ai2','ㄞˊ' },
		{ 'ai3','ㄞˇ' },
		{ 'ai4','ㄞˋ' },
		{ 'ai5','˙ㄞ' },
		{ 'an1','ㄢ' },
		{ 'an2','ㄢˊ' },
		{ 'an3','ㄢˇ' },
		{ 'an4','ㄢˋ' },
		{ 'an5','˙ㄢ' },
		{ 'ang1','ㄤ' },
		{ 'ang2','ㄤˊ' },
		{ 'ang3','ㄤˇ' },
		{ 'ang4','ㄤˋ' },
		{ 'ang5','˙ㄤ' },
		{ 'zun4','ㄗㄨㄣˋ' },
		{ 'zhong3','ㄓㄨㄥˇ' },
		{ 'juan3','ㄐㄩㄢˇ' },
		{ 'juan1 kuan3','ㄐㄩㄢ ㄎㄨㄢˇ' },
		{ 'er3 der2 er4 juanr1 xier4 zhongr3','ㄦˇ ㄉㄜˊㄦ ㄦˋ ㄐㄩㄢㄦ ㄒㄧㄝˋㄦ ㄓㄨㄥˇㄦ' },
		{ 'shi4 jie4 shi4 duo1 me5 de5 mei3 hao3 a5','ㄕˋ ㄐㄧㄝˋ ㄕˋ ㄉㄨㄛ ˙ㄇㄜ ˙ㄉㄜ ㄇㄟˇ ㄏㄠˇ ˙ㄚ' },
		{ 'shi4jie4shi4duo1me5de5mei3hao3a5','ㄕˋ ㄐㄧㄝˋ ㄕˋ ㄉㄨㄛ ˙ㄇㄜ ˙ㄉㄜ ㄇㄟˇ ㄏㄠˇ ˙ㄚ' },
		{ 'la1ji1','ㄌㄚ ㄐㄧ' },
		{ 'zhong5','˙ㄓㄨㄥ' },
	}
	self:iterate(examples, 'check_convert')
end
 
function p:test_diacritics_to_numeric()
	local examples = {
		{ 'Běijīng','bei3 jing1' },
		{ 'Zhōngguó','zhong1 guo2' },
		{ 'zhong','zhong5' },
	}
	self:iterate(examples, 'check_diacr2num')
end

function p:test_convert_pinyin()
	local examples = {
		--yō
		{ 'ㄧㄛ', 'yō' },
		--special cases
		{ 'ㄏㄇ˙', 'hm' },
		{ 'ㄫˊ', 'ńg' },
		{ 'ㄫˇ', 'ňg' },
		{ 'ㄫˋ', 'ǹg' },
	
		{ 'ㄉㄧˋ ㄦˋ ㄕㄡˇ', "dì èr shǒu" },
		--erhua
		{ 'ㄨㄢˊㄦ', 'wánr' },
		{ 'ㄉㄞˋㄦ', 'dàir' },
	
		{ 'ㄚˊ', 'á' },
		{ 'ㄞˋ', 'ài' },
		{ 'ㄢ˙', 'an' },
		{ 'ㄤˋ', 'àng' },
		{ 'ㄠ', 'āo' },
		{ 'ㄅㄚˋ', 'bà' },
		{ 'ㄅㄞˋ', 'bài' },
		{ 'ㄅㄢ˙', 'ban' },
		{ 'ㄅㄤˇ', 'bǎng' },
		{ 'ㄅㄠˋ', 'bào' },
		{ 'ㄅㄟ', 'bēi' },
		{ 'ㄅㄣˊ', 'bén' },
		{ 'ㄅㄥ˙', 'beng' },
		{ 'ㄅㄧˋ', 'bì' },
		{ 'ㄅㄧㄢ', 'biān' },
		{ 'ㄅㄧㄠ˙', 'biao' },
		{ 'ㄅㄧㄝ', 'biē' },
		{ 'ㄅㄧㄣ˙', 'bin' },
		{ 'ㄅㄧㄥˇ', 'bǐng' },
		{ 'ㄅㄛ', 'bō' },
		{ 'ㄅㄨ˙', 'bu' },
		{ 'ㄘㄚ', 'cā' },
		{ 'ㄘㄞˇ', 'cǎi' },
		{ 'ㄘㄢˋ', 'càn' },
		{ 'ㄘㄤˊ', 'cáng' },
		{ 'ㄘㄠ', 'cāo' },
		{ 'ㄘㄜˊ', 'cé' },
		{ 'ㄘㄟˊ', 'céi' },
		{ 'ㄘㄣ', 'cēn' },
		{ 'ㄘㄥ', 'cēng' },
		{ 'ㄔㄚˋ', 'chà' },
		{ 'ㄔㄞˋ', 'chài' },
		{ 'ㄔㄢ', 'chān' },
		{ 'ㄔㄤˋ', 'chàng' },
		{ 'ㄔㄠ˙', 'chao' },
		{ 'ㄔㄜˋ', 'chè' },
		{ 'ㄔㄣˇ', 'chěn' },
		{ 'ㄔㄥˊ', 'chéng' },
		{ 'ㄔ', 'chī' },
		{ 'ㄔㄨㄥˊ', 'chóng' },
		{ 'ㄔㄡˋ', 'chòu' },
		{ 'ㄔㄨˊ', 'chú' },
		{ 'ㄔㄨㄚ˙', 'chua' },
		{ 'ㄔㄨㄞ˙', 'chuai' },
		{ 'ㄔㄨㄢˇ', 'chuǎn' },
		{ 'ㄔㄨㄤˋ', 'chuàng' },
		{ 'ㄔㄨㄟˋ', 'chuì' },
		{ 'ㄔㄨㄣˇ', 'chǔn' },
		{ 'ㄔㄨㄛ˙', 'chuo' },
		{ 'ㄘ˙', 'ci' },
		{ 'ㄘㄨㄥ', 'cōng' },
		{ 'ㄘㄡˊ', 'cóu' },
		{ 'ㄘㄨˋ', 'cù' },
		{ 'ㄘㄨㄢˇ', 'cuǎn' },
		{ 'ㄘㄨㄟ', 'cuī' },
		{ 'ㄘㄨㄣ', 'cūn' },
		{ 'ㄘㄨㄛˊ', 'cuó' },
		{ 'ㄉㄚˊ', 'dá' },
		{ 'ㄉㄞˇ', 'dǎi' },
		{ 'ㄉㄢ', 'dān' },
		{ 'ㄉㄤ', 'dāng' },
		{ 'ㄉㄠˇ', 'dǎo' },
		{ 'ㄉㄜˊ', 'dé' },
		{ 'ㄉㄟˇ', 'děi' },
		{ 'ㄉㄣ˙', 'den' },
		{ 'ㄉㄥ˙', 'deng' },
		{ 'ㄉㄧˇ', 'dǐ' },
		{ 'ㄉㄧㄚˋ', 'dià' },
		{ 'ㄉㄧㄢˇ', 'diǎn' },
		{ 'ㄉㄧㄠ', 'diāo' },
		{ 'ㄉㄧㄝˋ', 'diè' },
		{ 'ㄉㄧㄥˊ', 'díng' },
		{ 'ㄉㄧㄡˇ', 'diǔ' },
		{ 'ㄉㄨㄥ', 'dōng' },
		{ 'ㄉㄡ', 'dōu' },
		{ 'ㄉㄨ', 'dū' },
		{ 'ㄉㄨㄢ', 'duān' },
		{ 'ㄉㄨㄟˇ', 'duǐ' },
		{ 'ㄉㄨㄣˇ', 'dǔn' },
		{ 'ㄉㄨㄛ˙', 'duo' },
		{ 'ㄜˋ', 'è' },
		{ 'ㄟ', 'ēi' },
		{ 'ㄣˋ', 'èn' },
		{ 'ㄥˋ', 'èng' },
		{ 'ㄦˇ', 'ěr' },
		{ 'ㄈㄚˇ', 'fǎ' },
		{ 'ㄈㄢˋ', 'fàn' },
		{ 'ㄈㄤˊ', 'fáng' },
		{ 'ㄈㄟ', 'fēi' },
		{ 'ㄈㄣ', 'fēn' },
		{ 'ㄈㄥ', 'fēng' },
		{ 'ㄈㄧㄠ', 'fiāo' },
		{ 'ㄈㄛˇ', 'fǒ' },
		{ 'ㄈㄡˇ', 'fǒu' },
		{ 'ㄈㄨˋ', 'fù' },
		{ 'ㄍㄚ˙', 'ga' },
		{ 'ㄍㄞˊ', 'gái' },
		{ 'ㄍㄢˊ', 'gán' },
		{ 'ㄍㄤˋ', 'gàng' },
		{ 'ㄍㄠˇ', 'gǎo' },
		{ 'ㄍㄜˋ', 'gè' },
		{ 'ㄍㄟˇ', 'gěi' },
		{ 'ㄍㄣ', 'gēn' },
		{ 'ㄍㄥ˙', 'geng' },
		{ 'ㄍㄨㄥ', 'gōng' },
		{ 'ㄍㄡˇ', 'gǒu' },
		{ 'ㄍㄨˇ', 'gǔ' },
		{ 'ㄍㄨㄚ˙', 'gua' },
		{ 'ㄍㄨㄞ˙', 'guai' },
		{ 'ㄍㄨㄢˋ', 'guàn' },
		{ 'ㄍㄨㄤˋ', 'guàng' },
		{ 'ㄍㄨㄟ˙', 'gui' },
		{ 'ㄍㄨㄣˇ', 'gǔn' },
		{ 'ㄍㄨㄛ˙', 'guo' },
		{ 'ㄏㄚ˙', 'ha' },
		{ 'ㄏㄞˊ', 'hái' },
		{ 'ㄏㄢ', 'hān' },
		{ 'ㄏㄤ˙', 'hang' },
		{ 'ㄏㄠ˙', 'hao' },
		{ 'ㄏㄜˋ', 'hè' },
		{ 'ㄏㄟˇ', 'hěi' },
		{ 'ㄏㄣˇ', 'hěn' },
		{ 'ㄏㄥˇ', 'hěng' },
		{ 'ㄏㄨㄥ', 'hōng' },
		{ 'ㄏㄡ˙', 'hou' },
		{ 'ㄏㄨˇ', 'hǔ' },
		{ 'ㄏㄨㄚ', 'huā' },
		{ 'ㄏㄨㄞˋ', 'huài' },
		{ 'ㄏㄨㄢˋ', 'huàn' },
		{ 'ㄏㄨㄤˇ', 'huǎng' },
		{ 'ㄏㄨㄟ', 'huī' },
		{ 'ㄏㄨㄣˋ', 'hùn' },
		{ 'ㄏㄨㄛˋ', 'huò' },
		{ 'ㄐㄧˇ', 'jǐ' },
		{ 'ㄐㄧㄚ', 'jiā' },
		{ 'ㄐㄧㄢˇ', 'jiǎn' },
		{ 'ㄐㄧㄤˋ', 'jiàng' },
		{ 'ㄐㄧㄠˊ', 'jiáo' },
		{ 'ㄐㄧㄝ', 'jiē' },
		{ 'ㄐㄧㄣˊ', 'jín' },
		{ 'ㄐㄧㄥ˙', 'jing' },
		{ 'ㄐㄩㄥˋ', 'jiòng' },
		{ 'ㄐㄧㄡˇ', 'jiǔ' },
		{ 'ㄐㄩˋ', 'jù' },
		{ 'ㄐㄩㄢˋ', 'juàn' },
		{ 'ㄐㄩㄝ˙', 'jue' },
		{ 'ㄐㄩㄣˋ', 'jùn' },
		{ 'ㄎㄚˋ', 'kà' },
		{ 'ㄎㄞˇ', 'kǎi' },
		{ 'ㄎㄢ', 'kān' },
		{ 'ㄎㄤ˙', 'kang' },
		{ 'ㄎㄠˋ', 'kào' },
		{ 'ㄎㄜ', 'kē' },
		{ 'ㄎㄟ˙', 'kei' },
		{ 'ㄎㄣ', 'kēn' },
		{ 'ㄎㄥ˙', 'keng' },
		{ 'ㄎㄨㄥˇ', 'kǒng' },
		{ 'ㄎㄡ', 'kōu' },
		{ 'ㄎㄨˊ', 'kú' },
		{ 'ㄎㄨㄚ˙', 'kua' },
		{ 'ㄎㄨㄞ˙', 'kuai' },
		{ 'ㄎㄨㄢ˙', 'kuan' },
		{ 'ㄎㄨㄤˇ', 'kuǎng' },
		{ 'ㄎㄨㄟˇ', 'kuǐ' },
		{ 'ㄎㄨㄣ', 'kūn' },
		{ 'ㄎㄨㄛˊ', 'kuó' },
		{ 'ㄌㄚˇ', 'lǎ' },
		{ 'ㄌㄞˊ', 'lái' },
		{ 'ㄌㄢˊ', 'lán' },
		{ 'ㄌㄤˋ', 'làng' },
		{ 'ㄌㄠ', 'lāo' },
		{ 'ㄌㄜˇ', 'lě' },
		{ 'ㄌㄟ˙', 'lei' },
		{ 'ㄌㄣ˙', 'len' },
		{ 'ㄌㄥˋ', 'lèng' },
		{ 'ㄌㄧ˙', 'li' },
		{ 'ㄌㄧㄚˇ', 'liǎ' },
		{ 'ㄌㄧㄢˋ', 'liàn' },
		{ 'ㄌㄧㄤˊ', 'liáng' },
		{ 'ㄌㄧㄠ', 'liāo' },
		{ 'ㄌㄧㄝ', 'liē' },
		{ 'ㄌㄧㄣ', 'līn' },
		{ 'ㄌㄧㄥˋ', 'lìng' },
		{ 'ㄌㄧㄡ˙', 'liu' },
		{ 'ㄌㄛ˙', 'lo' },
		{ 'ㄌㄨㄥˇ', 'lǒng' },
		{ 'ㄌㄡˋ', 'lòu' },
		{ 'ㄌㄨ˙', 'lu' },
		{ 'ㄌㄨㄢ', 'luān' },
		{ 'ㄌㄩㄝ', 'lüē' },
		{ 'ㄌㄨㄣˋ', 'lùn' },
		{ 'ㄌㄨㄛˇ', 'luǒ' },
		{ 'ㄌㄩˊ', 'lǘ' },
		{ 'ㄇㄚˇ', 'mǎ' },
		{ 'ㄇㄞˋ', 'mài' },
		{ 'ㄇㄢˇ', 'mǎn' },
		{ 'ㄇㄤˇ', 'mǎng' },
		{ 'ㄇㄠ', 'māo' },
		{ 'ㄇㄜ', 'mē' },
		{ 'ㄇㄟˇ', 'měi' },
		{ 'ㄇㄣˋ', 'mèn' },
		{ 'ㄇㄥ˙', 'meng' },
		{ 'ㄇㄧ˙', 'mi' },
		{ 'ㄇㄧㄢ', 'miān' },
		{ 'ㄇㄧㄠˇ', 'miǎo' },
		{ 'ㄇㄧㄝ˙', 'mie' },
		{ 'ㄇㄧㄣ˙', 'min' },
		{ 'ㄇㄧㄥˇ', 'mǐng' },
		{ 'ㄇㄧㄡ˙', 'miu' },
		{ 'ㄇㄛˇ', 'mǒ' },
		{ 'ㄇㄡˋ', 'mòu' },
		{ 'ㄇㄨ˙', 'mu' },
		{ 'ㄋㄚ˙', 'na' },
		{ 'ㄋㄞ', 'nāi' },
		{ 'ㄋㄢ˙', 'nan' },
		{ 'ㄋㄤˇ', 'nǎng' },
		{ 'ㄋㄠ', 'nāo' },
		{ 'ㄋㄜˊ', 'né' },
		{ 'ㄋㄟˋ', 'nèi' },
		{ 'ㄋㄣˊ', 'nén' },
		{ 'ㄋㄥ', 'nēng' },
		{ 'ㄋㄧ˙', 'ni' },
		{ 'ㄋㄧㄢˇ', 'niǎn' },
		{ 'ㄋㄧㄤ', 'niāng' },
		{ 'ㄋㄧㄠ', 'niāo' },
		{ 'ㄋㄧㄝˊ', 'nié' },
		{ 'ㄋㄧㄣˊ', 'nín' },
		{ 'ㄋㄧㄥˋ', 'nìng' },
		{ 'ㄋㄧㄡ', 'niū' },
		{ 'ㄋㄨㄥˇ', 'nǒng' },
		{ 'ㄋㄡˋ', 'nòu' },
		{ 'ㄋㄨ', 'nū' },
		{ 'ㄋㄨㄢ˙', 'nuan' },
		{ 'ㄋㄩㄝˇ', 'nüě' },
		{ 'ㄋㄨㄣˊ', 'nún' },
		{ 'ㄋㄨㄛ', 'nuō' },
		{ 'ㄋㄩˊ', 'nǘ' },
		{ 'ㄛˋ', 'ò' },
		{ 'ㄡ', 'ōu' },
		{ 'ㄆㄚˊ', 'pá' },
		{ 'ㄆㄞˊ', 'pái' },
		{ 'ㄆㄢ˙', 'pan' },
		{ 'ㄆㄤˊ', 'páng' },
		{ 'ㄆㄠˇ', 'pǎo' },
		{ 'ㄆㄟˋ', 'pèi' },
		{ 'ㄆㄣ˙', 'pen' },
		{ 'ㄆㄥˇ', 'pěng' },
		{ 'ㄆㄧ', 'pī' },
		{ 'ㄆㄧㄢ', 'piān' },
		{ 'ㄆㄧㄠˇ', 'piǎo' },
		{ 'ㄆㄧㄝ˙', 'pie' },
		{ 'ㄆㄧㄣˇ', 'pǐn' },
		{ 'ㄆㄧㄥ', 'pīng' },
		{ 'ㄆㄛˋ', 'pò' },
		{ 'ㄆㄡˇ', 'pǒu' },
		{ 'ㄆㄨ', 'pū' },
		{ 'ㄑㄧˋ', 'qì' },
		{ 'ㄑㄧㄚˊ', 'qiá' },
		{ 'ㄑㄧㄢˇ', 'qiǎn' },
		{ 'ㄑㄧㄤ˙', 'qiang' },
		{ 'ㄑㄧㄠˇ', 'qiǎo' },
		{ 'ㄑㄧㄝˊ', 'qié' },
		{ 'ㄑㄧㄣˊ', 'qín' },
		{ 'ㄑㄧㄥˊ', 'qíng' },
		{ 'ㄑㄩㄥˋ', 'qiòng' },
		{ 'ㄑㄧㄡˇ', 'qiǔ' },
		{ 'ㄑㄩˇ', 'qǔ' },
		{ 'ㄑㄩㄢˊ', 'quán' },
		{ 'ㄑㄩㄝˊ', 'qué' },
		{ 'ㄑㄩㄣˊ', 'qún' },
		{ 'ㄖㄢˇ', 'rǎn' },
		{ 'ㄖㄤ˙', 'rang' },
		{ 'ㄖㄠ', 'rāo' },
		{ 'ㄖㄜˊ', 'ré' },
		{ 'ㄖㄣ', 'rēn' },
		{ 'ㄖㄥ˙', 'reng' },
		{ 'ㄖ', 'rī' },
		{ 'ㄖㄨㄥˊ', 'róng' },
		{ 'ㄖㄡˇ', 'rǒu' },
		{ 'ㄖㄨ˙', 'ru' },
		{ 'ㄖㄨㄚˋ', 'ruà' },
		{ 'ㄖㄨㄢˊ', 'ruán' },
		{ 'ㄖㄨㄟˊ', 'ruí' },
		{ 'ㄖㄨㄣˋ', 'rùn' },
		{ 'ㄖㄨㄛˋ', 'ruò' },
		{ 'ㄙㄚˊ', 'sá' },
		{ 'ㄙㄞ', 'sāi' },
		{ 'ㄙㄢˊ', 'sán' },
		{ 'ㄙㄤ', 'sāng' },
		{ 'ㄙㄠˊ', 'sáo' },
		{ 'ㄙㄜ', 'sē' },
		{ 'ㄙㄣˇ', 'sěn' },
		{ 'ㄙㄥˇ', 'sěng' },
		{ 'ㄕㄚˊ', 'shá' },
		{ 'ㄕㄞ', 'shāi' },
		{ 'ㄕㄢ˙', 'shan' },
		{ 'ㄕㄤˇ', 'shǎng' },
		{ 'ㄕㄠˋ', 'shào' },
		{ 'ㄕㄜˋ', 'shè' },
		{ 'ㄕㄟˇ', 'shěi' },
		{ 'ㄕㄣˇ', 'shěn' },
		{ 'ㄕㄥ˙', 'sheng' },
		{ 'ㄕˋ', 'shì' },
		{ 'ㄕㄡˇ', 'shǒu' },
		{ 'ㄕㄨˇ', 'shǔ' },
		{ 'ㄕㄨㄚˋ', 'shuà' },
		{ 'ㄕㄨㄚˊ', 'shuá' },
		{ 'ㄕㄨㄢ', 'shuān' },
		{ 'ㄕㄨㄤˊ', 'shuáng' },
		{ 'ㄕㄨㄟ', 'shuī' },
		{ 'ㄕㄨㄣˇ', 'shǔn' },
		{ 'ㄕㄨㄛˋ', 'shuò' },
		{ 'ㄙ˙', 'si' },
		{ 'ㄙㄨㄥ', 'sōng' },
		{ 'ㄙㄡ˙', 'sou' },
		{ 'ㄙㄨ', 'sū' },
		{ 'ㄙㄨㄢˇ', 'suǎn' },
		{ 'ㄙㄨㄟ', 'suī' },
		{ 'ㄙㄨㄣ˙', 'sun' },
		{ 'ㄙㄨㄛ˙', 'suo' },
		{ 'ㄊㄚ˙', 'ta' },
		{ 'ㄊㄞˊ', 'tái' },
		{ 'ㄊㄢˋ', 'tàn' },
		{ 'ㄊㄤˋ', 'tàng' },
		{ 'ㄊㄠ', 'tāo' },
		{ 'ㄊㄜˋ', 'tè' },
		{ 'ㄊㄟˊ', 'téi' },
		{ 'ㄊㄥˇ', 'těng' },
		{ 'ㄊㄧ˙', 'ti' },
		{ 'ㄊㄧㄢˇ', 'tiǎn' },
		{ 'ㄊㄧㄠˇ', 'tiǎo' },
		{ 'ㄊㄧㄝ˙', 'tie' },
		{ 'ㄊㄧㄥ', 'tīng' },
		{ 'ㄊㄨㄥ˙', 'tong' },
		{ 'ㄊㄡˊ', 'tóu' },
		{ 'ㄊㄨˋ', 'tù' },
		{ 'ㄊㄨㄢ', 'tuān' },
		{ 'ㄊㄨㄟˋ', 'tuì' },
		{ 'ㄊㄨㄣ', 'tūn' },
		{ 'ㄊㄨㄛˊ', 'tuó' },
		{ 'ㄨㄚˋ', 'wà' },
		{ 'ㄨㄞˊ', 'wái' },
		{ 'ㄨㄢˊ', 'wán' },
		{ 'ㄨㄤˊ', 'wáng' },
		{ 'ㄨㄟˋ', 'wèi' },
		{ 'ㄨㄣˇ', 'wěn' },
		{ 'ㄨㄥˇ', 'wěng' },
		{ 'ㄨㄛ', 'wō' },
		{ 'ㄨ', 'wū' },
		{ 'ㄒㄧˋ', 'xì' },
		{ 'ㄒㄧㄚˇ', 'xiǎ' },
		{ 'ㄒㄧㄢˇ', 'xiǎn' },
		{ 'ㄒㄧㄤˋ', 'xiàng' },
		{ 'ㄒㄧㄠ', 'xiāo' },
		{ 'ㄒㄧㄝ', 'xiē' },
		{ 'ㄒㄧㄣ', 'xīn' },
		{ 'ㄒㄧㄥˋ', 'xìng' },
		{ 'ㄒㄩㄥ˙', 'xiong' },
		{ 'ㄒㄧㄡ˙', 'xiu' },
		{ 'ㄒㄩˋ', 'xù' },
		{ 'ㄒㄩㄢˋ', 'xuàn' },
		{ 'ㄒㄩㄝˇ', 'xuě' },
		{ 'ㄒㄩㄣ˙', 'xun' },
		{ 'ㄧㄚ˙', 'ya' },
		{ 'ㄧㄞ˙', 'yai' },
		{ 'ㄧㄢˇ', 'yǎn' },
		{ 'ㄧㄤˋ', 'yàng' },
		{ 'ㄧㄠˋ', 'yào' },
		{ 'ㄧㄝ', 'yē' },
		{ 'ㄧˇ', 'yǐ' },
		{ 'ㄧㄣ˙', 'yin' },
		{ 'ㄧㄥ', 'yīng' },
		{ 'ㄧㄛˇ', 'yǒ' },
		{ 'ㄩㄥˋ', 'yòng' },
		{ 'ㄧㄡ', 'yōu' },
		{ 'ㄩˇ', 'yǔ' },
		{ 'ㄩㄢˊ', 'yuán' },
		{ 'ㄩㄝˋ', 'yuè' },
		{ 'ㄩㄣˊ', 'yún' },
		{ 'ㄗㄚˊ', 'zá' },
		{ 'ㄗㄞ˙', 'zai' },
		{ 'ㄗㄢˋ', 'zàn' },
		{ 'ㄗㄤˇ', 'zǎng' },
		{ 'ㄗㄠˇ', 'zǎo' },
		{ 'ㄗㄜˇ', 'zě' },
		{ 'ㄗㄟˇ', 'zěi' },
		{ 'ㄗㄣˇ', 'zěn' },
		{ 'ㄗㄥ˙', 'zeng' },
		{ 'ㄓㄚ˙', 'zha' },
		{ 'ㄓㄞ˙', 'zhai' },
		{ 'ㄓㄢ', 'zhān' },
		{ 'ㄓㄤˋ', 'zhàng' },
		{ 'ㄓㄠˇ', 'zhǎo' },
		{ 'ㄓㄜ', 'zhē' },
		{ 'ㄓㄟˊ', 'zhéi' },
		{ 'ㄓㄣ', 'zhēn' },
		{ 'ㄓㄥ˙', 'zheng' },
		{ 'ㄓˊ', 'zhí' },
		{ 'ㄓㄨㄥ', 'zhōng' },
		{ 'ㄓㄡˋ', 'zhòu' },
		{ 'ㄓㄨˇ', 'zhǔ' },
		{ 'ㄓㄨㄚ', 'zhuā' },
		{ 'ㄓㄨㄞ', 'zhuāi' },
		{ 'ㄓㄨㄢˇ', 'zhuǎn' },
		{ 'ㄓㄨㄤ', 'zhuāng' },
		{ 'ㄓㄨㄟ', 'zhuī' },
		{ 'ㄓㄨㄣ', 'zhūn' },
		{ 'ㄓㄨㄛˋ', 'zhuò' },
		{ 'ㄗˇ', 'zǐ' },
		{ 'ㄗㄨㄥˋ', 'zòng' },
		{ 'ㄗㄡ', 'zōu' },
		{ 'ㄗㄨˇ', 'zǔ' },
		{ 'ㄗㄨㄢˊ', 'zuán' },
		{ 'ㄗㄨㄟˋ', 'zuì' },
		{ 'ㄗㄨㄣˊ', 'zún' },
		{ 'ㄗㄨㄛ˙', 'zuo' },
	}
	self:iterate(examples, 'zhuyin_py')
end

function p:test_gwoyeu_romatzyh()
	local examples = {
		{ 'qīnghǎi','chinghae' },
		{ 'fújiàn','fwujiann' },
		{ 'guǎngdōng','goangdong' },
		{ 'héběi','herbeei' },
		{ 'húnán','hwunan' },
		{ 'zhèjiāng','jehjiang' },
		{ 'nèiménggǔ','neymengguu' },
		{ 'shǎnxī','shaanshi' },
		{ 'xīnjiāng','shinjiang' },
		{ 'xīzàng','shitzanq' },
		{ 'sìchuān','syhchuan' },
	}
	self:iterate(examples, 'gwoyeu')
end

function p:test_tongyong()
	local examples = {
		{ 'Qīnghǎi', 'Cinghǎi' },
		{ 'Fújiàn', 'Fújiàn' },
		{ 'Guǎngdōng', 'Guǎngdong' },
		{ 'Héběi', 'Héběi' },
		{ 'Húnán', 'Húnán' },
		{ 'Zhèjiāng', 'Jhèjiang' },
		{ 'Nèiménggǔ', 'Nèiménggǔ' },
		{ 'Shǎnxī', 'Shǎnsi' },
		{ 'Xīnjiāng', 'Sinjiang' },
		{ 'Xīzàng', 'Sizàng' },
		{ 'Sìchuān', 'Sìhchuan' },
	}
	self:iterate(examples, 'tongyong')
end

function p:test_py_wg()
	local examples = {
		{ "a", "a<sup>5</sup>" },
		{ "o", "o<sup>5</sup>" },
		{ "ê", "eh<sup>5</sup>" },
		{ "e", "o<sup>5</sup>" },
		{ "ai", "ai<sup>5</sup>" },
		{ "ei", "ei<sup>5</sup>" },
		{ "ao", "ao<sup>5</sup>" },
		{ "ou", "ou<sup>5</sup>" },
		{ "an", "an<sup>5</sup>" },
		{ "en", "ên<sup>5</sup>" },
		{ "ang", "ang<sup>5</sup>" },
		{ "eng", "êng<sup>5</sup>" },
		{ "er", "êrh<sup>5</sup>" },
		{ "yi", "i<sup>5</sup>" },
		{ "ye", "yeh<sup>5</sup>" },
		{ "you", "yu<sup>5</sup>" },
		{ "yan", "yen<sup>5</sup>" },
		{ "yin", "yin<sup>5</sup>" },
		{ "ying", "ying<sup>5</sup>" },
		{ "wu", "wu<sup>5</sup>" },
		{ "wo", "wo<sup>5</sup>" },
		{ "wei", "wei<sup>5</sup>" },
		{ "wen", "wên<sup>5</sup>" },
		{ "weng", "wêng<sup>5</sup>" },
		{ "ong", "ung<sup>5</sup>" },
		{ "yu", "yü<sup>5</sup>" },
		{ "yue", "yüeh<sup>5</sup>" },
		{ "yuan", "yüan<sup>5</sup>" },
		{ "yun", "yün<sup>5</sup>" },
		{ "yong", "yung<sup>5</sup>" },
		{ "bo", "po<sup>5</sup>" },
		{ "po", "pʻo<sup>5</sup>" },
		{ "mo", "mo<sup>5</sup>" },
		{ "fo", "fo<sup>5</sup>" },
		{ "duo", "to<sup>5</sup>" },
		{ "tuo", "tʻo<sup>5</sup>" },
		{ "nuo", "no<sup>5</sup>" },
		{ "luo", "lo<sup>5</sup>" },
		{ "feng", "fêng<sup>5</sup>" },
		{ "diu", "tiu<sup>5</sup>" },
		{ "dui", "tui<sup>5</sup>" },
		{ "dun", "tun<sup>5</sup>" },
		{ "te", "tʻê<sup>5</sup>" },
		{ "nü", "nü<sup>5</sup>" },
		{ "lü", "lü<sup>5</sup>" },
		{ "ger", "kêrh<sup>5</sup>" },
		{ "ge", "ko<sup>5</sup>" },
		{ "ke", "kʻo<sup>5</sup>" },
		{ "he", "ho<sup>5</sup>" },
		{ "guo", "kuo<sup>5</sup>" },
		{ "kuo", "kʻuo<sup>5</sup>" },
		{ "huo", "huo<sup>5</sup>" },
		{ "ji", "chi<sup>5</sup>" },
		{ "qi", "chʻi<sup>5</sup>" },
		{ "xi", "hsi<sup>5</sup>" },
		{ "jian", "chien<sup>5</sup>" },
		{ "jiong", "chiung<sup>5</sup>" },
		{ "qin", "chʻin<sup>5</sup>" },
		{ "xuan", "hsüan<sup>5</sup>" },
		{ "zhe", "chê<sup>5</sup>" },
		{ "zhi", "chih<sup>5</sup>" },
		{ "zhuo", "cho<sup>5</sup>" },
		{ "che", "chʻê<sup>5</sup>" },
		{ "chi", "chʻih<sup>5</sup>" },
		{ "chuo", "chʻo<sup>5</sup>" },
		{ "she", "shê<sup>5</sup>" },
		{ "shi", "shih<sup>5</sup>" },
		{ "shuo", "shuo<sup>5</sup>" },
		{ "re", "jê<sup>5</sup>" },
		{ "ri", "jih<sup>5</sup>" },
		{ "ruo", "jo<sup>5</sup>" },
		{ "ze", "tsê<sup>5</sup>" },
		{ "zi", "tzŭ<sup>5</sup>" },
		{ "zuo", "tso<sup>5</sup>" },
		{ "ce", "tsʻê<sup>5</sup>" },
		{ "ci", "tzʻŭ<sup>5</sup>" },
		{ "cuo", "tsʻo<sup>5</sup>" },
		{ "se", "sê<sup>5</sup>" },
		{ "si", "ssŭ<sup>5</sup>" },
		{ "suo", "so<sup>5</sup>" },
		{ "mā", "ma<sup>1</sup>" },
		{ "má", "ma<sup>2</sup>" },
		{ "mǎ", "ma<sup>3</sup>" },
		{ "mà", "ma<sup>4</sup>" },
		{ "ma", "ma<sup>5</sup>" },
		{ "gui", "kuei<sup>5</sup>" },
		{ "kui", "kʻuei<sup>5</sup>" },
	}
	self:iterate(examples, 'py_wg')
end

function p:test_erhua()
	local examples = {
		{ "tuō'érsuǒ", "y", "tuō'érsuǒr" },
	}
	
	self:iterate(examples, function (self, text, erhua_pos, expected)
		-- Third argument and first return value are not needed.
		local _, erhua = m_pron.erhua(text, erhua_pos, "托兒所")
		self:equals(text, erhua, expected)
	end)
end

return p