From 20290be616879d8fe57251c58db8bd6937a71251 Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Mon, 22 Feb 2021 10:52:37 +0100 Subject: [PATCH] Add Params2 unit test, from problem uncovered in PhrasebookGer --- testsuite/lpgf/unittests/Params2.gf | 7 +++ testsuite/lpgf/unittests/Params2.treebank | 2 + testsuite/lpgf/unittests/Params2Cnc.gf | 66 +++++++++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 testsuite/lpgf/unittests/Params2.gf create mode 100644 testsuite/lpgf/unittests/Params2.treebank create mode 100644 testsuite/lpgf/unittests/Params2Cnc.gf diff --git a/testsuite/lpgf/unittests/Params2.gf b/testsuite/lpgf/unittests/Params2.gf new file mode 100644 index 000000000..f961f31b3 --- /dev/null +++ b/testsuite/lpgf/unittests/Params2.gf @@ -0,0 +1,7 @@ +abstract Params2 = { + cat Quality ; MassKind ; + fun + Salt : MassKind; + Good : Quality; + SuchMassKind : Quality -> MassKind -> MassKind; +} diff --git a/testsuite/lpgf/unittests/Params2.treebank b/testsuite/lpgf/unittests/Params2.treebank new file mode 100644 index 000000000..0d1130bfe --- /dev/null +++ b/testsuite/lpgf/unittests/Params2.treebank @@ -0,0 +1,2 @@ +Params2: SuchMassKind Good Salt +Params2Cnc: gutes Salz diff --git a/testsuite/lpgf/unittests/Params2Cnc.gf b/testsuite/lpgf/unittests/Params2Cnc.gf new file mode 100644 index 000000000..303430854 --- /dev/null +++ b/testsuite/lpgf/unittests/Params2Cnc.gf @@ -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"}}; +}