Module:bg-common/testcases

All tests passed. (refresh)

TextExpectedActual
test_add_monosyllabic_stress:
Monosyllabic, no acute accent
Passed
Passedссс
Passedввв
Passedаа́а́
Passedяя́я́
Passedсомсо́мсо́м
Passedпринцпри́нцпри́нц
Passedѝѝѝ
PassedБАЛБА́ЛБА́Л
Monosyllabic with acute accent
Passedвпря́гвпря́гвпря́г
Passedдъ́лгдъ́лгдъ́лг
PassedТРЕ́НДТРЕ́НДТРЕ́НД
PassedУ́У́У́
Passedна́й-на́й-на́й-
Polysyllabic, no acute accent
Passedлейкалейкалейка
Passedкатарамакатарамакатарама
PassedУНИЦЕФУНИЦЕФУНИЦЕФ
PassedСевастополСевастополСевастопол
Polysyllabic with acute accent
Passedко́скоджако́скоджако́скоджа
Passedпарашу́тпарашу́тпарашу́т
PassedДоми́нгоДоми́нгоДоми́нго
PassedЮНЕ́СКОЮНЕ́СКОЮНЕ́СКО
Suffixes don't get an acute accent
Passed-вам-вам-вам
Passed-ка-ка-ка
Prefixes *do* get an acute accent
Passedпо-по́-по́-
Passedпри-при́-при́-
TextExpectedActual
test_is_monosyllabic:
Monosyllabic words
Passedtruetrue
Passedсtruetrue
Passedиtruetrue
Passedдомtruetrue
Passedспринтtruetrue
PassedДомtruetrue
PassedСПРИНТtruetrue
Passedѝtruetrue
Passedпо-truetrue
Passed-вамtruetrue
Polysyllabic words
Passedнекаfalsefalse
PassedНЕКАfalsefalse
Passedполиграфfalsefalse
Passedлющянfalsefalse
Passedпроиз-falsefalse
Passed-овамfalsefalse
TextExpectedActual
test_maybe_stress_initial_syllable:
Zero syllables
Passedввв
Passedссс
Monosyllabic, no stress
Passedщандща́ндща́нд
Passedстосто́сто́
Passedиски́ски́ск
Passedуу́у́
Monosyllabic with stress
Passedгра́мгра́мгра́м
Passedспи́ртспи́ртспи́рт
Passedфьо́нфьо́нфьо́н
Polysyllabic, no stress
Passedеделвайсе́делвайсе́делвайс
Passedврачкавра́чкавра́чка
Passedкльомбакльо́мбакльо́мба
Polysyllabic with stress
Passedка́мерака́мерака́мера
Passedполи́цияполи́цияполи́ция
Passedкатапу́лткатапу́лткатапу́лт
TextExpectedActual
test_remove_monosyllabic_stress:
Monosyllabic with acute accent
Passedвпря́гвпрягвпряг
Passedдъ́лгдългдълг
PassedТРЕ́НДТРЕНДТРЕНД
PassedУ́УУ
Passedгра́хграхграх
Monosyllabic, no acute accent
Passed
Passedссс
Passedввв
Passedааа
Passedяяя
Passedсомсомсом
Passedпринцпринцпринц
Passedѝѝѝ
PassedБАЛБАЛБАЛ
Polysyllabic, no acute accent
Passedлейкалейкалейка
Passedкатарамакатарамакатарама
PassedУНИЦЕФУНИЦЕФУНИЦЕФ
PassedСевастополСевастополСевастопол
Polysyllabic with acute accent
Passedко́скоджако́скоджако́скоджа
Passedпарашу́тпарашу́тпарашу́т
PassedДоми́нгоДоми́нгоДоми́нго
PassedЮНЕ́СКОЮНЕ́СКОЮНЕ́СКО
Suffixes don't get their acute accent removed
Passed-а́ч-а́ч-а́ч
Passed-ни́к-ни́к-ни́к
Prefixes *do* get their acute accent removed
Passedпо́-по-по-
Passedпри́-при-при-

local tests = require("Module:UnitTests")
local m_bg = require("Module:bg-common")

--- << is_monosyllabic >> ---

local is_monosyllabic_test_cases = {
	"Monosyllabic words",
	{ "", true },
	{ "с", true },
	{ "и", true },
	{ "дом", true },
	{ "спринт", true },
	{ "Дом", true },
	{ "СПРИНТ", true },
	{ "ѝ", true },
	{ "по-", true },
	{ "-вам", true },
	
	"Polysyllabic words",
	{ "нека", false },
	{ "НЕКА", false },
	{ "полиграф", false },
	{ "лющян", false },
	{ "произ-", false },
	{ "-овам", false },
}

function tests:check_is_monosyllabic(word, expected)
	local actual = m_bg.is_monosyllabic(word)
	
	tests:equals(word, actual, expected)
end
	
function tests:test_is_monosyllabic()
	tests:iterate(is_monosyllabic_test_cases, "check_is_monosyllabic")
end

--- << add_monosyllabic_stress >> ---

local add_monosyllabic_stress_test_cases = {
	"Monosyllabic, no acute accent",
	{"", ""},
	{"с", "с"},
	{"в", "в"},
	{"а", "а́"},
	{"я", "я́"},
	{"сом", "со́м"},
	{"принц", "при́нц"},
	{"ѝ", "ѝ"}, -- no idea why this works
	{"БАЛ", "БА́Л"},
	
	"Monosyllabic with acute accent",
	{"впря́г", "впря́г"},
	{"дъ́лг", "дъ́лг"},
	{"ТРЕ́НД", "ТРЕ́НД"},
	{"У́", "У́"},
	{"на́й-", "на́й-"},
	
	"Polysyllabic, no acute accent",
	{"лейка", "лейка"},
	{"катарама", "катарама"},
	{"УНИЦЕФ", "УНИЦЕФ"},
	{"Севастопол", "Севастопол"},
	
	"Polysyllabic with acute accent",
	{"ко́скоджа", "ко́скоджа"},
	{"парашу́т", "парашу́т"},
	{"Доми́нго", "Доми́нго"},
	{"ЮНЕ́СКО", "ЮНЕ́СКО"},
	
	"Suffixes don't get an acute accent",
	{"-вам", "-вам"},
	{"-ка", "-ка"},
	
	"Prefixes *do* get an acute accent",
	{"по-", "по́-"},
	{"при-", "при́-"},
}

function tests:check_add_monosyllabic_stress(word, expected)
	local actual = m_bg.add_monosyllabic_stress(word)
	
	tests:equals(word, actual, expected)
end

function tests:test_add_monosyllabic_stress()
	tests:iterate(add_monosyllabic_stress_test_cases, "check_add_monosyllabic_stress")
end

--- << remove_monosyllabic_stress >> ---

local remove_monosyllabic_stress_test_cases = {
	"Monosyllabic with acute accent",
	{"впря́г", "впряг"},
	{"дъ́лг", "дълг"},
	{"ТРЕ́НД", "ТРЕНД"},
	{"У́", "У"},
	{"гра́х", "грах"},
	
	"Monosyllabic, no acute accent",
	{"", ""},
	{"с", "с"},
	{"в", "в"},
	{"а", "а"},
	{"я", "я"},
	{"сом", "сом"},
	{"принц", "принц"},
	{"ѝ", "ѝ"}, -- no idea why this works
	{"БАЛ", "БАЛ"},
	
	"Polysyllabic, no acute accent",
	{"лейка", "лейка"},
	{"катарама", "катарама"},
	{"УНИЦЕФ", "УНИЦЕФ"},
	{"Севастопол", "Севастопол"},
	
	"Polysyllabic with acute accent",
	{"ко́скоджа", "ко́скоджа"},
	{"парашу́т", "парашу́т"},
	{"Доми́нго", "Доми́нго"},
	{"ЮНЕ́СКО", "ЮНЕ́СКО"},
	
	"Suffixes don't get their acute accent removed",
	{"-а́ч", "-а́ч"},
	{"-ни́к", "-ни́к"},
	
	"Prefixes *do* get their acute accent removed",
	{"по́-", "по-"},
	{"при́-", "при-"},
}

function tests:check_remove_monosyllabic_stress(word, expected)
	local actual = m_bg.remove_monosyllabic_stress(word)
	
	tests:equals(word, actual, expected)
end

function tests:test_remove_monosyllabic_stress()
	tests:iterate(remove_monosyllabic_stress_test_cases, "check_remove_monosyllabic_stress")
end

--- << maybe_stress_initial_syllable >> ---

local maybe_stress_initial_test_cases = {
	"Zero syllables",
	{"в", "в"},
	{"с", "с"},
	
	"Monosyllabic, no stress",
	{"щанд", "ща́нд"},
	{"сто", "сто́"},
	{"иск", "и́ск"},
	{"у", "у́"},
	
	"Monosyllabic with stress",
	{"гра́м", "гра́м"},
	{"спи́рт", "спи́рт"},
	{"фьо́н", "фьо́н"},
	
	"Polysyllabic, no stress",
	{"еделвайс", "е́делвайс"},
	{"врачка", "вра́чка"},
	{"кльомба", "кльо́мба"},
	
	"Polysyllabic with stress",
	{"ка́мера", "ка́мера"},
	{"поли́ция", "поли́ция"},
	{"катапу́лт", "катапу́лт"},
}

function tests:check_maybe_stress_initial(word, expected)
	local actual = m_bg.maybe_stress_initial_syllable(word)
	
	tests:equals(word, actual, expected)
end

function tests:test_maybe_stress_initial_syllable()
	tests:iterate(maybe_stress_initial_test_cases, "check_maybe_stress_initial")
end

return tests