File: 01_encode.t

package info (click to toggle)
libpdl-ccs-perl 1.24.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 612 kB
  • sloc: perl: 2,720; makefile: 3; ansic: 3
file content (87 lines) | stat: -rw-r--r-- 3,005 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# -*- Mode: CPerl -*-
# t/01_encode.t
use Test::More;
use strict;
use warnings;

##-- common subs
my $TEST_DIR;
BEGIN {
  use File::Basename;
  use Cwd;
  $TEST_DIR = Cwd::abs_path dirname( __FILE__ );
  eval qq{use lib ("$TEST_DIR/$_/blib/lib","$TEST_DIR/$_/blib/arch");} foreach (qw(../.. ..));
  do "$TEST_DIR/common.plt" or  die("$0: failed to load $TEST_DIR/common.plt: $@");
}
our ($a, $abad, $agood, $awhich, $avals, $BAD);

##-- common modules
use PDL;
use PDL::CCS::Nd;
use PDL::VectorValued;

## (i+1)..(i+9): basic properites (missing==0)
sub test_basic {
  my ($label,$a,$ccs,$missing) = @_;

  isok("${label}:defined", defined($ccs));
  isok("${label}:dims",    all(pdl($ccs->dims)==pdl($a->dims)));
  isok("${label}:nelem",   $ccs->nelem==$a->nelem);

  ##-- check missing
  $missing = 0 if (!defined($missing));
  $missing = PDL->topdl($missing);
  my $awhichND = whichND($missing->isbad ? !isbad($a) : $a!=$missing);

  isok("${label}:_nnz",    $ccs->_nnz==$awhichND->dim(1));
  pdlok("${label}:whichND", $ccs->whichND->vv_qsortvec, $awhichND->vv_qsortvec);
  pdlok("${label}:nzvals",  $ccs->whichVals, $a->indexND(scalar($ccs->whichND)));
  pdlok_nodims("${label}:missing:value", $ccs->missing, $missing);

  ##-- testdecode
  pdlok("${label}:decode",  $ccs->decode,$a);
  pdlok("${label}:todense", $ccs->todense,$a);
}


##--------------------------------------------------------------
## missing==0

##-- 1*nbasic: newFromDense(): basic properties
my $ccs = PDL::CCS::Nd->newFromDense($a);
test_basic("newFromDense:missing=0", $a, $ccs, 0);

##-- 2*nbasic: toccs(): basic properties
$ccs = $a->toccs;
test_basic("toccs:missing=0", $a, $ccs, 0);

##-- 3*nbasic: newFromWhich()
$ccs = PDL::CCS::Nd->newFromWhich($awhich,$avals,missing=>0);
test_basic("newFromWhich:missing=0", $a, $ccs, 0);

##--------------------------------------------------------------
## missing==BAD

##-- 5*nbasic: newFromDense(...BAD): basic properties
$a     = $a->setbadif($abad);
$avals = $a->indexND($awhich);
test_basic("newFromDense:missing=BAD:explicit", $a, PDL::CCS::Nd->newFromDense($a,$BAD), $BAD);
test_basic("newFromDense:missing=BAD:implicit", $a, PDL::CCS::Nd->newFromDense($a),      $BAD);

##-- 7*nbasic: toccs(...BAD): basic properties
test_basic("toccs:missing=BAD:explicit", $a, $a->toccs($BAD), $BAD);
test_basic("toccs:missing=BAD:implicit", $a, $a->toccs(),     $BAD);

##-- 9*nbasic: newFromWhich(...BAD)
test_basic("newFromWhich:missing=BAD:explicit", $a, PDL::CCS::Nd->newFromWhich($awhich,$avals,missing=>$BAD), $BAD);
test_basic("newFromWhich:missing=BAD:implicit", $a, PDL::CCS::Nd->newFromWhich($awhich,$avals),               $BAD);

##--------------------------------------------------------------
## global tests
##  (9*nbasic)..((9*nbasic)+2)

## 1..2: PDL->todense, PDL::CCS::Nd->toccs
isok("PDL::todense():no-copy", overload::StrVal($a)   eq overload::StrVal($a->todense));
isok("CCS::toccs():no-copy",   overload::StrVal($ccs) eq overload::StrVal($ccs->toccs));

done_testing;