The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
# -*- Mode: CPerl -*-
# t/02_cmpvec.t: test cmpvec, vv_qsortvec, vsearchvec

$TEST_DIR = './t';
#use lib qw(../blib/lib ../blib/arch); $TEST_DIR = '.'; # for debugging

# load common subs
use Test;
do "$TEST_DIR/common.plt";
use PDL;
use PDL::VectorValued;

BEGIN { plan tests=>8, todo=>[]; }

##--------------------------------------------------------------
## cmpvec

## 1..3: test cmpvec
our $vdim = 4;
our $v1 = zeroes($vdim);
our $v2 = pdl($v1);
$v2->set(-1,1);

isok("cmpvec:1d:<",  $v1->cmpvec($v2)<0);
isok("cmpvec:1d:>",  $v2->cmpvec($v1)>0);
isok("cmpvec:1d:==", $v1->cmpvec($v1)==0);


##--------------------------------------------------------------
## vv_qsortvec, vv_qsortveci

##-- 4..5: qsortvec, qsortveci
our $p2d  = pdl([[1,2],[3,4],[1,3],[1,2],[3,3]]);

isok("vv_qsortvec",  all($p2d->vv_qsortvec==pdl([[1,2],[1,2],[1,3],[3,3],[3,4]])));
isok("vv_qsortveci", all($p2d->dice_axis(1,$p2d->vv_qsortveci)==$p2d->vv_qsortvec));

##--------------------------------------------------------------
## vsearchvec

##-- 6..8: vsearchvec
our $which = pdl(long,[[0,0],[0,0],[0,1],[0,1],[1,0],[1,0],[1,1],[1,1]]);
our $find  = $which->slice(",0:-1:2");

isok("vsearchvec():match", all($find->vsearchvec($which)==pdl([0,2,4,6])));
isok("vsearchvev():<<",    all(pdl([-1,-1])->vsearchvec($which)==0));
isok("vsearchvev():>>",    all(pdl([2,2])->vsearchvec($which)==$which->dim(1)-1));

print "\n";
# end of t/02_cmpvec.t