libsim  Versione 7.1.8
file_utilities_test.f90
1 ! Copyright (C) 2010 ARPA-SIM <urpsim@smr.arpa.emr.it>
2 ! authors:
3 ! Davide Cesari <dcesari@arpa.emr.it>
4 ! Paolo Patruno <ppatruno@arpa.emr.it>
5 
6 ! This program is free software; you can redistribute it and/or
7 ! modify it under the terms of the GNU General Public License as
8 ! published by the Free Software Foundation; either version 2 of
9 ! the License, or (at your option) any later version.
10 
11 ! This program is distributed in the hope that it will be useful,
12 ! but WITHOUT ANY WARRANTY; without even the implied warranty of
13 ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 ! GNU General Public License for more details.
15 
16 ! You should have received a copy of the GNU General Public License
17 ! along with this program. If not, see <http://www.gnu.org/licenses/>.
18 ! Programma di test per il module file_utilities
19 ! migliorare a piacimento
20 PROGRAM file_test
21 USE kinds
23 IMPLICIT NONE
24 
25 TYPE(csv_record) :: csv_writer, csv_reader
26 CHARACTER(len=80) :: charbuf, ccheck
27 INTEGER :: nfield, ier, icheck, clen
28 REAL :: rcheck
29 DOUBLE PRECISION :: dcheck
30 
31 
32 print*,'=== Testing file_utilities module ==='
33 
34 print*,'Checking csv_record writing'
35 CALL init(csv_writer)
36 CALL csv_record_addfield(csv_writer, 45)
37 CALL csv_record_addfield_miss(csv_writer, imiss)
38 CALL csv_record_addfield(csv_writer, 'Berlusconi mafioso')
39 CALL csv_record_addfield(csv_writer, ' a''nvedi "er pecora"')
40 CALL csv_record_addfield_miss(csv_writer, rmiss)
41 print*,'Checking csv_record_getrecord'
42 charbuf = csv_record_getrecord(csv_writer)
43 IF (charbuf /= '45,,Berlusconi mafioso," a''nvedi ""er pecora""",') THEN
44  print*,'charbuf:',trim(charbuf)
45  CALL exit(1)
46 ENDIF
47 CALL delete(csv_writer)
48 
49 print*,'Checking csv_record reading'
50 charbuf = '45, 897.4,903.1 ,,Berlusconi mafioso," a''nvedi ""er pecora""",'
51 CALL init(csv_reader, charbuf, nfield=nfield)
52 print*,'Checking nfield with a missing at the end'
53 IF (nfield /= 7) THEN
54  print*,'nfield:',nfield
55  CALL exit(1)
56 ENDIF
57 
58 print*,'Checking csv_record_getfield integer'
59 CALL csv_record_getfield(csv_reader, icheck, ier)
60 IF (ier /= 0) THEN
61  print*,'Error code:',ier
62  CALL exit(1)
63 ENDIF
64 IF (icheck /= 45) THEN
65  print*,'icheck:',icheck
66  CALL exit(1)
67 ENDIF
68 
69 print*,'Checking csv_record_getfield real'
70 CALL csv_record_getfield(csv_reader, rcheck, ier)
71 IF (ier /= 0) THEN
72  print*,'Error code:',ier
73  CALL exit(1)
74 ENDIF
75 IF (abs(rcheck-897.4) > .1) THEN
76  print*,'rcheck:',rcheck
77  CALL exit(1)
78 ENDIF
79 CALL csv_record_getfield(csv_reader, dcheck, ier)
80 IF (ier /= 0) THEN
81  print*,'Error code:',ier
82  CALL exit(1)
83 ENDIF
84 IF (abs(dcheck-903.1) > .1) THEN
85  print*,'dcheck:',dcheck
86  CALL exit(1)
87 ENDIF
88 
89 print*,'Checking csv_record_getfield missing integer'
90 CALL csv_record_getfield(csv_reader, icheck, ier)
91 IF (ier /= 0) THEN
92  print*,'Error code:',ier
93  CALL exit(1)
94 ENDIF
95 IF (c_e(icheck)) THEN
96  print*,'icheck:',icheck
97  CALL exit(1)
98 ENDIF
99 
100 print*,'Checking csv_record_getfield simple character'
101 CALL csv_record_getfield(csv_reader, ccheck, clen, ier)
102 IF (ier /= 0) THEN
103  print*,'Error code:',ier
104  CALL exit(1)
105 ENDIF
106 IF (ccheck(1:clen) /= 'Berlusconi mafioso') THEN
107  print*,'ccheck:',ccheck(1:clen)
108  CALL exit(1)
109 ENDIF
110 
111 print*,'Checking csv_record_getfield quoted character'
112 CALL csv_record_getfield(csv_reader, ccheck, clen, ier)
113 IF (ier /= 0) THEN
114  print*,'Error code:',ier
115  CALL exit(1)
116 ENDIF
117 IF (ccheck(1:clen) /= ' a''nvedi "er pecora"') THEN
118  print*,'ccheck:',ccheck(1:clen)
119  CALL exit(1)
120 ENDIF
121 
122 print*,'Checking csv_record_getfield empty character'
123 CALL csv_record_getfield(csv_reader, ccheck, clen, ier)
124 IF (ier /= 0) THEN
125  print*,'Error code:',ier
126  CALL exit(1)
127 ENDIF
128 IF (ccheck /= '') THEN
129  print*,'ccheck:',ccheck(1:clen)
130  CALL exit(1)
131 ENDIF
132 
133 CALL delete(csv_reader)
134 
135 charbuf(len_trim(charbuf)-1:) = ' '
136 CALL init(csv_reader, charbuf, nfield=nfield)
137 print*,'Checking nfield'
138 IF (nfield /= 6) THEN
139  print*,'nfield:',nfield
140  CALL exit(1)
141 ENDIF
142 
143 print*,'Checking csv_record_getfield with empty charbuf'
144 charbuf = ''
145 CALL init(csv_reader, charbuf, nfield=nfield)
146 print*,'Checking nfield'
147 IF (nfield /= 1) THEN
148  print*,'nfield:',nfield
149  CALL exit(1)
150 ENDIF
151 
152 CALL csv_record_getfield(csv_reader, ccheck, clen, ier)
153 IF (ier /= 0) THEN
154  print*,'Error code:',ier
155  CALL exit(1)
156 ENDIF
157 IF (ccheck /= '') THEN
158  print*,'ccheck:',ccheck(1:clen)
159  CALL exit(1)
160 ENDIF
161 
162 CALL delete(csv_reader)
163 
164 print*,'Checking csv_record_getfield with one empty, quoted record'
165 charbuf = '""'
166 CALL init(csv_reader, charbuf, nfield=nfield)
167 print*,'Checking nfield'
168 IF (nfield /= 1) THEN
169  print*,'nfield:',nfield
170  CALL exit(1)
171 ENDIF
172 
173 CALL csv_record_getfield(csv_reader, ccheck, clen, ier)
174 IF (ier /= 0) THEN
175  print*,'Error code:',ier
176  CALL exit(1)
177 ENDIF
178 IF (ccheck /= '') THEN
179  print*,'ccheck:',ccheck(1:clen)
180  CALL exit(1)
181 ENDIF
182 
183 CALL delete(csv_reader)
184 
185 END PROGRAM file_test
Methods for successively adding fields to a csv_record object.
Methods for successively adding fields to a csv_record object.
Methods for successively obtaining the fields of a csv_record object.
Destructor for the class csv_record.
Constructor for the class csv_record.
Utilities for managing files.
Definition of constants to be used for declaring variables of a desired type.
Definition: kinds.F90:251

Generated with Doxygen.