Module:pi-conj/verb/testcases

From Wiktionary, the free dictionary
Jump to navigation Jump to search

This test checks that standard inflection tables are extracted properly for the Roman script. Other modules are used to test extraction for the Bengali script, the Brahmi script, the Burmese script, the Chakma script, the Devanagari script, the Khmer script, the Lao script with and without implicit vowels, the Sinhalese script, the Tai Tham script, and the Thai script with and without implicit vowels.

The Lua code for those other scripts' testcases invokes the code defined by this module.

All tests passed. (refresh)

TextExpectedActual
test_aati:
Passeddadāti pres 1dadāmi ; dadāma ; dade ; dadāmhedadāmi ; dadāma ; dade ; dadāmhe
Passeddadāti pres 2dadāsi ; dadātha ; dadāse ; dadavhedadāsi ; dadātha ; dadāse ; dadavhe
Passeddadāti pres 3dadāti ; dadanti ; dadāte ; dadante dadāredadāti ; dadanti ; dadāte ; dadante dadāre
Passeddadāti impf 1adada adadaṃ ; adadamhā ;  ; adada adadaṃ ; adadamhā ;  ;
Passeddadāti impf 2adado ; adadattha ;  ; adado ; adadattha ;  ;
Passeddadāti impf 3adada adadā ; adadu adadū ;  ; adada adadā ; adadu adadū ;  ;
Passeddadāti impr 1dadāmi ; dadāma ;  ; dadāmi ; dadāma ;  ;
Passeddadāti impr 2dadā dadāhi ; dadātha ;  ; dadā dadāhi ; dadātha ;  ;
Passeddadāti impr 3dadātu ; dadantu ;  ; dadātu ; dadantu ;  ;
Passeddadāti opt 1dadeyyāmi dadeyyaṃ ; dadeyyāma ; dadeyyaṃ ; dadeyyāmhedadeyyāmi dadeyyaṃ ; dadeyyāma ; dadeyyaṃ ; dadeyyāmhe
Passeddadāti opt 2dadeyyāsi ; dadeyyātha ; dadetho ; dadeyyavhodadeyyāsi ; dadeyyātha ; dadetho ; dadeyyavho
Passeddadāti opt 3dadeyya dade ; dadeyyuṃ ; dadetha ; daderaṃdadeyya dade ; dadeyyuṃ ; dadetha ; daderaṃ
Passeddadāti part dadant ; dadamānadadant ; dadamāna
Passeddadāte pres 1dade ; dadāmhedade ; dadāmhe
Passeddadāte pres 2dadāse ; dadavhedadāse ; dadavhe
Passeddadāte pres 3dadāte ; dadante dadāredadāte ; dadante dadāre
Passeddadāte impf 1 ;  ;
Passeddadāte impf 2 ;  ;
Passeddadāte impf 3 ;  ;
Passeddadāte impr 1 ;  ;
Passeddadāte impr 2 ;  ;
Passeddadāte impr 3 ;  ;
Passeddadāte opt 1dadeyyāmi dadeyyaṃ ; dadeyyāma ; dadeyyaṃ ; dadeyyāmhedadeyyāmi dadeyyaṃ ; dadeyyāma ; dadeyyaṃ ; dadeyyāmhe
Passeddadāte opt 2dadeyyāsi ; dadeyyātha ; dadetho ; dadeyyavhodadeyyāsi ; dadeyyātha ; dadetho ; dadeyyavho
Passeddadāte opt 3dadeyya dade ; dadeyyuṃ ; dadetha ; daderaṃdadeyya dade ; dadeyyuṃ ; dadetha ; daderaṃ
Passeddadāte part dadamānadadamāna
Passeddadāti alt opt a1dajjāmi ; dajjāmadajjāmi ; dajjāma
Passeddadāti alt opt a2dajjāsi ; dajjāthadajjāsi ; dajjātha
Passeddadāti alt opt a3dajjā ; dajjuṃdajjā ; dajjuṃ
TextExpectedActual
test_ati:
Passedpacati pres 1pacāmi ; pacāma ; pace ; pacāmhepacāmi ; pacāma ; pace ; pacāmhe
Passedpacati pres 2pacasi ; pacatha ; pacase ; pacavhepacasi ; pacatha ; pacase ; pacavhe
Passedpacati pres 3pacati ; pacanti ; pacate ; pacante pacarepacati ; pacanti ; pacate ; pacante pacare
Passedpacati impf 1apaca apacaṃ ; apacamhā ; apaciṃ ; apacāmhase apacamhaseapaca apacaṃ ; apacamhā ; apaciṃ ; apacāmhase apacamhase
Passedpacati impf 2apaco ; apacattha ; apacase ; apacavhaṃapaco ; apacattha ; apacase ; apacavhaṃ
Passedpacati impf 3apaca apacā ; apacu apacū ; apacattha ; apacatthuṃapaca apacā ; apacu apacū ; apacattha ; apacatthuṃ
Passedpacati impr 1pacāmi ; pacāma ; pace ; pacāmasepacāmi ; pacāma ; pace ; pacāmase
Passedpacati impr 2paca pacāhi ; pacatha ; pacassu ; pacavhopaca pacāhi ; pacatha ; pacassu ; pacavho
Passedpacati impr 3pacatu ; pacantu ; pacataṃ ; pacantaṃpacatu ; pacantu ; pacataṃ ; pacantaṃ
Passedpacati opt 1paceyyāmi paceyyaṃ pace ; paceyyāma ; paceyyaṃ ; paceyyāmhepaceyyāmi paceyyaṃ pace ; paceyyāma ; paceyyaṃ ; paceyyāmhe
Passedpacati opt 2paceyyāsi pace ; paceyyātha ; pacetho ; paceyyavhopaceyyāsi pace ; paceyyātha ; pacetho ; paceyyavho
Passedpacati opt 3paceyya pace ; paceyyuṃ ; pacetha ; paceraṃpaceyya pace ; paceyyuṃ ; pacetha ; paceraṃ
Passedpacati part pacant ; pacamānapacant ; pacamāna
Passedpacate pres 1pace ; pacāmhepace ; pacāmhe
Passedpacate pres 2pacase ; pacavhepacase ; pacavhe
Passedpacate pres 3pacate ; pacante pacarepacate ; pacante pacare
Passedpacate impf 1apaciṃ ; apacāmhase apacamhaseapaciṃ ; apacāmhase apacamhase
Passedpacate impf 2apacase ; apacavhaṃapacase ; apacavhaṃ
Passedpacate impf 3apacattha ; apacatthuṃapacattha ; apacatthuṃ
Passedpacate impr 1pace ; pacāmasepace ; pacāmase
Passedpacate impr 2pacassu ; pacavhopacassu ; pacavho
Passedpacate impr 3pacataṃ ; pacantaṃpacataṃ ; pacantaṃ
Passedpacate opt 1paceyyāmi paceyyaṃ pace ; paceyyāma ; paceyyaṃ ; paceyyāmhepaceyyāmi paceyyaṃ pace ; paceyyāma ; paceyyaṃ ; paceyyāmhe
Passedpacate opt 2paceyyāsi pace ; paceyyātha ; pacetho ; paceyyavhopaceyyāsi pace ; paceyyātha ; pacetho ; paceyyavho
Passedpacate opt 3paceyya pace ; paceyyuṃ ; pacetha ; paceraṃpaceyya pace ; paceyyuṃ ; pacetha ; paceraṃ
Passedpacate part pacamānapacamāna
Passedapaca impf 1apaca apacaṃ ; apacamhā ; apaciṃ ; apacāmhase apacamhaseapaca apacaṃ ; apacamhā ; apaciṃ ; apacāmhase apacamhase
Passedapaca impf 2apaco ; apacattha ; apacase ; apacavhaṃapaco ; apacattha ; apacase ; apacavhaṃ
Passedapaca impf 3apaca apacā ; apacu apacū ; apacattha ; apacatthuṃapaca apacā ; apacu apacū ; apacattha ; apacatthuṃ
Passedapacattha impf m1apaciṃ ; apacāmhase apacamhaseapaciṃ ; apacāmhase apacamhase
Passedapacattha impf m2apacase ; apacavhaṃapacase ; apacavhaṃ
Passedapacattha impf m3apacattha ; apacatthuṃapacattha ; apacatthuṃ
Passedpaceyya opt 1paceyyāmi paceyyaṃ ; paceyyāma ; paceyyaṃ ; paceyyāmhepaceyyāmi paceyyaṃ ; paceyyāma ; paceyyaṃ ; paceyyāmhe
Passedpaceyya opt 2paceyyāsi ; paceyyātha ; pacetho ; paceyyavhopaceyyāsi ; paceyyātha ; pacetho ; paceyyavho
Passedpaceyya opt 3paceyya ; paceyyuṃ ; pacetha ; paceraṃpaceyya ; paceyyuṃ ; pacetha ; paceraṃ
Passedpacetha opt m1paceyyaṃ ; paceyyāmhepaceyyaṃ ; paceyyāmhe
Passedpacetha opt m2pacetho ; paceyyavhopacetho ; paceyyavho
Passedpacetha opt m3pacetha ; paceraṃpacetha ; paceraṃ
TextExpectedActual
test_ayati:
Passedcorayati pres 1corayāmi ; corayāma ; coraye ; corayāmhecorayāmi ; corayāma ; coraye ; corayāmhe
Passedcorayati pres 2corayasi ; corayatha ; corayase ; corayavhecorayasi ; corayatha ; corayase ; corayavhe
Passedcorayati pres 3corayati ; corayanti ; corayate ; corayante corayarecorayati ; corayanti ; corayate ; corayante corayare
Passedcorayati impf 1coraya corayaṃ ; corayamhā ; corayiṃ ; corayāmhase corayamhasecoraya corayaṃ ; corayamhā ; corayiṃ ; corayāmhase corayamhase
Passedcorayati impf 2corayo ; corayattha ; corayase ; corayavhaṃcorayo ; corayattha ; corayase ; corayavhaṃ
Passedcorayati impf 3coraya corayā ; corayu corayū ; corayattha ; corayatthuṃcoraya corayā ; corayu corayū ; corayattha ; corayatthuṃ
Passedcorayati impr 1corayāmi ; corayāma ; coraye ; corayāmasecorayāmi ; corayāma ; coraye ; corayāmase
Passedcorayati impr 2corayāhi ; corayatha ; corayassu ; corayavhocorayāhi ; corayatha ; corayassu ; corayavho
Passedcorayati impr 3corayatu ; corayantu ;  ; corayantaṃcorayatu ; corayantu ;  ; corayantaṃ
Passedcorayati opt 1corayeyyāmi corayeyyaṃ ; corayeyyāma ; corayeyyaṃ ; corayeyyāmhecorayeyyāmi corayeyyaṃ ; corayeyyāma ; corayeyyaṃ ; corayeyyāmhe
Passedcorayati opt 2corayeyyāsi ; corayeyyātha ; corayetho ; corayeyyavhocorayeyyāsi ; corayeyyātha ; corayetho ; corayeyyavho
Passedcorayati opt 3corayeyya coraye ; corayeyyuṃ ; corayetha ; corayeraṃcorayeyya coraye ; corayeyyuṃ ; corayetha ; corayeraṃ
Passedcorayati part corayant ; corayamānacorayant ; corayamāna
Passedcorayate pres 1coraye ; corayāmhecoraye ; corayāmhe
Passedcorayate pres 2corayase ; corayavhecorayase ; corayavhe
Passedcorayate pres 3corayate ; corayante corayarecorayate ; corayante corayare
Passedcorayate impf 1corayiṃ ; corayāmhase corayamhasecorayiṃ ; corayāmhase corayamhase
Passedcorayate impf 2corayase ; corayavhaṃcorayase ; corayavhaṃ
Passedcorayate impf 3corayattha ; corayatthuṃcorayattha ; corayatthuṃ
Passedcorayate impr 1coraye ; corayāmasecoraye ; corayāmase
Passedcorayate impr 2corayassu ; corayavhocorayassu ; corayavho
Passedcorayate impr 3 ; corayantaṃ ; corayantaṃ
Passedcorayate opt 1corayeyyāmi corayeyyaṃ ; corayeyyāma ; corayeyyaṃ ; corayeyyāmhecorayeyyāmi corayeyyaṃ ; corayeyyāma ; corayeyyaṃ ; corayeyyāmhe
Passedcorayate opt 2corayeyyāsi ; corayeyyātha ; corayetho ; corayeyyavhocorayeyyāsi ; corayeyyātha ; corayetho ; corayeyyavho
Passedcorayate opt 3corayeyya coraye ; corayeyyuṃ ; corayetha ; corayeraṃcorayeyya coraye ; corayeyyuṃ ; corayetha ; corayeraṃ
Passedcorayate part corayamānacorayamāna
Passedcoraya impf 1coraya corayaṃ ; corayamhā ; corayiṃ ; corayāmhase corayamhasecoraya corayaṃ ; corayamhā ; corayiṃ ; corayāmhase corayamhase
Passedcoraya impf 2corayo ; corayattha ; corayase ; corayavhaṃcorayo ; corayattha ; corayase ; corayavhaṃ
Passedcoraya impf 3coraya corayā ; corayu corayū ; corayattha ; corayatthuṃcoraya corayā ; corayu corayū ; corayattha ; corayatthuṃ
Passedcorayattha impf m1corayiṃ ; corayāmhase corayamhasecorayiṃ ; corayāmhase corayamhase
Passedcorayattha impf m2corayase ; corayavhaṃcorayase ; corayavhaṃ
Passedcorayattha impf m3corayattha ; corayatthuṃcorayattha ; corayatthuṃ
TextExpectedActual
test_eti:
Passedcoreti pres 1coremi ; corema ;  ; coremi ; corema ;  ;
Passedcoreti pres 2coresi ; coretha ;  ; coresi ; coretha ;  ;
Passedcoreti pres 3coreti ; corenti ;  ; coreti ; corenti ;  ;
Passedcoreti impf 1 ;  ;  ;  ;  ;  ;
Passedcoreti impf 2 ;  ;  ;  ;  ;  ;
Passedcoreti impf 3 ;  ;  ;  ;  ;  ;
Passedcoreti impr 1coremi ; corema ;  ; coremi ; corema ;  ;
Passedcoreti impr 2corehi ; coretha ;  ; corehi ; coretha ;  ;
Passedcoreti impr 3coretu ; corentu ;  ; coretu ; corentu ;  ;
Passedcoreti opt 1coreyyāmi coreyyaṃ ; coreyyāma ; coreyyaṃ ; coreyyāmhecoreyyāmi coreyyaṃ ; coreyyāma ; coreyyaṃ ; coreyyāmhe
Passedcoreti opt 2coreyyāsi ; coreyyātha ; coretho ; coreyyavhocoreyyāsi ; coreyyātha ; coretho ; coreyyavho
Passedcoreti opt 3coreyya ; coreyyuṃ ; coretha ; coreraṃcoreyya ; coreyyuṃ ; coretha ; coreraṃ
Passedcoreti part corent ; corent ;
Passedcorete pres 1coraye ; corayāmhecoraye ; corayāmhe
Passedcorete pres 2corayase ; corayavhecorayase ; corayavhe
Passedcorete pres 3corayate ; corayante corayarecorayate ; corayante corayare
Passedcorete impf 1 ;  ;
Passedcorete impf 2 ;  ;
Passedcorete impf 3 ;  ;
Passedcorete impr 1coraye ; corayāmasecoraye ; corayāmase
Passedcorete impr 2corayassu ; corayavhocorayassu ; corayavho
Passedcorete impr 3 ; corayantaṃ ; corayantaṃ
Passedcorete opt 1coreyyāmi coreyyaṃ ; coreyyāma ; coreyyaṃ ; coreyyāmhecoreyyāmi coreyyaṃ ; coreyyāma ; coreyyaṃ ; coreyyāmhe
Passedcorete opt 2coreyyāsi ; coreyyātha ; coretho ; coreyyavhocoreyyāsi ; coreyyātha ; coretho ; coreyyavho
Passedcorete opt 3coreyya ; coreyyuṃ ; coretha ; coreraṃcoreyya ; coreyyuṃ ; coretha ; coreraṃ
Passedcorete part corayamānacorayamāna
TextExpectedActual
test_heti:
Passedheti futu1hemi ; hema ;  ; hemi ; hema ;  ;
Passedheti futu2hesi ; hetha ;  ; hesi ; hetha ;  ;
Passedheti futu3heti ; henti ;  ; heti ; henti ;  ;
TextExpectedActual
test_issa:
Passedagamissa cond1agamissaṃ ;  ; agamissaṃ ; agamissāmhaseagamissaṃ ;  ; agamissaṃ ; agamissāmhase
Passedagamissa cond2agamissa agamissi ; agamissatha ; agamisse agamissase ; agamissavheagamissa agamissi ; agamissatha ; agamisse agamissase ; agamissavhe
Passedagamissa cond3agamissā agamissa ; agamissaṃsu ; agamissatha ; agamissiṃsuagamissā agamissa ; agamissaṃsu ; agamissatha ; agamissiṃsu
Passedagamissā cond1agamissaṃ ;  ; agamissaṃ ; agamissāmhaseagamissaṃ ;  ; agamissaṃ ; agamissāmhase
Passedagamissā cond2agamissa agamissi ; agamissatha ; agamisse agamissase ; agamissavheagamissa agamissi ; agamissatha ; agamisse agamissase ; agamissavhe
Passedagamissā cond3agamissā agamissa ; agamissaṃsu ; agamissatha ; agamissiṃsuagamissā agamissa ; agamissaṃsu ; agamissatha ; agamissiṃsu
Passedagamissatha cond1agamissaṃ ; agamissāmhaseagamissaṃ ; agamissāmhase
Passedagamissatha cond2agamisse agamissase ; agamissavheagamisse agamissase ; agamissavhe
Passedagamissatha cond3agamissatha ; agamissiṃsuagamissatha ; agamissiṃsu
TextExpectedActual
test_issati:
Passedpacissati fut1pacissāmi ; pacissāma ; pacissaṃ ; pacissāmhepacissāmi ; pacissāma ; pacissaṃ ; pacissāmhe
Passedpacissati fut2pacissasi ; pacissatha ; pacissase ; pacissavhepacissasi ; pacissatha ; pacissase ; pacissavhe
Passedpacissati fut3pacissati ; pacissanti ; pacissate ; pacissantepacissati ; pacissanti ; pacissate ; pacissante
Passedpacissati cond1apacissaṃ ;  ; apacissaṃ ; apacissāmhaseapacissaṃ ;  ; apacissaṃ ; apacissāmhase
Passedpacissati cond2apacissa apacissi ; apacissatha ; apacisse apacissase ; apacissavheapacissa apacissi ; apacissatha ; apacisse apacissase ; apacissavhe
Passedpacissati cond3apacissā apacissa ; apacissaṃsu ; apacissatha ; apacissiṃsuapacissā apacissa ; apacissaṃsu ; apacissatha ; apacissiṃsu
Passedpacissate fut1pacissaṃ ; pacissāmhepacissaṃ ; pacissāmhe
Passedpacissate fut2pacissase ; pacissavhepacissase ; pacissavhe
Passedpacissate fut3pacissate ; pacissantepacissate ; pacissante
Passedpacissate cond1apacissaṃ ; apacissāmhaseapacissaṃ ; apacissāmhase
Passedpacissate cond2apacisse apacissase ; apacissavheapacisse apacissase ; apacissavhe
Passedpacissate cond3apacissatha ; apacissiṃsuapacissatha ; apacissiṃsu
TextExpectedActual
test_iti:
Passeddakkhiti futu1dakkhāmi ; dakkhāma ;  ; dakkhāmi ; dakkhāma ;  ;
Passeddakkhiti futu2dakkhisi ; dakkhitha ;  ; dakkhisi ; dakkhitha ;  ;
Passeddakkhiti futu3dakkhiti ; dakkhinti ;  ; dakkhiti ; dakkhinti ;  ;
TextExpectedActual
test_kahiti:
Passedkāhati futu1kāhāmi ; kāhāma ;  ; kāhāmi ; kāhāma ;  ;
Passedkāhati futu2kāhisi ;  ;  ; kāhisi ;  ;  ;
Passedkāhati futu3kāhiti ; kāhinti ;  ; kāhiti ; kāhinti ;  ;
TextExpectedActual
test_oti:
Passedtanoti pres 1tanomi ; tanoma ; tanve ; tanumhetanomi ; tanoma ; tanve ; tanumhe
Passedtanoti pres 2tanosi ; tanotha ; tanuse ; tanuvhetanosi ; tanotha ; tanuse ; tanuvhe
Passedtanoti pres 3tanoti ; tanonti ; tanute ; tanunte tanuretanoti ; tanonti ; tanute ; tanunte tanure
Passedtanoti impf 1 ;  ;  ;  ;  ;  ;
Passedtanoti impf 2 ;  ;  ;  ;  ;  ;
Passedtanoti impf 3 ;  ;  ;  ;  ;  ;
Passedtanoti impr 1tanomi ; tanoma ; tanve ; tanvāmasetanomi ; tanoma ; tanve ; tanvāmase
Passedtanoti impr 2tanohi ; tanotha ; tanussu ; tanuvhotanohi ; tanotha ; tanussu ; tanuvho
Passedtanoti impr 3tanotu ; tanontu ; tanutaṃ ; tanuntaṃtanotu ; tanontu ; tanutaṃ ; tanuntaṃ
Passedtanoti opt 1taneyyāmi taneyyaṃ ; taneyyāma ; taneyyaṃ ; taneyyāmhetaneyyāmi taneyyaṃ ; taneyyāma ; taneyyaṃ ; taneyyāmhe
Passedtanoti opt 2taneyyāsi ; taneyyātha ; tanetho ; taneyyavhotaneyyāsi ; taneyyātha ; tanetho ; taneyyavho
Passedtanoti opt 3taneyya ; taneyyuṃ ; tanetha ; taneraṃtaneyya ; taneyyuṃ ; tanetha ; taneraṃ
Passedtanoti part tanont ; tanont ;
Passedtanute pres 1tanve ; tanumhetanve ; tanumhe
Passedtanute pres 2tanuse ; tanuvhetanuse ; tanuvhe
Passedtanute pres 3tanute ; tanunte tanuretanute ; tanunte tanure
Passedtanute impf 1 ;  ;
Passedtanute impf 2 ;  ;
Passedtanute impf 3 ;  ;
Passedtanute impr 1tanve ; tanvāmasetanve ; tanvāmase
Passedtanute impr 2tanussu ; tanuvhotanussu ; tanuvho
Passedtanute impr 3tanutaṃ ; tanuntaṃtanutaṃ ; tanuntaṃ
Passedtanute opt 1taneyyāmi taneyyaṃ ; taneyyāma ; taneyyaṃ ; taneyyāmhetaneyyāmi taneyyaṃ ; taneyyāma ; taneyyaṃ ; taneyyāmhe
Passedtanute opt 2taneyyāsi ; taneyyātha ; tanetho ; taneyyavhotaneyyāsi ; taneyyātha ; tanetho ; taneyyavho
Passedtanute opt 3taneyya ; taneyyuṃ ; tanetha ; taneraṃtaneyya ; taneyyuṃ ; tanetha ; taneraṃ
Passedtanute part

local tests = require('Module:UnitTests')
local m_conj_verb = require('Module:pi-conj/verb')
local m_str_utils = require("Module:string utilities")
local to_script = require("Module:pi-Latn-translit").tr

local insert = table.insert
local match = m_str_utils.match
local u = m_str_utils.char

-- tests.sc="Lana"
tests.sc = "Latn"
tests.option = {impl="yes"}

local spaceJoin = function(vals)
	output = ""
	for i, v in ipairs(vals) do
		if output == "" then
			output = v
		else
			output = output.." "..v
		end
	end
	return output
end

local empty6 = {{}, {}, {}, {}, {}, {}}
local num = {[1] = 1, [3] = 2, [5] = 3}

local comp_lists = function(vref, vgot, label, tablet1, tablet2)
	local exp, got
	if tablet2 then
		exp =	spaceJoin(vref[tablet1] or {})..' ; '..
				spaceJoin(vref[tablet2] or {})
		got =	spaceJoin(vgot[tablet1] or {})..' ; '..
				spaceJoin(vgot[tablet2] or {})
	else
		exp =  spaceJoin(vref[tablet1] or {})
		got =  spaceJoin(vgot[tablet1] or {})
	end
	tests:equals(label, got, to_script(exp, tests.sc, tests.option))
end

local pass_through = function(x) return x end

local knockout = function(forms)
	retval = {}
	for _, v in pairs(forms) do
		if not match(v, "[โเໂເ][มวມວ]["..u(0x0e3a)..u(0x0eba)..']') then
			insert(retval, v)
		end
	end
	return retval
end

local compare = function(vref, vgot, label, tablet1, tablet2)
	local exp, got
	local r1 = vref[tablet1] or empty6
	local g1 = vgot[tablet1] or empty6
	local r2, g2
	if tablet2 then
		r2 = vref[tablet2] or empty6
		g2 = vgot[tablet2] or empty6
	end
	local f
	if (tests.sc == "Thai" or tests.sc == "Laoo") and
	tests.option.impl ~= "no" then
		f = knockout
	else
		f = pass_through
	end
	for i = 1, 5, 2 do
		if tablet2 then
			exp =  spaceJoin(r1[i])..' ; '..spaceJoin(r1[i+1])
		  ..' ; '..spaceJoin(r2[i])..' ; '..spaceJoin(r2[i+1])
			got =  spaceJoin(f(g1[i]))..' ; '..spaceJoin(f(g1[i+1]))
		  ..' ; '..spaceJoin(f(g2[i]))..' ; '..spaceJoin(f(g2[i+1]))
		 else
			exp =  spaceJoin(r1[i])..' ; '..spaceJoin(r1[i+1])
			got =  spaceJoin(f(g1[i]))..' ; '..spaceJoin(f(g1[i+1]))
		 end
		tests:equals(label..num[i], got, to_script(exp, tests.sc, tests.option))
	end
end

local pacati_ref = {
	presa = {
		{"pacāmi"}, {"pacāma"},		{"pacasi"}, {"pacatha"},
		{"pacati"}, {"pacanti"}
	},
	presm = {
		{"pace"}, {"pacāmhe"},		{"pacase"}, {"pacavhe"},
		{"pacate"}, {"pacante", "pacare"}
	},
	impfa = {
		{"apaca", "apacaṃ"}, {"apacamhā"},
		{"apaco"}, {"apacattha"},
		{"apaca", "apacā"}, {"apacu", "apacū"}
	},
	impfm = {
		{"apaciṃ"}, {"apacāmhase", "apacamhase"},
		{"apacase"}, {"apacavhaṃ"},
		{"apacattha"}, {"apacatthuṃ"}
	},
	impra = {
		{"pacāmi"}, {"pacāma"},		{"paca", "pacāhi"}, {"pacatha"},
		{"pacatu"}, {"pacantu"}
	},
	imprm = {
		{"pace"}, {"pacāmase"},		{"pacassu"}, {"pacavho"},
		{"pacataṃ"}, {"pacantaṃ"}
	},
	optaa = {
		{"paceyyāmi", "paceyyaṃ", "pace"},		{"paceyyāma"},
		{"paceyyāsi", "pace"},					{"paceyyātha"},
		{"paceyya", "pace"},					{"paceyyuṃ"}
	},
	optaa_irr = {
		{"paceyyāmi", "paceyyaṃ"},		{"paceyyāma"},
		{"paceyyāsi"},					{"paceyyātha"},
		{"paceyya"},					{"paceyyuṃ"}
	},
	optam = {
		{"paceyyaṃ"}, {"paceyyāmhe"},		{"pacetho"}, {"paceyyavho"},
		{"pacetha"}, {"paceraṃ"}
	},
	pap = {"pacant"},
	pmp = {"pacamāna"},
}

local corayati_ref = {
	presa = {
		{"corayāmi"}, {"corayāma"},		{"corayasi"}, {"corayatha"},
		{"corayati"}, {"corayanti"}
	},
	presm = {
		{"coraye"}, {"corayāmhe"},		{"corayase"}, {"corayavhe"},
		{"corayate"}, {"corayante", "corayare"}
	},
	impfa = {
		{"coraya", "corayaṃ"}, {"corayamhā"},
		{"corayo"}, {"corayattha"},
		{"coraya", "corayā"}, {"corayu", "corayū"}
	},
	impfm = {
		{"corayiṃ"}, {"corayāmhase", "corayamhase"},
		{"corayase"}, {"corayavhaṃ"},
		{"corayattha"}, {"corayatthuṃ"}
	},
	impra = {
		{"corayāmi"}, {"corayāma"},		{"corayāhi"}, {"corayatha"},
		{"corayatu"}, {"corayantu"}
	},
	imprm = {
		{"coraye"}, {"corayāmase"},		{"corayassu"}, {"corayavho"},
		{}, {"corayantaṃ"} -- 3s deleted pending review!
	},
	optaa = {
		{"corayeyyāmi", "corayeyyaṃ"},		{"corayeyyāma"}, --aye 1s & 2s needs
		{"corayeyyāsi"},					{"corayeyyātha"}, -- attestation.
		{"corayeyya", "coraye"},			{"corayeyyuṃ"}
	},
	optam = {
		{"corayeyyaṃ"}, {"corayeyyāmhe"},		{"corayetho"}, {"corayeyyavho"},
		{"corayetha"}, {"corayeraṃ"}
	},
	pap = {"corayant"},
	pmp = {"corayamāna"},
}
local coreti_ref = {
	presa = {
		{"coremi"}, {"corema"},		{"coresi"}, {"coretha"},
		{"coreti"}, {"corenti"}
	},
	impra = {
		{"coremi"}, {"corema"},		{"corehi"}, {"coretha"},
		{"coretu"}, {"corentu"}
	},
	optaa = {
		{"coreyyāmi", "coreyyaṃ"},		{"coreyyāma"}, --aye 1s & 2s needs
		{"coreyyāsi"},					{"coreyyātha"}, -- attestation.
		{"coreyya"},			{"coreyyuṃ"}
	},
	optam = {
		{"coreyyaṃ"}, {"coreyyāmhe"},		{"coretho"}, {"coreyyavho"},
		{"coretha"}, {"coreraṃ"}
	},
	pap = {"corent"},
}
local corete_ref = {
	presm = {
		{"coraye"}, {"corayāmhe"},		{"corayase"}, {"corayavhe"},
		{"corayate"}, {"corayante", "corayare"}
	},
	imprm = {
		{"coraye"}, {"corayāmase"},		{"corayassu"}, {"corayavho"},
		{}, {"corayantaṃ"} -- 3s deleted pending review!
	},
	optaa = coreti_ref.optaa,
	optam = coreti_ref.optam,
	pmp = {"corayamāna"},
}

local tanoti_ref = { -- Middle forms 
	presa = {
		{"tanomi"}, {"tanoma"},		{"tanosi"}, {"tanotha"},
		{"tanoti"}, {"tanonti"}
	},
	presm = {
		{"tanve"}, {"tanumhe"},		{"tanuse"}, {"tanuvhe"},
		{"tanute"}, {"tanunte", "tanure"}
	},
	impra = {
		{"tanomi"}, {"tanoma"},		{"tanohi"}, {"tanotha"},
		{"tanotu"}, {"tanontu"}
	},
	imprm = {
		{"tanve"}, {"tanvāmase"},		{"tanussu"}, {"tanuvho"},
		{"tanutaṃ"}, {"tanuntaṃ"}
	},
	optaa = {
		{"taneyyāmi", "taneyyaṃ"},		{"taneyyāma"},
		{"taneyyāsi"},					{"taneyyātha"},
		{"taneyya"},					{"taneyyuṃ"}
	},
	optam = {
		{"taneyyaṃ"}, {"taneyyāmhe"},		{"tanetho"}, {"taneyyavho"},
		{"tanetha"}, {"taneraṃ"}
	},
	pap = {"tanont"},
}

local dadati_ref = {
	presa = {
		{"dadāmi"}, {"dadāma"},		{"dadāsi"}, {"dadātha"},
		{"dadāti"}, {"dadanti"}
	},
	presm = {
		{"dade"}, {"dadāmhe"},		{"dadāse"}, {"dadavhe"},
		{"dadāte"}, {"dadante", "dadāre"}
	},
	impfa = {
		{"adada", "adadaṃ"}, {"adadamhā"},
		{"adado"}, {"adadattha"},
		{"adada", "adadā"}, {"adadu", "adadū"}
	},
	impfm_disabled = {
		{"adadiṃ"}, {"adadāmhase", "adadamhase"},
		{"adadase"}, {"adadavhaṃ"},
		{"adadattha"}, {"adadatthuṃ"}
	},
	impra = {
		{"dadāmi"}, {"dadāma"},		{"dadā", "dadāhi"}, {"dadātha"},
		{"dadātu"}, {"dadantu"}
	},
	optaa = {
		{"dadeyyāmi", "dadeyyaṃ"},		{"dadeyyāma"},  -- "dade" is exceptional.
		{"dadeyyāsi"},					{"dadeyyātha"}, -- "dade" is exceptional.
		{"dadeyya", "dade"},			{"dadeyyuṃ"}
	},
	optam = {
		{"dadeyyaṃ"}, {"dadeyyāmhe"},		{"dadetho"}, {"dadeyyavho"},
		{"dadetha"}, {"daderaṃ"}
	},
	pap = {"dadant"},
	pmp = {"dadamāna"},
}

local dajja_ref = {
	optaa = {
		{"dajjāmi"}, {"dajjāma"},		{"dajjāsi"}, {"dajjātha"},
		{"dajjā"}, {"dajjuṃ"}}, 
}

local pacissati_ref = {
	futua = {
		{"pacissāmi"}, {"pacissāma"},   {"pacissasi"}, {"pacissatha"},
		{"pacissati"}, {"pacissanti"},
		},
	futum = {
		{"pacissaṃ"}, {"pacissāmhe"},  {"pacissase"}, {"pacissavhe"},
		{"pacissate"}, {"pacissante"},
		},
	conda = {
			{"apacissaṃ"}, {}, {"apacissa", "apacissi"},	{"apacissatha"},
			{"apacissā", "apacissa"},	{"apacissaṃsu"},
		},
	condm = {
			{"apacissaṃ"},				{"apacissāmhase"},
			{"apacisse", "apacissase"},	{"apacissavhe"},
			{"apacissatha"},	        	{"apacissiṃsu"},
	},
	fap = {"pacissant"},
}

gamissati_ref = {
	conda = {	{"agamissaṃ"},  {},  {"agamissa", "agamissi"},	{"agamissatha"},
			{"agamissā", "agamissa"},  	{"agamissaṃsu"},
		},
	condm = {
			{"agamissaṃ"},	        {"agamissāmhase"},
			{"agamisse", "agamissase"},	{"agamissavhe"},
			{"agamissatha"},	            {"agamissiṃsu"},
		},
}

dakkhiti_ref = {
	futua = {{"dakkhāmi"}, {"dakkhāma"}, {"dakkhisi"}, {"dakkhitha"}, {"dakkhiti"}, {"dakkhinti"}}
}

heti_ref = {
	futua = {{"hemi"}, {"hema"}, {"hesi"}, {"hetha"}, {"heti"}, {"henti"}}
}

kahiti_ref = {
	futua = {{"kāhāmi"}, {"kāhāma"}, {"kāhisi"}, {}, {"kāhiti"}, {"kāhinti"}}
}

-- function tests:test_basic_tables()
function tests:test_ati()
	local impl = tests.option.impl or "yes"
	local pacati = to_script("pacati", tests.sc, tests.option)
	local pacati_got = m_conj_verb.special_forms(pacati,
		{augment="with_made", impf_voice="both", impl = impl})
	compare(pacati_ref, pacati_got, "pacati pres ", "presa", "presm")
	compare(pacati_ref, pacati_got, "pacati impf ", "impfa", "impfm")
	compare(pacati_ref, pacati_got, "pacati impr ", "impra", "imprm")
	compare(pacati_ref, pacati_got, "pacati opt ",  "optaa", "optam")
	comp_lists(pacati_ref,  pacati_got, "pacati part ", "pap", "pmp")
	local pacate = to_script("pacate", tests.sc, tests.option)
	local pacate_got = m_conj_verb.special_forms(pacate,
		{	augment="with_made", impf_voice="both", opta_voice = "both",
			impl = impl	})
	compare(pacati_ref, pacate_got, "pacate pres ", "presm")
	compare(pacati_ref, pacate_got, "pacate impf ", "impfm")
	compare(pacati_ref, pacate_got, "pacate impr ", "imprm")
	compare(pacati_ref, pacate_got, "pacate opt ", "optaa", "optam")
	comp_lists(pacati_ref,  pacate_got, "pacate part ", "pmp")
	local namati = to_script("namati", tests.sc, tests.option)
	local apaca  = to_script("apaca",  tests.sc, tests.option)
	local apaca_got = m_conj_verb.special_forms(namati,
		{	impf_voice="both", impf=apaca, impf2=apaca, augment="with_given",
			impl = impl	})
	compare(pacati_ref, apaca_got, "apaca impf ", "impfa", "impfm")
	local namate    = to_script("namate",    tests.sc, tests.option)
	local nama      = to_script("nama",      tests.sc, tests.option)
	local apacattha = to_script("apacattha", tests.sc, tests.option)
	local apacattha_got = m_conj_verb.special_forms(namati,
		{midl=namate, impf_voice="midl", impl = impl, 
		 impf=nama, impf_midl=apacattha, augment="with_given"})
	compare(pacati_ref, apacattha_got, "apacattha impf m", "impfm")
--	if nil then -- Unusability is a deliberate, documented feature, not a bug. 
--		local pace = to_script("pace", tests.sc, tests.option)
--		local pace_got = m_conj_verb.special_forms("namati", {
--			opta_mod="replace", opta=pace})
--		compare(pacati_ref, pace_got, "pace opt ", "optaa", "optam")
--	end
	local paceyya = to_script("paceyya", tests.sc, tests.option)
	local paceyya_got = m_conj_verb.special_forms(namati, {
		opta_mod="replace", opta=paceyya, impl = impl})
	local paceyya_ref = {	optaa = pacati_ref.optaa_irr,
							optam = pacati_ref.optam }
	compare(paceyya_ref, paceyya_got, "paceyya opt ", "optaa", "optam")
	local pacetha = to_script("pacetha", tests.sc, tests.option)
	local pacetha_got = m_conj_verb.special_forms(namati, {
		opta_midl=pacetha, impl = impl})
	if nil then -- This is useful as a selectional test.
		compare(pacati_ref, pacetha_got, "pacetha opt ", "optaa", "optam")
	end
	compare(pacati_ref, pacetha_got, "pacetha opt m", "optam")
end

-- Stems in -ayati have differences from -ati that aren't captured by -eti.
function tests:test_ayati()
	local impl = tests.option.impl or "yes"
	local corayati = to_script("corayati", tests.sc, tests.option)
	local corayati_got = m_conj_verb.special_forms(corayati,
		{impf_voice="both", augment="without", impl = impl})
	compare(corayati_ref, corayati_got, "corayati pres ", "presa", "presm")
	compare(corayati_ref, corayati_got, "corayati impf ", "impfa", "impfm")
	compare(corayati_ref, corayati_got, "corayati impr ", "impra", "imprm")
	compare(corayati_ref, corayati_got, "corayati opt ",  "optaa", "optam")
	comp_lists(corayati_ref,  corayati_got, "corayati part ", "pap", "pmp")
	corayate = to_script("corayate", tests.sc, tests.option)
	local corayate_got = m_conj_verb.special_forms(corayate,
		{impf_voice="both", augment="without", opta_voice = "both", impl = impl})
	compare(corayati_ref, corayate_got, "corayate pres ", "presm")
	compare(corayati_ref, corayate_got, "corayate impf ", "impfm")
	compare(corayati_ref, corayate_got, "corayate impr ", "imprm")
	compare(corayati_ref, corayate_got, "corayate opt ",  "optaa", "optam")
	comp_lists(corayati_ref,  corayate_got, "corayate part ", "pmp")
	namati = to_script("namati", tests.sc, tests.option)
	coraya = to_script("coraya", tests.sc, tests.option)
	local coraya_got = m_conj_verb.special_forms(namati,
		{impf_voice="both", impf=coraya, augment="with_given", impl = impl})
	compare(corayati_ref, coraya_got, "coraya impf ", "impfa", "impfm")
	nama       = to_script("nama",       tests.sc, tests.option)
	namate     = to_script("namate",     tests.sc, tests.option)
	corayattha = to_script("corayattha", tests.sc, tests.option)
	local corayattha_got = m_conj_verb.special_forms(namati,
		{midl=namate, impf_voice="midl",
		 impf=nama, impf_midl=corayattha, augment="with_given"})
	compare(corayati_ref, corayattha_got, "corayattha impf m", "impfm")
end

function tests:test_eti()
	local impl = tests.option.impl or "yes"
	local coreti = to_script("coreti", tests.sc, tests.option)
	local coreti_got = m_conj_verb.special_forms(coreti,
		{augment="without", impf_voice="both", impl = impl})
	compare(coreti_ref, coreti_got, "coreti pres ", "presa", "presm")
	compare(coreti_ref, coreti_got, "coreti impf ", "impfa", "impfm")
	compare(coreti_ref, coreti_got, "coreti impr ", "impra", "imprm")
	compare(coreti_ref, coreti_got, "coreti opt ",  "optaa", "optam")
	comp_lists(coreti_ref,  coreti_got, "coreti part ", "pap", "pmp")
	local corete = to_script("corete", tests.sc, tests.option)
	local corete_got = m_conj_verb.special_forms(corete,
		{	augment="without", impf_voice="both", opta_voice="both",
			impl=impl	})
	compare(corete_ref, corete_got, "corete pres ", "presm")
	compare(corete_ref, corete_got, "corete impf ", "impfm")
	compare(corete_ref, corete_got, "corete impr ", "imprm")
	compare(corete_ref, corete_got, "corete opt ",  "optaa", "optam")
	comp_lists(corete_ref,  corete_got, "corete part ", "pmp")
end

function tests:test_oti()
	local impl = tests.option.impl or "yes"
	local tanoti = to_script("tanoti", tests.sc, tests.option)
	local tanoti_got = m_conj_verb.special_forms(tanoti,
		{augment="without", impf_voice="both", impl=impl})
	compare(tanoti_ref, tanoti_got, "tanoti pres ", "presa", "presm")
	compare(tanoti_ref, tanoti_got, "tanoti impf ", "impfa", "impfm")
	compare(tanoti_ref, tanoti_got, "tanoti impr ", "impra", "imprm")
	compare(tanoti_ref, tanoti_got, "tanoti opt ",  "optaa", "optam")
	comp_lists(tanoti_ref, tanoti_got, "tanoti part ", "pap", "pmp")
	local tanute = to_script("tanute", tests.sc, tests.option)
	local tanute_got = m_conj_verb.special_forms(tanute,
		{	augment="without", impf_voice="both", opta_voice = "both",
			impl=impl	})
	compare(tanoti_ref,  tanute_got, "tanute pres ", "presm")
	compare(tanoti_ref,  tanute_got, "tanute impf ", "impfm")
	compare(tanoti_ref,  tanute_got, "tanute impr ", "imprm")
	compare(tanoti_ref, tanute_got, "tanute opt ",  "optaa", "optam")
	comp_lists(tanoti_ref, tanute_got, "tanute part ", "pmp")
end

function tests:test_aati()
	local impl = tests.option.impl or "yes"
	local dadati = to_script("dadāti", tests.sc, tests.option)
	local dadati_got = m_conj_verb.special_forms(dadati,
		{augment="with_made", impf_voice="both", impl=impl})
	compare(dadati_ref, dadati_got, "dadāti pres ", "presa", "presm")
	compare(dadati_ref, dadati_got, "dadāti impf ", "impfa", "impfm")
	compare(dadati_ref, dadati_got, "dadāti impr ", "impra", "imprm")
	compare(dadati_ref, dadati_got, "dadāti opt ",  "optaa", "optam")
	comp_lists(dadati_ref,  dadati_got, "dadāti part ", "pap", "pmp")
	local dadate = to_script("dadāte", tests.sc, tests.option)
	local dadate_got = m_conj_verb.special_forms(dadate,
		{	augment="without", impf_voice="both", opta_voice="both",
			impl = impl	})
	compare(dadati_ref, dadate_got, "dadāte pres ", "presm")
	compare(dadati_ref, dadate_got, "dadāte impf ", "impfm")
	compare(dadati_ref, dadate_got, "dadāte impr ", "imprm")
	compare(dadati_ref, dadate_got, "dadāte opt ",  "optaa", "optam")
	comp_lists(dadati_ref, dadate_got, "dadāte part ", "pmp")
	local dajja = to_script("dajjā", tests.sc, tests.option)
	local dajja_got = m_conj_verb.special_forms(dadati,
		{	voice="none", opta_voice="act", opta_mod="replace", opta=dajja,
			impl=impl})
	compare(dajja_ref, dajja_got, "dadāti alt opt a", "optaa")
end

function tests:test_issati()
	local impl = tests.option.impl or "yes"
	local pacissati = to_script("pacissati", tests.sc, tests.option)
	local pacissate = to_script("pacissate", tests.sc, tests.option)
	local pacissati_got = m_conj_verb.future_forms(pacissati,
		{voice = "none", futu=pacissati, futu_voice = "both", cond_voice = "both",
		impl = impl, cond_augment = "with_made"}, true)
	compare(pacissati_ref, pacissati_got, "pacissati fut", "futua", "futum")
	compare(pacissati_ref, pacissati_got, "pacissati cond", "conda", "condm")
--	comp_lists(dadati_ref, dadate_got, "pacissati part", "fap", "fmp")
	local pacissate_got = m_conj_verb.future_forms(pacissate,
		{voice = "none", futu=pacissate, cond_voice = "midl",
		impl = impl, cond_augment = "with_made"}, true)
	compare(pacissati_ref, pacissate_got, "pacissate fut", "futum")
	compare(pacissati_ref, pacissate_got, "pacissate cond", "condm")
end

function tests:test_issa()
	local impl = tests.option.impl or "yes"
	local agamissa    = to_script("agamissa", tests.sc, tests.option)
	local agamissaa   = to_script("agamissā", tests.sc, tests.option)
	local agamissatha = to_script("agamissatha", tests.sc, tests.option)
	local pacissati = to_script("pacissati", tests.sc, tests.option)
	local pacissate = to_script("pacissate", tests.sc, tests.option)
	local agamissa_got = m_conj_verb.future_forms(pacissati,
		{cond=agamissa, futu=pacissati, impl = impl, cond_augment="with_given"}, true)
	compare(gamissati_ref, agamissa_got, "agamissa cond", "conda", "condm")
	local agamissaa_got = m_conj_verb.future_forms(pacissati,
		{cond=agamissaa, futu=pacissati, impl = impl, cond_augment="with_given"}, true)
	compare(gamissati_ref, agamissaa_got, "agamissā cond", "conda", "condm")
	local agamissatha_got = m_conj_verb.future_forms(pacissate,
		{cond=agamissatha, futu=pacissate, impl = impl, cond_augment="with_given"}, true)
	compare(gamissati_ref, agamissatha_got, "agamissatha cond", "condm")
end

function tests:test_iti()
	local impl = tests.option.impl or "yes"
	local dakkhiti = to_script("dakkhiti", tests.sc, tests.option)
	local dakkhiti_got = m_conj_verb.future_forms(dakkhiti, {futu=dakkhiti, impl=impl}, true)
	compare(dakkhiti_ref, dakkhiti_got, "dakkhiti futu", "futua", "futum")
end

function tests:test_heti()
	local impl = tests.option.impl or "yes"
	local heti = to_script("heti", tests.sc, tests.option)
	local heti_got = m_conj_verb.future_forms(heti, {futu=heti, impl=impl}, true)
	compare(heti_ref, heti_got, "heti futu", "futua", "futum")
end

function tests:test_kahiti()
	local impl = tests.option.impl or "yes"
	local kahiti = to_script("kāhiti", tests.sc, tests.option)
	local kahiti_got = m_conj_verb.future_forms(kahiti, {futu=kahiti, impl=impl}, true)
	compare(kahiti_ref, kahiti_got, "kāhati futu", "futua", "futum")
end

return tests