1 package Math::GSL::Multiroots::Test;
2 use Math::GSL::Test qw/:all/;
3 use base q{Test::Class};
5 use Math::GSL::Multiroots qw/:all/;
6 use Math::GSL::Errno qw/:all/;
7 use Math::GSL qw/:all/;
11 BEGIN { gsl_set_error_handler_off(); }
13 sub make_fixture : Test(setup) {
15 $self->{fdfsolver} = gsl_multiroot_fdfsolver_alloc($gsl_multiroot_fdfsolver_newton,2);
16 $self->{fsolver} = gsl_multiroot_fsolver_alloc($gsl_multiroot_fsolver_broyden,2);
19 sub teardown : Test(teardown) {
21 gsl_multiroot_fsolver_free($self->{fsolver});
22 gsl_multiroot_fdfsolver_free($self->{fdfsolver});
25 sub TEST_FSOLVER_ALLOC : Tests {
27 isa_ok($self->{fsolver}, 'Math::GSL::Multiroots');
30 sub TEST_FSOLVER_SET : Tests {
31 local $TODO = 'need gsl_multiroot_function typemap';
33 my $vector = Math::GSL::Vector->new(2);
34 ok_status(gsl_multiroot_fsolver_set($self->{fsolver},
35 sub { die 'This will surely fail' },
40 sub TEST_FDFSOLVER_ALLOC : Tests {
42 isa_ok($self->{fdfsolver}, 'Math::GSL::Multiroots');
45 sub TEST_FSOLVER_TYPES : Tests {
47 isa_ok( $_, 'Math::GSL::Multiroots')
48 for ($gsl_multiroot_fsolver_dnewton,
49 $gsl_multiroot_fsolver_broyden,
50 $gsl_multiroot_fsolver_hybrid,
51 $gsl_multiroot_fsolver_hybrids,
52 $gsl_multiroot_fdfsolver_newton,
53 $gsl_multiroot_fdfsolver_gnewton,
54 $gsl_multiroot_fdfsolver_hybridj,
55 $gsl_multiroot_fdfsolver_hybridsj
58 Test::Class->runtests;