From 2adeae8eb1bc8437b392bed07f1858363f95ab8a Mon Sep 17 00:00:00 2001 From: Jed Barber Date: Sat, 12 Dec 2020 12:49:01 +1100 Subject: More bugfixes and Parser unit tests --- test/rat_tests-parsers.ads | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'test/rat_tests-parsers.ads') diff --git a/test/rat_tests-parsers.ads b/test/rat_tests-parsers.ads index a70f41e..2b71f86 100644 --- a/test/rat_tests-parsers.ads +++ b/test/rat_tests-parsers.ads @@ -19,9 +19,15 @@ private with package Rat_Tests.Parsers is + function Sequence_Check return Test_Result; + function Sequence_2_Check return Test_Result; + function Choice_Check return Test_Result; + function Choice_2_Check return Test_Result; function Count_Check return Test_Result; function Many_Nomin_Check return Test_Result; function Many_Min_Check return Test_Result; + function Followed_By_Check return Test_Result; + function Not_Followed_By_Check return Test_Result; function Many_Until_Nomin_Check return Test_Result; function Many_Until_Min_Check return Test_Result; @@ -39,9 +45,15 @@ package Rat_Tests.Parsers is function Not_Empty_Check return Test_Result; Combinator_Tests : Test_Array := - ((+"Count", Count_Check'Access), + ((+"Sequence", Sequence_Check'Access), + (+"Sequence_2", Sequence_2_Check'Access), + (+"Choice", Choice_Check'Access), + (+"Choice_2", Choice_2_Check'Access), + (+"Count", Count_Check'Access), (+"Many No Minimum", Many_Nomin_Check'Access), (+"Many With Minimum", Many_Min_Check'Access), + (+"Followed_By", Followed_By_Check'Access), + (+"Not_Followed_By", Not_Followed_By_Check'Access), (+"Many_Until No Minimum", Many_Until_Nomin_Check'Access), (+"Many_Until With Minimum", Many_Until_Min_Check'Access), (+"Satisfy", Satisfy_Check'Access), @@ -75,6 +87,22 @@ private + function Match_AB is new Pone.Parsers.Multimatch ("ab"); + function Match_CDE is new Pone.Parsers.Multimatch ("cde"); + function Match_FG is new Pone.Parsers.Multimatch ("fg"); + function Seq_ABCDEFG is new Pone.Parsers.Sequence + ((Match_AB'Access, Match_CDE'Access, Match_FG'Access)); + + function Match_C is new Pone.Parsers.Match ('c'); + function Many_C is new Pone.Parsers.Many (Match_C, 1); + function Match_CC is new Pone.Parsers.Multimatch ("cc"); + function Match_CCCDE is new Pone.Parsers.Multimatch ("cccde"); + function Choose_CCCDE is new Pone.Parsers.Choice + ((Many_C'Access, Match_CC'Access, Match_CCCDE'Access)); + + + + function Alphanum_Switch (Char : in Character) return Character; -- cgit