-
Notifications
You must be signed in to change notification settings - Fork 25
/
Chebyshev.t
74 lines (61 loc) · 2 KB
/
Chebyshev.t
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
package Math::GSL::Chebyshev::Test;
use strict;
use warnings;
use base q{Test::Class};
use Math::GSL::Chebyshev qw/:all/;
use Math::GSL::Test qw/:all/;
use Math::GSL::Errno qw/:all/;
use Math::GSL qw/:all/;
use Test::More tests => 10;
use Data::Dumper;
BEGIN { gsl_set_error_handler_off() }
sub make_fixture : Test(setup) {
my $self = shift;
$self->{cheb} = gsl_cheb_alloc(40);
}
sub teardown : Test(teardown) {
my $self = shift;
gsl_cheb_free($self->{cheb});
}
sub GSL_CHEB_ALLOC : Tests {
my $self = shift;
isa_ok($self->{cheb}, 'Math::GSL::Chebyshev');
}
sub GSL_CHEB_INIT : Tests {
my $self = shift;
my $func = sub { my $x = shift; return sin(cos($x)) };
ok_status(gsl_cheb_init( $self->{cheb}, $func, 0, 1));
}
sub GSL_CHEB_EVAL : Tests {
my $self = shift;
my $func = sub { my $x = shift; return sin(cos($x)) };
gsl_cheb_init( $self->{cheb}, $func, 0, 1);
ok_similar( [ sin(cos(0.5)) ], [gsl_cheb_eval($self->{cheb}, 0.5 ) ] );
}
sub GSL_CHEB_EVAL_ERR : Tests {
my $self = shift;
my $func = sub { my $x = shift; return sin(cos($x)) };
gsl_cheb_init( $self->{cheb}, $func, 0, 1);
my ($status,$result,$err) = gsl_cheb_eval_err($self->{cheb}, 0.5 );
ok_status($status);
ok_similar( [ sin(cos(0.5)) ], [ $result ], 'gsl_cheb_eval_err result');
ok( defined $err , 'error is defined');
}
sub GSL_CHEB_CALC_DERIV : Tests {
my $self = shift;
my $deriv = gsl_cheb_alloc(40);
my $func = sub { my $x = shift; return sin(cos($x)) };
gsl_cheb_init( $self->{cheb}, $func, 0, 1);
ok_status(gsl_cheb_calc_deriv($deriv, $self->{cheb} ));
isa_ok($deriv, 'Math::GSL::Chebyshev');
}
sub GSL_CHEB_CALC_INTEGRAL : Tests {
my $self = shift;
my $integral = gsl_cheb_alloc(40);
my $func = sub { my $x = shift; return sin(cos($x)) };
gsl_cheb_init( $self->{cheb}, $func, 0, 1);
ok_status(gsl_cheb_calc_integ($integral, $self->{cheb} ));
isa_ok($integral, 'Math::GSL::Chebyshev');
}
Test::Class->runtests;
1;