31
subroutine test_error_add()
31
subroutine test_error_empty()
35
character(len=1), parameter :: noroutine = " "
37
call fpspio_error_free()
39
call assert_equals(0, fpspio_error_len(), "Empty error chain length")
40
call assert_equals(PSPIO_SUCCESS, fpspio_error_get_last(noroutine), &
41
& "Empty error chain last code")
43
end subroutine test_error_empty
45
subroutine test_error_fetchall()
35
49
character(len=*), parameter :: err_file = "test_1_1.F90"
36
50
character(len=*), parameter :: err_func = "dummy1"
37
integer, parameter :: err_refcode = PSPIO_EVALUE
42
& fpspio_error_add(err_refcode, err_file, 1234, err_func)
44
call assert_equals(err_refcode, err_code, "Add EVALUE error")
46
end subroutine test_error_add
48
subroutine test_error_fetchall()
52
51
character(len=1), parameter :: ch10 = achar(10)
53
52
character(len=*), parameter :: err_refmsg = &
54
53
& "libpspio: ERROR:" // ch10 // " * in test_1_1.F90(dummy1):1234:" &
55
54
& // ch10 // " value error: bad value found (PSPIO_EVALUE)" // ch10
55
integer, parameter :: err_refcode = PSPIO_EVALUE
56
57
character(len=PSPIO_STRLEN_ERROR) :: err_msg
60
call fpspio_error_free()
62
& fpspio_error_add(err_refcode, err_file, 1234, err_func)
58
63
err_msg = fpspio_error_fetchall()
59
65
call assert_equals(err_refmsg, err_msg, "Retrieve EVALUE error message")
61
67
end subroutine test_error_fetchall
69
subroutine test_error_get_last()
73
character(len=*), parameter :: err_file1 = "test_4_1.F90"
74
character(len=*), parameter :: err_file2 = "test_4_2.F90"
75
character(len=*), parameter :: err_file3 = "test_4_3.F90"
76
character(len=*), parameter :: err_func1 = "dummy41"
77
character(len=*), parameter :: err_func2 = "dummy42"
78
character(len=*), parameter :: err_func3 = "dummy43"
79
character(len=*), parameter :: err_func4 = "dummy44"
80
integer, parameter :: err_line1 = 411
81
integer, parameter :: err_line2 = 422
82
integer, parameter :: err_line3 = 433
83
integer, parameter :: err_refcode1 = PSPIO_EGSL
84
integer, parameter :: err_refcode2 = PSPIO_ENOFILE
85
integer, parameter :: err_refcode3 = PSPIO_ERROR
87
integer :: err_code1, err_code2, err_code3
89
call fpspio_error_free()
91
& fpspio_error_add(err_refcode1, err_file1, err_line1, err_func1)
93
& fpspio_error_add(err_refcode2, err_file2, err_line2, err_func2)
95
& fpspio_error_add(err_refcode3, err_file3, err_line3, err_func3)
97
call assert_equals(3, fpspio_error_len(), &
98
& "Last error - Chain length")
99
call assert_equals(err_refcode1, err_code1, "Last error - Insertion 1")
100
call assert_equals(err_refcode2, err_code2, "Last error - Insertion 2")
101
call assert_equals(err_refcode3, err_code3, "Last error - Insertion 3")
102
call assert_equals(err_refcode1, &
103
& fpspio_error_get_last(err_func1), "Last error - Function 1")
104
call assert_equals(err_refcode2, &
105
& fpspio_error_get_last(err_func2), "Last error - Function 2")
106
call assert_equals(err_refcode3, &
107
& fpspio_error_get_last(err_func3), "Last error - Function 3")
108
call assert_equals(PSPIO_SUCCESS, &
109
& fpspio_error_get_last(err_func4), "Last error - Unknown function")
111
end subroutine test_error_get_last
113
subroutine test_error_single()
117
character(len=*), parameter :: err_file1 = "test_1_1.F90"
118
character(len=*), parameter :: err_func1 = "dummy1"
119
integer, parameter :: err_line1 = 1234
120
integer, parameter :: err_refcode1 = PSPIO_EVALUE
124
call fpspio_error_free()
126
& fpspio_error_add(err_refcode1, err_file1, err_line1, err_func1)
128
call assert_equals(1, fpspio_error_len(), &
129
& "Single error - Chain length")
130
call assert_equals(err_refcode1, err_code1, "Single error - Insertion")
131
call assert_equals(err_refcode1, fpspio_error_get_last(err_func1), &
132
& "Single error - Function last code")
134
end subroutine test_error_single
136
subroutine test_error_double()
140
character(len=*), parameter :: err_file1 = "test_2_1.F90"
141
character(len=*), parameter :: err_file2 = "test_2_2.F90"
142
character(len=*), parameter :: err_func1 = "dummy21"
143
character(len=*), parameter :: err_func2 = "dummy22"
144
integer, parameter :: err_line1 = 1234
145
integer, parameter :: err_line2 = 202
146
integer, parameter :: err_refcode1 = PSPIO_EGSL
147
integer, parameter :: err_refcode2 = PSPIO_ENOSUPPORT
149
integer :: err_code1, err_code2
151
call fpspio_error_free()
153
& fpspio_error_add(err_refcode1, err_file1, err_line1, err_func1)
155
& fpspio_error_add(err_refcode2, err_file2, err_line2, err_func2)
157
call assert_equals(2, fpspio_error_len(), &
158
& "Double error - Chain length")
159
call assert_equals(err_refcode1, err_code1, "Double error - Insertion 1")
160
call assert_equals(err_refcode1, &
161
& fpspio_error_get_last(err_func1), "Double error - Function 1")
162
call assert_equals(err_refcode2, err_code2, "Double error - Insertion 2")
163
call assert_equals(err_refcode2, &
164
& fpspio_error_get_last(err_func2), "Double error - Function 2")
166
end subroutine test_error_double
168
subroutine test_error_triple()
172
character(len=*), parameter :: err_file1 = "test_3_1.F90"
173
character(len=*), parameter :: err_file2 = "test_3_2.F90"
174
character(len=*), parameter :: err_file3 = "test_3_3.F90"
175
character(len=*), parameter :: err_func1 = "dummy31"
176
character(len=*), parameter :: err_func2 = "dummy32"
177
character(len=*), parameter :: err_func3 = "dummy33"
178
integer, parameter :: err_line1 = 311
179
integer, parameter :: err_line2 = 322
180
integer, parameter :: err_line3 = 333
181
integer, parameter :: err_refcode1 = PSPIO_EVALUE
182
integer, parameter :: err_refcode2 = PSPIO_ENOFILE
183
integer, parameter :: err_refcode3 = PSPIO_ERROR
185
integer :: err_code1, err_code2, err_code3
187
call fpspio_error_free()
189
& fpspio_error_add(err_refcode1, err_file1, err_line1, err_func1)
191
& fpspio_error_add(err_refcode2, err_file2, err_line2, err_func2)
193
& fpspio_error_add(err_refcode3, err_file3, err_line3, err_func3)
195
call assert_equals(3, fpspio_error_len(), &
196
& "Triple error - Chain length")
197
call assert_equals(err_refcode1, err_code1, "Triple error - Insertion 1")
198
call assert_equals(err_refcode1, &
199
& fpspio_error_get_last(err_func1), "Triple error - Function 1")
200
call assert_equals(err_refcode2, err_code2, "Triple error - Insertion 2")
201
call assert_equals(err_refcode2, &
202
& fpspio_error_get_last(err_func2), "Triple error - Function 2")
203
call assert_equals(err_refcode3, err_code3, "Triple error - Insertion 3")
204
call assert_equals(err_refcode3, &
205
& fpspio_error_get_last(err_func3), "Triple error - Function 3")
207
end subroutine test_error_triple
63
209
end module m_error_test