Skip to content

Commit 7af5987

Browse files
committed
resolved a bug in destroy, added test cases
1 parent 5f8c484 commit 7af5987

File tree

6 files changed

+31
-27
lines changed

6 files changed

+31
-27
lines changed

src/Makefile.manual

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,6 @@ stdlib_math_linspace.o: \
156156
stdlib_math_logspace.o: \
157157
stdlib_math_linspace.o
158158
stdlib_linalg_outer_product.o: stdlib_linalg.o
159-
stdlib_stringlist.o: stdlib_stringtype.o \
159+
stdlib_stringlist.o: stdlib_string_type.o \
160160
stdlib_math.o \
161161
stdlib_optval.o

src/stdlib_stringlist.f90

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,9 @@ subroutine destroy_list( list )
232232
class(stringlist_type), intent(out) :: list
233233

234234
list%size = 0
235-
deallocate( list%stringarray )
235+
if ( allocated( list%stringarray ) ) then
236+
deallocate( list%stringarray )
237+
end if
236238

237239
end subroutine destroy_list
238240

src/tests/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ add_subdirectory(string)
1818
add_subdirectory(system)
1919
add_subdirectory(quadrature)
2020
add_subdirectory(math)
21+
add_subdirectory(stringlist)
2122

2223
ADDTEST(always_skip)
2324
set_tests_properties(always_skip PROPERTIES SKIP_RETURN_CODE 77)

src/tests/Makefile.manual

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@ all test clean:
1111
$(MAKE) -f Makefile.manual --directory=stats $@
1212
$(MAKE) -f Makefile.manual --directory=string $@
1313
$(MAKE) -f Makefile.manual --directory=math $@
14+
$(MAKE) -f Makefile.manual --directory=stringlist $@

src/tests/stringlist/CMakeLists.txt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1 @@
1-
ADDTEST(insert)
2-
ADDTEST(delete)
3-
ADDTEST(find)
4-
ADDTEST(replace_append)
1+
ADDTEST(insert_at)

src/tests/stringlist/test_insert.f90 renamed to src/tests/stringlist/test_insert_at.f90

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,37 @@
22
! Test the insertion routine
33
!
44
program test_insertion
5-
use stdlib_stringlist
5+
use stdlib_stringlist, only: stringlist_type, fidx, bidx, stringlist_index_type, &
6+
& list_head, list_tail
7+
use stdlib_string_type, only: string_type, char
68

79
type(stringlist_type) :: list, second_list
810
character(len=10), dimension(3) :: sarray
911

1012

11-
call list%insert( 1, "C" )
12-
call list%insert( 1, "B" )
13-
call list%insert( 1, "A" )
13+
call list%insert_at( fidx(1), "C" )
14+
call list%insert_at( fidx(1), "B" )
15+
call list%insert_at( fidx(1), "A" )
1416

1517
write(*,*) 'Expected: A, B, C (3)'
1618
call print_list( list )
1719

18-
call list%insert( 6, "D" )
20+
call list%insert_at( fidx(1), "D" )
1921

2022
write(*,*) 'Expected: A, B, C, D (4)'
2123
call print_list( list )
2224

23-
call list%insert( -1, "X" )
25+
call list%insert_at( bidx(1), "X" )
2426

2527
write(*,*) 'Expected: X, A, B, C, D (5)'
2628
call print_list( list )
2729

28-
call list%insert( list_end-1, "Y" )
30+
call list%insert_at( bidx(2), "Y" )
2931

3032
write(*,*) 'Expected: X, A, B, Y, C, D (6)'
3133
call print_list( list )
3234

33-
call list%insert( list_end+1, "Z" )
35+
call list%insert_at( list_tail, "Z" )
3436

3537
write(*,*) 'Expected: X, A, B, Y, C, D, Z (7)'
3638
call print_list( list )
@@ -40,15 +42,15 @@ program test_insertion
4042
!
4143
call renew_list( list )
4244

43-
call second_list%insert( 1, "SecondA" )
44-
call second_list%insert( 2, "SecondB" )
45+
call second_list%insert_at( fidx(1), "SecondA" )
46+
call second_list%insert_at( fidx(2), "SecondB" )
4547

46-
call list%insert( 2, second_list )
48+
call list%insert_at( fidx(2), second_list )
4749
call print_list( list )
4850

4951
call renew_list( list )
5052

51-
call list%insert( list_after_end, second_list )
53+
call list%insert_at( list_tail, second_list )
5254
call print_list( list )
5355

5456
!
@@ -60,31 +62,32 @@ program test_insertion
6062
sarray(2) = "ThirdB"
6163
sarray(3) = "ThirdC"
6264

63-
call list%insert( list_head, sarray )
65+
call list%insert_at( list_head, sarray )
6466
call print_list( list )
6567

6668
call renew_list( list )
6769

68-
call list%insert( 2, sarray )
70+
call list%insert_at( fidx(2), sarray )
6971
call print_list( list )
7072

7173
contains
7274
subroutine renew_list( list )
7375
type(stringlist_type), intent(inout) :: list
7476

75-
call list%destroy
76-
call list%insert( 1, "A" )
77-
call list%insert( 2, "B" )
78-
call list%insert( 3, "C" )
77+
call list%destroy()
78+
call list%insert_at( fidx(1), "A" )
79+
call list%insert_at( fidx(2), "B" )
80+
call list%insert_at( fidx(3), "C" )
7981
end subroutine renew_list
8082

8183
subroutine print_list( list )
8284
type(stringlist_type), intent(in) :: list
85+
integer :: i
8386

84-
write(*,*) list%length()
87+
write(*,*) list%len()
8588

86-
do i = 1,list%length()
87-
write(*,*) '>', list%get(i), '<'
89+
do i = 1, list%len()
90+
write(*,*) '>', char( list%get( fidx(i) ) ), '<'
8891
enddo
8992
end subroutine print_list
9093

0 commit comments

Comments
 (0)