File: stringstest.F90

package info (click to toggle)
babel 0.10.2-1
  • links: PTS
  • area: contrib
  • in suites: sarge
  • size: 43,932 kB
  • ctags: 29,707
  • sloc: java: 74,695; ansic: 73,142; cpp: 40,649; sh: 18,411; f90: 10,062; fortran: 6,727; python: 6,406; makefile: 3,866; xml: 118; perl: 48
file content (109 lines) | stat: -rw-r--r-- 3,268 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
!
! File:       stringstest.F90
! Copyright:  (c) 2002 The Regents of the University of California
! Revision:   @(#) $Revision: 4434 $
! Date:       $Date: 2005-03-17 09:05:29 -0800 (Thu, 17 Mar 2005) $
! Description:Exercise the FORTRAN interface
!

#include "Strings_Cstring_fAbbrev.h"
#include "synch_RegOut_fAbbrev.h"
#include "synch_ResultType_fAbbrev.h"

subroutine starttest(number)
  use synch_RegOut
  implicit none
  integer (selected_int_kind(9)) :: number
  type(synch_RegOut_t) :: tracker
  call getInstance(tracker)
  call startPart(tracker, number)
  call deleteRef(tracker)
end subroutine starttest

subroutine reporttest(test, number)
  use synch_RegOut
  use synch_ResultType
  implicit none
  integer (selected_int_kind(9)) :: number
  type(synch_RegOut_t) :: tracker
  logical                        :: test
  call getInstance(tracker)
  if (test) then
     call endPart(tracker, number, PASS)
  else
     call endPart(tracker, number, FAIL)
  endif
  call deleteRef(tracker)
  number = number + 1
end subroutine reporttest

subroutine teststring(test)
  use Strings_Cstring
  implicit none
  type(Strings_Cstring_t)         :: obj
  integer (selected_int_kind(9))  :: test
  logical                         :: retval
  character (len=80)              :: in, inout, out, sreturn
  character (len=1)               :: ch1, ch2
  call new(obj)
  sreturn = 'Not three'
  call starttest(test)
  call returnback(obj, .true., sreturn)
  call reporttest(sreturn .eq. 'Three', test)
  retval = .false.
  call starttest(test)
  call passin(obj, 'Three', retval)
  call reporttest(retval, test)
  in = 'Three'
  call starttest(test)
  call passin(obj, in, retval)
  call reporttest(retval, test)
  call starttest(test)
  call passin(obj, 'Four', retval)
  call reporttest(.not. retval, test)
  out = 'Not three'
  call starttest(test)
  call passout(obj, .true., out, retval)
  call reporttest(retval .and. out .eq. 'Three', test)
  inout = 'Three'
  call starttest(test)
  call passinout(obj, inout, retval)
  call reporttest(retval .and. inout .eq. 'threes', test)
  call starttest(test)
  call passeverywhere(obj, 'Three', out, inout, sreturn)
  call reporttest(sreturn .eq. 'Three' .and. out .eq. 'Three' .and. &
       inout .eq. 'Three', test)
  call starttest(test)
  call mixedarguments(obj, 'Test', 'z', 'Test', 'z', retval)
  call reporttest(retval, test)
  call starttest(test)
  call mixedarguments(obj, 'Not', 'A', 'Equal', 'a', retval)
  call reporttest(.not. retval, test)
  ch1 = 'z'
  ch2 = 'z'
  call starttest(test)
  call mixedarguments(obj, 'Test', ch1, 'Test', ch1, retval)
  call reporttest(retval, test)
  call starttest(test)
  call mixedarguments(obj, 'Test', ch1, 'Test', ch2, retval)
  call reporttest(retval, test)
  ch2 = 'A'
  call starttest(test)
  call mixedarguments(obj, 'Not', ch1, 'Equal', ch2, retval)
  call reporttest(.not. retval, test)
  call deleteRef(obj)

end subroutine teststring

program stringstest
  use synch_RegOut
  integer (selected_int_kind(9)) :: test
  type(synch_RegOut_t) :: tracker
  test = 1
  call getInstance(tracker)
  call setExpectations(tracker, 12)
  call writeComment(tracker, 'String tests')
  call teststring(test)
  call close(tracker)
  call deleteRef(tracker)
end program stringstest