diff options
author | Jed Barber <jjbarber@y7mail.com> | 2019-01-08 10:47:05 +1100 |
---|---|---|
committer | Jed Barber <jjbarber@y7mail.com> | 2019-01-08 10:47:05 +1100 |
commit | 458d695b56779d707ae8689295f334b934d3e3f5 (patch) | |
tree | ef046073a1a1a15ecf096b5458dbf5dc9d5a94f0 /test/ratnest-tests.adb | |
parent | aeb7002796a51725e2478a751b21b4d4c3a56815 (diff) |
Tests for Packrat.Util set predicates
Diffstat (limited to 'test/ratnest-tests.adb')
-rw-r--r-- | test/ratnest-tests.adb | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/test/ratnest-tests.adb b/test/ratnest-tests.adb index 2479998..3309b2a 100644 --- a/test/ratnest-tests.adb +++ b/test/ratnest-tests.adb @@ -3,6 +3,7 @@ with Ada.Characters.Latin_1, + Ada.Strings.Maps, Packrat.Util; @@ -10,11 +11,126 @@ package body Ratnest.Tests is package Latin renames Ada.Characters.Latin_1; + package Strmaps renames Ada.Strings.Maps; package PU renames Packrat.Util; + + function In_Set_Check + return Test_Result + is + use type Strmaps.Character_Set; + Set_1 : Strmaps.Character_Set := Strmaps.To_Set ("abcxyz"); + Set_2 : Strmaps.Character_Set := Strmaps.To_Set ("!""#$"); + function Func_1 is new PU.In_Set (Set_1); + function Func_2 is new PU.In_Set (Set_2); + begin + -- Func_1 testing + for I in Integer range Character'Pos (Character'First) .. Character'Pos ('a') - 1 loop + if Func_1 (Character'Val (I)) then + return Failure; + end if; + end loop; + for C in Character range 'a' .. 'c' loop + if not Func_1 (C) then + return Failure; + end if; + end loop; + for I in Integer range Character'Pos ('c') + 1 .. Character'Pos ('x') - 1 loop + if Func_1 (Character'Val (I)) then + return Failure; + end if; + end loop; + for C in Character range 'x' .. 'z' loop + if not Func_1 (C) then + return Failure; + end if; + end loop; + for I in Integer range Character'Pos ('z') + 1 .. Character'Pos (Character'Last) loop + if Func_1 (Character'Val (I)) then + return Failure; + end if; + end loop; + -- Func_2 testing + for I in Integer range Character'Pos (Character'First) .. Character'Pos ('!') - 1 loop + if Func_2 (Character'Val (I)) then + return Failure; + end if; + end loop; + for C in Character range '!' .. '$' loop + if not Func_2 (C) then + return Failure; + end if; + end loop; + for I in Integer range Character'Pos ('$') + 1 .. Character'Pos (Character'Last) loop + if Func_2 (Character'Val (I)) then + return Failure; + end if; + end loop; + return Success; + end In_Set_Check; + + + function Not_In_Set_Check + return Test_Result + is + use type Strmaps.Character_Set; + Set_1 : Strmaps.Character_Set := Strmaps.To_Set ("abcxyz"); + Set_2 : Strmaps.Character_Set := Strmaps.To_Set ("!""#$"); + function Func_1 is new PU.Not_In_Set (Set_1); + function Func_2 is new PU.Not_In_Set (Set_2); + begin + -- Func_1 testing + for I in Integer range Character'Pos (Character'First) .. Character'Pos ('a') - 1 loop + if not Func_1 (Character'Val (I)) then + return Failure; + end if; + end loop; + for C in Character range 'a' .. 'c' loop + if Func_1 (C) then + return Failure; + end if; + end loop; + for I in Integer range Character'Pos ('c') + 1 .. Character'Pos ('x') - 1 loop + if not Func_1 (Character'Val (I)) then + return Failure; + end if; + end loop; + for C in Character range 'x' .. 'z' loop + if Func_1 (C) then + return Failure; + end if; + end loop; + for I in Integer range Character'Pos ('z') + 1 .. Character'Pos (Character'Last) loop + if not Func_1 (Character'Val (I)) then + return Failure; + end if; + end loop; + -- Func_2 testing + for I in Integer range Character'Pos (Character'First) .. Character'Pos ('!') - 1 loop + if not Func_2 (Character'Val (I)) then + return Failure; + end if; + end loop; + for C in Character range '!' .. '$' loop + if Func_2 (C) then + return Failure; + end if; + end loop; + for I in Integer range Character'Pos ('$') + 1 .. Character'Pos (Character'Last) loop + if not Func_2 (Character'Val (I)) then + return Failure; + end if; + end loop; + return Success; + end Not_In_Set_Check; + + + + + function Is_Digit_Check return Test_Result is begin |