@@ -52,6 +52,7 @@ subroutine collect_ascii(testsuite)
52
52
new_unittest(" to_lower_long" , test_to_lower_long), &
53
53
new_unittest(" to_upper_short" , test_to_upper_short), &
54
54
new_unittest(" to_upper_long" , test_to_upper_long), &
55
+ new_unittest(" ascii_table" , test_ascii_table), &
55
56
new_unittest(" to_upper_string" , test_to_upper_string), &
56
57
new_unittest(" to_lower_string" , test_to_lower_string), &
57
58
new_unittest(" to_title_string" , test_to_title_string), &
@@ -725,9 +726,9 @@ subroutine test_to_upper_long(error)
725
726
! This test reproduces the true/false table found at
726
727
! https://en.cppreference.com/w/cpp/string/byte
727
728
!
728
- subroutine test_ascii_table
729
+ subroutine ascii_table (table )
730
+ logical , intent (out ) :: table(15 ,12 )
729
731
integer :: i, j
730
- logical :: table(15 ,12 )
731
732
732
733
! loop through functions
733
734
do i = 1 , 12
@@ -780,6 +781,34 @@ elemental logical function validate(ascii_code, func)
780
781
end select
781
782
end function validate
782
783
784
+ end subroutine ascii_table
785
+
786
+ subroutine test_ascii_table (error )
787
+ type (error_type), allocatable , intent (out ) :: error
788
+ logical :: arr(15 , 12 )
789
+ logical , parameter :: ascii_class_table(15 ,12 ) = transpose (reshape ([ &
790
+ ! iscntrl isprint isspace isblank isgraph ispunct isalnum isalpha isupper islower isdigit isxdigit
791
+ .true. , .false. , .false. , .false. , .false. , .false. , .false. , .false. , .false. , .false. , .false. , .false. , & ! 0–8
792
+ .true. , .false. , .true. , .true. , .false. , .false. , .false. , .false. , .false. , .false. , .false. , .false. , & ! 9
793
+ .true. , .false. , .true. , .false. , .false. , .false. , .false. , .false. , .false. , .false. , .false. , .false. , & ! 10–13
794
+ .true. , .false. , .false. , .false. , .false. , .false. , .false. , .false. , .false. , .false. , .false. , .false. , & ! 14–31
795
+ .false. , .true. , .true. , .true. , .false. , .false. , .false. , .false. , .false. , .false. , .false. , .false. , & ! 32 (space)
796
+ .false. , .true. , .false. , .false. , .true. , .true. , .false. , .false. , .false. , .false. , .false. , .false. , & ! 33–47
797
+ .false. , .true. , .false. , .false. , .true. , .false. , .true. , .false. , .false. , .false. , .true. , .true. , & ! 48–57
798
+ .false. , .true. , .false. , .false. , .true. , .true. , .false. , .false. , .false. , .false. , .false. , .false. , & ! 58–64
799
+ .false. , .true. , .false. , .false. , .true. , .false. , .true. , .true. , .true. , .false. , .false. , .true. , & ! 65–70
800
+ .false. , .true. , .false. , .false. , .true. , .false. , .true. , .true. , .true. , .false. , .false. , .false. , & ! 71–90
801
+ .false. , .true. , .false. , .false. , .true. , .true. , .false. , .false. , .false. , .false. , .false. , .false. , & ! 91–96
802
+ .false. , .true. , .false. , .false. , .true. , .false. , .true. , .true. , .false. , .true. , .false. , .true. , & ! 97–102
803
+ .false. , .true. , .false. , .false. , .true. , .false. , .true. , .true. , .false. , .true. , .false. , .false. , & ! 103–122
804
+ .false. , .true. , .false. , .false. , .true. , .true. , .false. , .false. , .false. , .false. , .false. , .false. , & ! 123–126
805
+ .true. , .false. , .false. , .false. , .false. , .false. , .false. , .false. , .false. , .false. , .false. , .false. & ! 127
806
+ ], shape= [12 ,15 ]))
807
+
808
+ call ascii_table(arr)
809
+ call check(error, all (arr .eqv. ascii_class_table), " ascii table was not accurately generated" )
810
+
811
+ if (allocated (error)) return
783
812
end subroutine test_ascii_table
784
813
785
814
subroutine test_to_lower_string (error )
0 commit comments