test_gen Subroutine

subroutine test_gen(name)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: name

Contents

Source Code


Variables

Type Visibility Attributes Name Initial
character(len=10), public :: cc(isz)
real(kind=dp), public :: dd(isz)
integer, public :: i
integer, public :: ii(isz)
integer, public :: indx(isz)
integer, public, parameter :: isz = 1000
real, public :: rr(isz)

Source Code

subroutine test_gen(name)
character(len=*),intent(in)   :: name
integer,parameter             :: isz=1000
real                          :: rr(isz)
real(kind=dp)                 :: dd(isz)
integer                       :: ii(isz)
character(len=10)             :: cc(isz)
integer                       :: indx(isz)
integer                       :: i

   call unit_check_start(name, '-library orderpack') ! start tests

   CALL RANDOM_NUMBER(RR)
   rr = rr*huge(0.0)
   select case(name)
   case('inssor');call inssor(rr)
   case('refsor');call refsor(rr)
   case('mrgrnk');call mrgrnk(rr,indx); rr=rr(indx)
   case('mrgref');call mrgref(rr,indx); rr=rr(indx)
   endselect
   call unit_check(name,all(rr(1:isz-1) .le. rr(2:isz)),'real test',isz,'values')

   CALL RANDOM_NUMBER(RR)
   ii = rr*huge(0)
   select case(name)
   case('inssor');call inssor(ii)
   case('refsor');call refsor(ii)
   case('mrgrnk');call mrgrnk(ii,indx); ii=ii(indx)
   case('mrgref');call mrgref(ii,indx); ii=ii(indx)
   endselect
   call unit_check(name,all(ii(1:isz-1) .le. ii(2:isz)),'integer test',isz,'values')

   CALL RANDOM_NUMBER(DD)
   dd = dd*huge(0.0_dp)
   select case(name)
   case('inssor');call inssor(dd)
   case('refsor');call refsor(dd)
   case('mrgrnk');call mrgrnk(dd,indx); dd=dd(indx)
   case('mrgref');call mrgref(dd,indx); dd=dd(indx)
   endselect
   call unit_check(name,all(dd(1:isz-1) .le. dd(2:isz)),'double test',isz,'values')

   do i=1,isz
      cc(i) = random_string('abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',10)
   enddo
   select case(name)
   case('inssor');call inssor(cc)
   case('refsor');call refsor(cc)
   case('mrgrnk');call mrgrnk(cc,indx); cc=cc(indx)
   case('mrgref');call mrgref(cc,indx); cc=cc(indx)
   endselect
   call unit_check(name,all(cc(1:isz-1) .le. cc(2:isz)),'string test, random',isz,'values')

   call unit_check_done(name,msg='test completed')

end subroutine test_gen