PageRenderTime 45ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/other/netcdf_write_matrix/src/nf_test/nf_test.F

http://github.com/jbeezley/wrf-fire
FORTRAN Legacy | 482 lines | 269 code | 21 blank | 192 comment | 4 complexity | 87f98f668e5001425ea0e9bc6bd1ccd1 MD5 | raw file
Possible License(s): AGPL-1.0
  1. #if 0
  2. /*********************************************************************
  3. * Copyright 1996, UCAR/Unidata
  4. * See netcdf/COPYRIGHT file for copying and redistribution conditions.
  5. * $Id: nf_test.F,v 1.21 2006/01/25 23:10:50 ed Exp $
  6. *********************************************************************/
  7. /*
  8. * Test driver for netCDF-3 interface. This program performs tests against
  9. * the netCDF-3 specification for all user-level functions in an
  10. * implementation of the netCDF library.
  11. *
  12. * Unless invoked with "-r" (readonly) option, must be invoked from a
  13. * directory in which the invoker has write permission.
  14. *
  15. * Files:
  16. * The read-only tests read files:
  17. * test.nc (see below)
  18. * tests.inc (used merely as an example of a non-netCDF file)
  19. *
  20. * The write tests
  21. * read test.nc (see below)
  22. * write scratch.nc (deleted after each test)
  23. *
  24. * The file test.nc is created by running nc_test with the -c (create) option.
  25. */
  26. #endif
  27. C subroutine usage()
  28. C implicit none
  29. C #include "tests.inc"
  30. C call error('usage: nf_test [-hrv] [-n <MAX_NMPT>]')
  31. C call error(' nf_test [-c]')
  32. C call error(' [-h] Print help' )
  33. C call error(' [-v] Verbose mode' )
  34. C call error(
  35. C + ' [-n <max>] max. number of messages per test (Default: 8)')
  36. C end
  37. subroutine test(name, func)
  38. implicit none
  39. character*(*) name
  40. external func
  41. #include "tests.inc"
  42. write(*, 1) name
  43. 1 format('*** Testing ', a, ' ... ')
  44. nfails = 0
  45. call func()
  46. nfailsTotal = nfailsTotal + nfails
  47. if (verbose)
  48. + print *, ' '
  49. if ( nfails .ne. 0) then
  50. print *, ' '
  51. print *, ' ### ', nfails, ' FAILURES TESTING ', name,
  52. + '! ###'
  53. end if
  54. end
  55. #if _CRAYIEEE
  56. ! which machines need this?
  57. subroutine getarg(iarg, carg)
  58. implicit none
  59. integer iarg
  60. character*(*) carg
  61. integer ilen
  62. integer ierror
  63. call PXFGETARG(iarg, carg, ilen, ierror)
  64. end
  65. #endif
  66. program nf_test
  67. #if defined(VISUAL_CPLUSPLUS)
  68. ! DIGITAL Visual Fortran needs DFLIB for getarg
  69. USE DFLIB
  70. ! DIGITAL Visual Fortran needs DFPORT for iargc
  71. USE DFPORT
  72. implicit none
  73. #elif defined(NAGf90Fortran)
  74. USE F90_UNIX_ENV, only : iargc, getarg
  75. implicit none
  76. #else
  77. implicit none
  78. integer iargc
  79. #endif
  80. #include "tests.inc"
  81. integer argc
  82. character*80 arg
  83. integer iarg
  84. integer iopt
  85. character*1 opt
  86. integer lastopt
  87. logical skiparg
  88. integer status
  89. external test_nf_strerror
  90. external test_nf_open
  91. external test_nf_close
  92. external test_nf_inq
  93. external test_nf_inq_dimid
  94. external test_nf_inq_dim
  95. external test_nf_inq_dimlen
  96. external test_nf_inq_dimname
  97. external test_nf_inq_varid
  98. external test_nf_inq_var
  99. external test_nf_inq_natts
  100. external test_nf_inq_ndims
  101. external test_nf_inq_nvars
  102. external test_nf_inq_unlimdim
  103. external test_nf_inq_format
  104. external test_nf_inq_vardimid
  105. external test_nf_inq_varname
  106. external test_nf_inq_varnatts
  107. external test_nf_inq_varndims
  108. external test_nf_inq_vartype
  109. external test_nf_get_var1_text
  110. #if defined(NF_INT1_T)
  111. external test_nf_get_var1_int1
  112. #endif
  113. #if defined(NF_INT2_T)
  114. external test_nf_get_var1_int2
  115. #endif
  116. external test_nf_get_var1_int
  117. external test_nf_get_var1_real
  118. external test_nf_get_var1_double
  119. external test_nf_get_var_text
  120. #if defined(NF_INT1_T)
  121. external test_nf_get_var_int1
  122. #endif
  123. #if defined(NF_INT2_T)
  124. external test_nf_get_var_int2
  125. #endif
  126. external test_nf_get_var_int
  127. external test_nf_get_var_real
  128. external test_nf_get_var_double
  129. external test_nf_get_vara_text
  130. #if defined(NF_INT1_T)
  131. external test_nf_get_vara_int1
  132. #endif
  133. #if defined(NF_INT2_T)
  134. external test_nf_get_vara_int2
  135. #endif
  136. external test_nf_get_vara_int
  137. external test_nf_get_vara_real
  138. external test_nf_get_vara_double
  139. external test_nf_get_vars_text
  140. #if defined(NF_INT1_T)
  141. external test_nf_get_vars_int1
  142. #endif
  143. #if defined(NF_INT2_T)
  144. external test_nf_get_vars_int2
  145. #endif
  146. external test_nf_get_vars_int
  147. external test_nf_get_vars_real
  148. external test_nf_get_vars_double
  149. external test_nf_get_varm_text
  150. #if defined(NF_INT1_T)
  151. external test_nf_get_varm_int1
  152. #endif
  153. #if defined(NF_INT2_T)
  154. external test_nf_get_varm_int2
  155. #endif
  156. external test_nf_get_varm_int
  157. external test_nf_get_varm_real
  158. external test_nf_get_varm_double
  159. external test_nf_get_att_text
  160. #if defined(NF_INT1_T)
  161. external test_nf_get_att_int1
  162. #endif
  163. #if defined(NF_INT2_T)
  164. external test_nf_get_att_int2
  165. #endif
  166. external test_nf_get_att_int
  167. external test_nf_get_att_real
  168. external test_nf_get_att_double
  169. external test_nf_inq_att
  170. external test_nf_inq_attname
  171. external test_nf_inq_attid
  172. external test_nf_inq_attlen
  173. external test_nf_inq_atttype
  174. external test_nf_create
  175. external test_nf_redef
  176. external test_nf_enddef
  177. external test_nf_sync
  178. external test_nf_abort
  179. external test_nf_def_dim
  180. external test_nf_rename_dim
  181. external test_nf_def_var
  182. external test_nf_put_var1_text
  183. #if defined(NF_INT1_T)
  184. external test_nf_put_var1_int1
  185. #endif
  186. #if defined(NF_INT2_T)
  187. external test_nf_put_var1_int2
  188. #endif
  189. external test_nf_put_var1_int
  190. external test_nf_put_var1_real
  191. external test_nf_put_var1_double
  192. external test_nf_put_var_text
  193. #if defined(NF_INT1_T)
  194. external test_nf_put_var_int1
  195. #endif
  196. #if defined(NF_INT2_T)
  197. external test_nf_put_var_int2
  198. #endif
  199. external test_nf_put_var_int
  200. external test_nf_put_var_real
  201. external test_nf_put_var_double
  202. external test_nf_put_vara_text
  203. #if defined(NF_INT1_T)
  204. external test_nf_put_vara_int1
  205. #endif
  206. #if defined(NF_INT2_T)
  207. external test_nf_put_vara_int2
  208. #endif
  209. external test_nf_put_vara_int
  210. external test_nf_put_vara_real
  211. external test_nf_put_vara_double
  212. external test_nf_put_vars_text
  213. #if defined(NF_INT1_T)
  214. external test_nf_put_vars_int1
  215. #endif
  216. #if defined(NF_INT2_T)
  217. external test_nf_put_vars_int2
  218. #endif
  219. external test_nf_put_vars_int
  220. external test_nf_put_vars_real
  221. external test_nf_put_vars_double
  222. external test_nf_put_varm_text
  223. #if defined(NF_INT1_T)
  224. external test_nf_put_varm_int1
  225. #endif
  226. #if defined(NF_INT2_T)
  227. external test_nf_put_varm_int2
  228. #endif
  229. external test_nf_put_varm_int
  230. external test_nf_put_varm_real
  231. external test_nf_put_varm_double
  232. external test_nf_rename_var
  233. external test_nf_put_att_text
  234. #if defined(NF_INT1_T)
  235. external test_nf_put_att_int1
  236. #endif
  237. #if defined(NF_INT2_T)
  238. external test_nf_put_att_int2
  239. #endif
  240. external test_nf_put_att_int
  241. external test_nf_put_att_real
  242. external test_nf_put_att_double
  243. external test_nf_copy_att
  244. external test_nf_rename_att
  245. external test_nf_del_att
  246. external test_nf_set_fill
  247. external test_nf_set_default_format
  248. external ignorefpe
  249. call ignorefpe(1)
  250. testfile = 'test.nc'
  251. scratch = 'scratch.nc'
  252. nfailsTotal = 0
  253. progname = 'nf_test'
  254. C call getarg(0, progname)
  255. verbose = .false.
  256. max_nmpt = 8
  257. skiparg = .false.
  258. C argc = iargc()
  259. C do 1, iarg = 1, argc
  260. C if (skiparg) then
  261. C skiparg = .false.
  262. C else
  263. C call getarg(iarg, arg)
  264. C if (arg(1:1) .eq. '-') then
  265. C lastopt = index(arg, ' ') - 1
  266. C do 2, iopt = 2, lastopt
  267. C opt = arg(iopt:iopt)
  268. C if (opt .eq. 'v') then
  269. C verbose = .true.
  270. C else if (opt .eq. 'n') then
  271. C call getarg(iarg+1, arg)
  272. C ! NOTE: The UNICOS 8 fort77(1) compiler does
  273. C ! not support list-directed I/O from an internal
  274. C ! file -- so we use a format specification.
  275. C read (arg, '(i6)') max_nmpt
  276. C skiparg = .true.
  277. C go to 1
  278. C else
  279. C call usage
  280. C call udexit(1)
  281. C end if
  282. C 2 continue
  283. C else
  284. C call usage
  285. C call udexit(1)
  286. C end if
  287. C end if
  288. C 1 continue
  289. C /* Initialize global variables defining test file */
  290. call init_gvars
  291. call write_file(testfile)
  292. if (nfailsTotal .gt. 0) call udexit(1)
  293. C /* delete any existing scratch netCDF file */
  294. status = nf_delete(scratch)
  295. C /* Test read-only functions, using pregenerated test-file */
  296. call test('nf_strerror', test_nf_strerror)
  297. call test('nf_open', test_nf_open)
  298. call test('nf_close', test_nf_close)
  299. call test('nf_inq', test_nf_inq)
  300. call test('nf_inq_dimid', test_nf_inq_dimid)
  301. call test('nf_inq_dim', test_nf_inq_dim)
  302. call test('nf_inq_dimlen', test_nf_inq_dimlen)
  303. call test('nf_inq_dimname', test_nf_inq_dimname)
  304. call test('nf_inq_varid', test_nf_inq_varid)
  305. call test('nf_inq_var', test_nf_inq_var)
  306. call test('nf_inq_natts', test_nf_inq_natts)
  307. call test('nf_inq_ndims', test_nf_inq_ndims)
  308. call test('nf_inq_nvars', test_nf_inq_nvars)
  309. call test('nf_inq_unlimdim', test_nf_inq_unlimdim)
  310. call test('nf_inq_format', test_nf_inq_format)
  311. call test('nf_inq_vardimid', test_nf_inq_vardimid)
  312. call test('nf_inq_varname', test_nf_inq_varname)
  313. call test('nf_inq_varnatts', test_nf_inq_varnatts)
  314. call test('nf_inq_varndims', test_nf_inq_varndims)
  315. call test('nf_inq_vartype', test_nf_inq_vartype)
  316. call test('nf_get_var1_text', test_nf_get_var1_text)
  317. #if defined(NF_INT1_T)
  318. call test('nf_get_var1_int1', test_nf_get_var1_int1)
  319. #endif
  320. #if defined(NF_INT2_T)
  321. call test('nf_get_var1_int2', test_nf_get_var1_int2)
  322. #endif
  323. call test('nf_get_var1_int', test_nf_get_var1_int)
  324. call test('nf_get_var1_real', test_nf_get_var1_real)
  325. call test('nf_get_var1_double', test_nf_get_var1_double)
  326. call test('nf_get_var_text', test_nf_get_var_text)
  327. #if defined(NF_INT1_T)
  328. call test('nf_get_var_int1', test_nf_get_var_int1)
  329. #endif
  330. #if defined(NF_INT2_T)
  331. call test('nf_get_var_int2', test_nf_get_var_int2)
  332. #endif
  333. call test('nf_get_var_int', test_nf_get_var_int)
  334. call test('nf_get_var_real', test_nf_get_var_real)
  335. call test('nf_get_var_double', test_nf_get_var_double)
  336. call test('nf_get_vara_text', test_nf_get_vara_text)
  337. #if defined(NF_INT1_T)
  338. call test('nf_get_vara_int1', test_nf_get_vara_int1)
  339. #endif
  340. #if defined(NF_INT2_T)
  341. call test('nf_get_vara_int2', test_nf_get_vara_int2)
  342. #endif
  343. call test('nf_get_vara_int', test_nf_get_vara_int)
  344. call test('nf_get_vara_real', test_nf_get_vara_real)
  345. call test('nf_get_vara_double', test_nf_get_vara_double)
  346. call test('nf_get_vars_text', test_nf_get_vars_text)
  347. #if defined(NF_INT1_T)
  348. call test('nf_get_vars_int1', test_nf_get_vars_int1)
  349. #endif
  350. #if defined(NF_INT2_T)
  351. call test('nf_get_vars_int2', test_nf_get_vars_int2)
  352. #endif
  353. call test('nf_get_vars_int', test_nf_get_vars_int)
  354. call test('nf_get_vars_real', test_nf_get_vars_real)
  355. call test('nf_get_vars_double', test_nf_get_vars_double)
  356. call test('nf_get_varm_text', test_nf_get_varm_text)
  357. #if defined(NF_INT1_T)
  358. call test('nf_get_varm_int1', test_nf_get_varm_int1)
  359. #endif
  360. #if defined(NF_INT2_T)
  361. call test('nf_get_varm_int2', test_nf_get_varm_int2)
  362. #endif
  363. call test('nf_get_varm_int', test_nf_get_varm_int)
  364. call test('nf_get_varm_real', test_nf_get_varm_real)
  365. call test('nf_get_varm_double', test_nf_get_varm_double)
  366. call test('nf_get_att_text', test_nf_get_att_text)
  367. #if defined(NF_INT1_T)
  368. call test('nf_get_att_int1', test_nf_get_att_int1)
  369. #endif
  370. #if defined(NF_INT2_T)
  371. call test('nf_get_att_int2', test_nf_get_att_int2)
  372. #endif
  373. call test('nf_get_att_int', test_nf_get_att_int)
  374. call test('nf_get_att_real', test_nf_get_att_real)
  375. call test('nf_get_att_double', test_nf_get_att_double)
  376. call test('nf_inq_att', test_nf_inq_att)
  377. call test('nf_inq_attname', test_nf_inq_attname)
  378. call test('nf_inq_attid', test_nf_inq_attid)
  379. call test('nf_inq_attlen', test_nf_inq_attlen)
  380. call test('nf_inq_atttype', test_nf_inq_atttype)
  381. C /* Test write functions */
  382. call test('nf_create', test_nf_create)
  383. call test('nf_redef', test_nf_redef)
  384. call test('nf_enddef', test_nf_enddef)
  385. call test('nf_sync', test_nf_sync)
  386. call test('nf_abort', test_nf_abort)
  387. call test('nf_def_dim', test_nf_def_dim)
  388. call test('nf_rename_dim', test_nf_rename_dim)
  389. call test('nf_def_var', test_nf_def_var)
  390. call test('nf_put_var1_text', test_nf_put_var1_text)
  391. #if defined(NF_INT1_T)
  392. call test('nf_put_var1_int1', test_nf_put_var1_int1)
  393. #endif
  394. #if defined(NF_INT2_T)
  395. call test('nf_put_var1_int2', test_nf_put_var1_int2)
  396. #endif
  397. call test('nf_put_var1_int', test_nf_put_var1_int)
  398. call test('nf_put_var1_real', test_nf_put_var1_real)
  399. call test('nf_put_var1_double', test_nf_put_var1_double)
  400. call test('nf_put_var_text', test_nf_put_var_text)
  401. #if defined(NF_INT1_T)
  402. call test('nf_put_var_int1', test_nf_put_var_int1)
  403. #endif
  404. #if defined(NF_INT2_T)
  405. call test('nf_put_var_int2', test_nf_put_var_int2)
  406. #endif
  407. call test('nf_put_var_int', test_nf_put_var_int)
  408. call test('nf_put_var_real', test_nf_put_var_real)
  409. call test('nf_put_var_double', test_nf_put_var_double)
  410. call test('nf_put_vara_text', test_nf_put_vara_text)
  411. #if defined(NF_INT1_T)
  412. call test('nf_put_vara_int1', test_nf_put_vara_int1)
  413. #endif
  414. #if defined(NF_INT2_T)
  415. call test('nf_put_vara_int2', test_nf_put_vara_int2)
  416. #endif
  417. call test('nf_put_vara_int', test_nf_put_vara_int)
  418. call test('nf_put_vara_real', test_nf_put_vara_real)
  419. call test('nf_put_vara_double', test_nf_put_vara_double)
  420. call test('nf_put_vars_text', test_nf_put_vars_text)
  421. #if defined(NF_INT1_T)
  422. call test('nf_put_vars_int1', test_nf_put_vars_int1)
  423. #endif
  424. #if defined(NF_INT2_T)
  425. call test('nf_put_vars_int2', test_nf_put_vars_int2)
  426. #endif
  427. call test('nf_put_vars_int', test_nf_put_vars_int)
  428. call test('nf_put_vars_real', test_nf_put_vars_real)
  429. call test('nf_put_vars_double', test_nf_put_vars_double)
  430. call test('nf_put_varm_text', test_nf_put_varm_text)
  431. #if defined(NF_INT1_T)
  432. call test('nf_put_varm_int1', test_nf_put_varm_int1)
  433. #endif
  434. #if defined(NF_INT2_T)
  435. call test('nf_put_varm_int2', test_nf_put_varm_int2)
  436. #endif
  437. call test('nf_put_varm_int', test_nf_put_varm_int)
  438. call test('nf_put_varm_real', test_nf_put_varm_real)
  439. call test('nf_put_varm_double', test_nf_put_varm_double)
  440. call test('nf_rename_var', test_nf_rename_var)
  441. call test('nf_put_att_text', test_nf_put_att_text)
  442. #if defined(NF_INT1_T)
  443. call test('nf_put_att_int1', test_nf_put_att_int1)
  444. #endif
  445. #if defined(NF_INT2_T)
  446. call test('nf_put_att_int2', test_nf_put_att_int2)
  447. #endif
  448. call test('nf_put_att_int', test_nf_put_att_int)
  449. call test('nf_put_att_real', test_nf_put_att_real)
  450. call test('nf_put_att_double', test_nf_put_att_double)
  451. call test('nf_copy_att', test_nf_copy_att)
  452. call test('nf_rename_att', test_nf_rename_att)
  453. call test('nf_del_att', test_nf_del_att)
  454. call test('nf_set_fill', test_nf_set_fill)
  455. call test('nf_set_default_format',
  456. + test_nf_set_default_format)
  457. print *,'Total number of failures: ', nfailsTotal
  458. if (nfailsTotal .eq. 0)
  459. + call udexit(0)
  460. call udexit(1)
  461. end