1 package Math
::GSL
::Sort
::Test
;
2 use base
q{Test::Class};
4 use Math
::GSL
::Permutation qw
/:all/;
5 use Math
::GSL
::Sort qw
/:all/;
6 use Math
::GSL
::Vector qw
/:all/;
7 use Math
::GSL qw
/:all/;
8 use Math
::GSL
::Errno qw
/:all/;
12 BEGIN { gsl_set_error_handler_off
(); }
14 sub make_fixture
: Test
(setup
) {
17 sub teardown
: Test
(teardown
) {
20 sub GSL_SORT_VECTOR
: Tests
{
21 my $vec = Math
::GSL
::Vector
->new([6,4,2,3,1,5]);
22 gsl_sort_vector
($vec->raw);
23 ok_similar
( [ $vec->as_list ], [ 1 .. 6 ] );
26 sub GSL_SORT_VECTOR_LARGEST
: Tests
{
27 local $TODO = 'gsl_sort_vector_largest';
28 my $vec = Math
::GSL
::Vector
->new([reverse 0..50]);
29 my $largest10 = [1..10];
30 my ($status, $stuff) = gsl_sort_vector_largest
($largest10, 10, $vec->raw);
31 ok_status
( $status, $GSL_SUCCESS);
32 ok_similar
( $stuff, [ reverse (41 .. 50) ] );
34 sub GSL_SORT_VECTOR_INDEX
: Tests
{
35 my $vec = Math
::GSL
::Vector
->new([4,2,3,1,5]);
36 my $p = Math
::GSL
::Permutation
->new(5);
37 ok_status
(gsl_sort_vector_index
($p->raw, $vec->raw),$GSL_SUCCESS);
38 # indices in ascending order
39 ok_similar
( [ $p->as_list ], [ 3, 1, 2, 0 , 4] );
43 sub GSL_SORT
: Tests
{
44 my $x = [ 2**15, 1, 42.7, -17, 6900, 3e-10 , 4242, 0e0
];
45 my $sorted = gsl_sort
($x, 1, $#$x+1 );
46 ok_similar
( $sorted , [ -17, 0e0
, 3e-10, 1, 42.7, 4242, 6900, 2**15 ], 'gsl_sort' );