@@ -150,6 +150,77 @@ subroutine test_insert_at_2
150
150
151
151
end subroutine test_insert_at_2
152
152
153
+ subroutine test_insert_at_3
154
+ type (stringlist_type) :: work_list
155
+ integer :: i, current_length
156
+ character (len= :), allocatable :: string
157
+ integer , parameter :: first = 2
158
+ integer , parameter :: last = 20
159
+
160
+ write (* ,* ) " test_insert_at_3: Starting test case 1!"
161
+
162
+ current_length = 0
163
+ do i = first, last, 2
164
+ string = to_string( i )
165
+ call work_list% insert_at( bidx(i), string )
166
+ current_length = current_length + 1
167
+
168
+ call check( work_list% get( bidx(current_length) ) == string, " test_insert_at_3:&
169
+ & get bidx(current_length) " // string )
170
+ call check( work_list% get( bidx(1 ) ) == to_string(first), " test_insert_at_3:&
171
+ & get bidx(1) " // string )
172
+ call check( work_list% get( list_tail ) == to_string(first), " test_insert_at_3:&
173
+ & get list_tail " // string )
174
+ call check( work_list% get( fidx(1 ) ) == string, " test_insert_at_3:&
175
+ & get fidx(1) " // string )
176
+ call check( work_list% get( fidx(current_length) ) == to_string(first), " test_insert_at_3: get&
177
+ & fidx(current_length) " // string )
178
+ call check( work_list% get( list_head ) == string, " test_insert_at_3: get&
179
+ & list_head " // string )
180
+
181
+ call check( work_list% to_current_idxn( list_head ) == 1 , " test_insert_at_3:&
182
+ & to_current_idxn( list_head ) " // to_string( current_length ) )
183
+ call check( work_list% to_current_idxn( list_tail ) == current_length, " test_insert_at_3:&
184
+ & to_current_idxn( list_tail ) " // to_string( current_length ) )
185
+ call check( work_list% len () == current_length, " test_insert_at_3: length check " &
186
+ & // to_string( current_length ) )
187
+
188
+ end do
189
+
190
+ write (* ,* ) " test_insert_at_3: Starting test case 2!"
191
+
192
+ do i = first - 1 , last - 1 , 2
193
+ string = to_string( i )
194
+ call work_list% insert_at( bidx(i), string )
195
+ current_length = current_length + 1
196
+
197
+ call check( work_list% get( bidx(i) ) == string, " test_insert_at_3:&
198
+ & get bidx(current_length) " // string )
199
+ call check( work_list% get( bidx(1 ) ) == to_string(first - 1 ), " test_insert_at_3:&
200
+ & get bidx(1) " // string )
201
+ call check( work_list% get( list_tail ) == to_string(first - 1 ), " test_insert_at_3:&
202
+ & get list_tail " // string )
203
+ call check( work_list% get( fidx(1 ) ) == to_string(last), " test_insert_at_3:&
204
+ & get fidx(1) " // string )
205
+ call check( work_list% get( fidx(current_length) ) == to_string(first - 1 ), " test_insert_at_3: get&
206
+ & fidx(current_length) " // string )
207
+ call check( work_list% get( list_head ) == to_string(last), " test_insert_at_3: get&
208
+ & list_head " // string )
209
+
210
+ call check( work_list% to_current_idxn( list_head ) == 1 , " test_insert_at_3:&
211
+ & to_current_idxn( list_head ) " // to_string( current_length ) )
212
+ call check( work_list% to_current_idxn( list_tail ) == current_length, " test_insert_at_3:&
213
+ & to_current_idxn( list_tail ) " // to_string( current_length ) )
214
+ call check( work_list% len () == current_length, " test_insert_at_3: length check " &
215
+ & // to_string( current_length ) )
216
+
217
+ end do
218
+
219
+ ! compare work_list with [20, 19, ..., ..., 2, 1]
220
+ call compare_list( work_list, last, first - 2 , 4 )
221
+
222
+ end subroutine test_insert_at_3
223
+
153
224
! compares input stringlist 'list' with an array of consecutive integers
154
225
! array is 'first' inclusive and 'last' exclusive
155
226
subroutine compare_list (list , first , last , call_number )
@@ -181,5 +252,6 @@ program tester
181
252
182
253
call test_insert_at_1
183
254
call test_insert_at_2
255
+ call test_insert_at_3
184
256
185
257
end program tester
0 commit comments