Refactor inclusion of system.i to one place
[Math-GSL.git] / t / DHT.t
blob6780b67c5a64ea714c4a82c9fbc7435567a2ba22
1 package Math::GSL::DHT::Test;
2 use base q{Test::Class};
3 use Test::More tests => 7;
4 use Math::GSL        qw/:all/;
5 use Math::GSL::DHT   qw/:all/;
6 use Math::GSL::Errno qw/:all/;
7 use Math::GSL::Test  qw/:all/;
8 use Data::Dumper;
9 use strict;
11 BEGIN { gsl_set_error_handler_off(); }
13 sub make_fixture : Test(setup) {
16 sub teardown : Test(teardown) {
19 sub GSL_DHT_ALLOC_FREE : Tests {
20     my $dht = gsl_dht_alloc(5);
21     isa_ok($dht, 'Math::GSL::DHT');
22     gsl_dht_free($dht);
23     ok(!$@, 'gsl_dht_free');
26 sub DHT_NEW : Tests {
27     my $dht = gsl_dht_new(128, 1.0, 20);
28     isa_ok($dht, 'Math::GSL::DHT' );
31 sub DHT_SAMPLE_APPLY : Tests { 
32     my $f_in  = [(0) x 128 ];
33     my $f_out = [(0) x 128 ];
34     my $dht = gsl_dht_new(128, 1.0, 20);
36     for my $n (0..127) {
37             my $x = gsl_dht_x_sample($dht, $n);
38             $f_in->[$n] = exp(-$x);
39     }
40     ok( $#$f_in = 127, 'gsl_dht_x_sample' ); 
42     ok_status( gsl_dht_apply($dht, $f_in, $f_out));
43     ok( $#$f_out = 127, 'gsl_dht_apply' ); 
45     local $TODO = 'need a typemap for $f_in and $f_out';
46     # check that the relative error at most 2%
47     ok(
48         is_similar_relative ($f_out->[0], 0.181, 0.02), 
49         "gsl_dht_apply output @{[$f_out->[0]]} != 0.181"
50     );
53 Test::Class->runtests;