25CHARACTER(len=64) :: charbuf
27INTEGER(kind=int_b) :: bcheck
29DOUBLE PRECISION :: dcheck
30INTEGER,
POINTER :: ws(:), we(:)
31TYPE(line_split) :: longline
33print*,
'=== Testing char_utilities module ==='
35print*,
'Checking int_to_char'
37READ(charbuf,
'(I10)') icheck
38IF (icheck /= huge(1))
CALL exit(1)
40READ(charbuf,
'(I10)') icheck
41IF (icheck /= -1000000)
CALL exit(1)
43print*,
'Checking byte_to_char'
45READ(charbuf,
'(I4)') bcheck
46IF (bcheck /= 127_int_b)
CALL exit(1)
48READ(charbuf,
'(I4)') bcheck
49IF (bcheck /= -127_int_b)
CALL exit(1)
51print*,
'Checking real_to_char'
53READ(charbuf,
'(F15.0)') rcheck
54IF (abs((rcheck-1.0e+20)/1.0e+20) > 1.0e-30 )
CALL exit(1)
56READ(charbuf,
'(F15.0)') rcheck
57IF (abs((rcheck+1.0e-20)/1.0e+20) > 1.0e-30 )
CALL exit(1)
59print*,
'Checking double_to_char'
61READ(charbuf,
'(D24.0)') dcheck
62IF (abs((dcheck-1.0d+120)/1.0d+120) > 1.0d-200 )
CALL exit(1)
64READ(charbuf,
'(D24.0)') dcheck
65IF (abs((dcheck+1.0d-120)/1.0d+120) > 1.0d-200 )
CALL exit(1)
67print*,
'Checking l_nblnk'
68IF (l_nblnk(
'1234') /= 4 .OR. l_nblnk(
'12345 ') /= 5)
CALL exit(1)
69print*,
'Checking l_nblnk partly degenerated'
70IF (l_nblnk(
' ') /= 0)
CALL exit(1)
71print*,
'Checking l_nblnk fully degenerated'
72IF (l_nblnk(
'') /= 0)
CALL exit(1)
73print*,
'Checking f_nblnk'
74IF (f_nblnk(
'1234',
' ') /= 1 .OR. f_nblnk(
' 12345',
' ') /= 2)
CALL exit(1)
79print*,
'Checking f_nblnk partly degenerated'
80IF (f_nblnk(
' ') /= 5)
CALL exit(1)
81print*,
'Checking f_nblnk fully degenerated'
82IF (f_nblnk(
'') /= 1)
CALL exit(1)
92print*,
'Checking align_center even'
93IF (align_center(
' ciao') /=
' ciao ' .OR. align_center(
'ciao ') /=
' ciao ')
CALL exit(1)
94print*,
'Checking align_center odd'
95IF (align_center(
' ciao ') /=
' ciao ' .AND. align_center(
' ciao ') /=
' ciao ')
CALL exit(1)
96print*,
'Checking align_center degenerated'
97IF (align_center(
'') /=
'' .OR. align_center(
' ') /=
' ')
CALL exit(1)
99print*,
'Checking word_split - 3 words'
100IF (word_split(
' prima secunda tertia ') /= 3 .OR. &
101 word_split(
'prima secunda tertia ') /= 3 .OR. &
102 word_split(
' prima secunda tertia') /= 3 .OR. &
103 word_split(
'prima secunda tertia') /= 3)
CALL exit(1)
104print*,
'Checking word_split degenerated - 1 word'
105IF (word_split(
'prima') /= 1 .OR. word_split(
' prima') /= 1 &
106 .OR. word_split(
'prima ') /= 1)
CALL exit(1)
107print*,
'Checking word_split degenerated - 0 words'
108IF (word_split(
'') /= 0 .OR. word_split(
' ') /= 0)
CALL exit(1)
110print*,
'Checking word_split with indices - 3 words'
111IF (word_split(
' prima secunda tertia ', ws, we) /= 3)
CALL exit(1)
112print*,
'Checking word_split with indices - 3 words - checking indices'
113IF (any(ws(:) /= (/3,9,18/)) .OR. any(we(:) /= (/7,15,23/)))
CALL exit(1)
116print*,
'Checking line_split'
117longline=line_split_new(
'che bella cosa ''na jurna` de sole, l''aria serena dopo la tempesta', 20)
118IF (line_split_get_nlines(longline) /= 4 .OR. &
119 line_split_get_line(longline, 1) /=
'che bella cosa ''na' .OR. &
120 line_split_get_line(longline, 2) /=
'jurna` de sole,' .OR. &
121 line_split_get_line(longline, 3) /=
'l''aria serena dopo' .OR. &
122 line_split_get_line(longline, 4) /=
'la tempesta')
CALL exit(1)
125print*,
'checking wash_char'
126IF (trim(wash_char(
'abcde12345')) /=
'abcde' .OR. &
127 trim(wash_char(
'abcde 12345',badchar=
'a')) /=
'bcde 12345' .OR. &
128 trim(wash_char(
'abcde12345',goodchar=
'a')) /=
'a')
CALL exit(1)
Destructor for the line_split class.
Set of functions that return a CHARACTER representation of the input variable.
Utilities for CHARACTER variables.
Definition of constants to be used for declaring variables of a desired type.