1
0
forked from GitHub/gf-core

Add Params2 unit test, from problem uncovered in PhrasebookGer

This commit is contained in:
John J. Camilleri
2021-02-22 10:52:37 +01:00
parent b4a393ac09
commit 20290be616
3 changed files with 75 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
abstract Params2 = {
cat Quality ; MassKind ;
fun
Salt : MassKind;
Good : Quality;
SuchMassKind : Quality -> MassKind -> MassKind;
}

View File

@@ -0,0 +1,2 @@
Params2: SuchMassKind Good Salt
Params2Cnc: gutes Salz

View File

@@ -0,0 +1,66 @@
concrete Params2Cnc of Params2 = {
param ParamX_Number = ParamX_Sg | ParamX_Pl;
param Prelude_Bool = Prelude_False | Prelude_True;
param ResGer_Adjf = ResGer_Strong | ResGer_Weak;
param ResGer_Case =
ResGer_Nom | ResGer_Acc | ResGer_Dat | ResGer_Gen;
param ResGer_AForm =
ResGer_APred | ResGer_AMod ResGer_GenNum ResGer_Case;
param ResGer_GenNum = ResGer_GSg ResGer_Gender | ResGer_GPl;
param ResGer_Gender = ResGer_Masc | ResGer_Fem | ResGer_Neutr;
lincat
Quality = {s : ResGer_AForm => Str};
MassKind =
{s : ResGer_Adjf => ParamX_Number => ResGer_Case => Str;
g : ResGer_Gender; };
lin
SuchMassKind Quality_0 MassKind_1 =
{s =
table {_ => -- Strong/Weak
table {_ => -- Sg/Pl
table {_ => -- Nom/Acc/Dat/Gen
(((MassKind_1.s)!ResGer_Strong)!ParamX_Sg)!ResGer_Nom ++
(Quality_0.s)!(ResGer_AMod (ResGer_GSg (MassKind_1.g)) ResGer_Nom)}}};
g = MassKind_1.g};
Salt =
{s =
table {ResGer_Strong =>
table {ParamX_Sg =>
table {ResGer_Nom => "Salz"; ResGer_Acc => "Salz";
ResGer_Dat => "Salz"; ResGer_Gen => "Salzes"};
ParamX_Pl =>
table {ResGer_Nom => "Salze"; ResGer_Acc => "Salze";
ResGer_Dat => "Salzen"; ResGer_Gen => "Salze"}};
ResGer_Weak =>
table {ParamX_Sg =>
table {ResGer_Nom => "Salz"; ResGer_Acc => "Salz";
ResGer_Dat => "Salz"; ResGer_Gen => "Salzes"};
ParamX_Pl =>
table {ResGer_Nom => "Salze"; ResGer_Acc => "Salze";
ResGer_Dat => "Salzen"; ResGer_Gen => "Salze"}}};
g = ResGer_Neutr};
Good =
{s =
table {ResGer_APred => "gut";
ResGer_AMod (ResGer_GSg ResGer_Masc) ResGer_Nom => "guter";
ResGer_AMod (ResGer_GSg ResGer_Masc) ResGer_Acc => "guten";
ResGer_AMod (ResGer_GSg ResGer_Masc) ResGer_Dat => "gutem";
ResGer_AMod (ResGer_GSg ResGer_Masc) ResGer_Gen => "guten";
ResGer_AMod (ResGer_GSg ResGer_Fem) ResGer_Nom => "gute";
ResGer_AMod (ResGer_GSg ResGer_Fem) ResGer_Acc => "gute";
ResGer_AMod (ResGer_GSg ResGer_Fem) ResGer_Dat => "guter";
ResGer_AMod (ResGer_GSg ResGer_Fem) ResGer_Gen => "guter";
ResGer_AMod (ResGer_GSg ResGer_Neutr) ResGer_Nom => "gutes";
ResGer_AMod (ResGer_GSg ResGer_Neutr) ResGer_Acc => "gutes";
ResGer_AMod (ResGer_GSg ResGer_Neutr) ResGer_Dat => "gutem";
ResGer_AMod (ResGer_GSg ResGer_Neutr) ResGer_Gen => "guten";
ResGer_AMod ResGer_GPl ResGer_Nom => "gute";
ResGer_AMod ResGer_GPl ResGer_Acc => "gute";
ResGer_AMod ResGer_GPl ResGer_Dat => "guten";
ResGer_AMod ResGer_GPl ResGer_Gen => "guter"}};
}