subroutine test_unirnk()
integer,allocatable :: xvalt(:)
integer,allocatable :: irngt(:)
integer :: nuni
call unit_check_start('unirnk', '-library orderpack') ! start tests
xvalt=[10,5,7,1,4,5,6,8,9,10,1]
if(allocated(irngt))deallocate(irngt)
allocate(irngt(size(xvalt)))
call unirnk(xvalt,irngt,nuni)
call unit_check('unirnk',nuni.eq.8,'number of indices. got',nuni,'expected',8)
call unit_check('unirnk',all(irngt(:nuni) .eq. [ 4,5,2,7,3,8,9,1 ]) ,'returned indices')
call unit_check('unirnk',all(xvalt(irngt(:nuni)) .eq. [ 1,4,5,6,7,8,9,10 ]) ,'sorted data')
call unit_check_done('unirnk',msg='test completed')
end subroutine test_unirnk