The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl
# Astro::Catalog::Star test harness

# strict
use strict;

#load test
use Test::More tests => 17;


# load modules
BEGIN { use_ok("Astro::Catalog::Star") };
use Data::Dumper;

# T E S T   H A R N E S S --------------------------------------------------

# magnitude and colour hashes
my $flux1 = new Astro::Flux( new Number::Uncertainty ( Value => 16.1,
                                                       Error => 0.1 ),  
			     'mag', 'R' );
my $flux2 = new Astro::Flux( new Number::Uncertainty ( Value => 16.4,
                                                       Error => 0.4 ),  
			     'mag', 'B' );
my $flux3 = new Astro::Flux( new Number::Uncertainty ( Value => 16.3,
                                                       Error => 0.3 ),  
			     'mag', 'V' );
my $col1 = new Astro::FluxColor( upper => 'B', lower => 'V',
                     quantity => new Number::Uncertainty ( Value => 0.1,
                                                           Error => 0.02 ) );  			     
my $col2 = new Astro::FluxColor( upper => 'B', lower => 'R',
                     quantity => new Number::Uncertainty ( Value => 0.3,
                                                           Error => 0.05 ) );
my $fluxes = new Astro::Fluxes( $flux1, $flux2, $flux3, $col1, $col2 );	
						    
# create a star
my $star = new Astro::Catalog::Star( ID         => 'U1500_01194794',
                                     RA         => '17.55398',
                                     Dec        => '60.07673',
                                     Fluxes     => $fluxes,
                                     Quality    => '0',
                                     GSC        => 'FALSE',
                                     Distance   => '0.09',
                                     PosAngle   => '50.69',
                                     Field      => '00080' );

isa_ok($star,"Astro::Catalog::Star");

# FILTERS
# -------

# grab input filters
my @input = ( 'R', 'B', 'V' );

# grab used filters
my @filters = $star->what_filters();

# report to user
print "# input  = @input\n";
print "# output = @filters\n";

# compare input and returned filters
for my $i (0 .. $#filters) {
 is( $filters[$i], $input[$i], "compare filter name" );
}
is( $star->get_magnitude( 'B' ), 16.4, 'B magnitude' );
is( $star->get_magnitude( 'R' ), 16.1, 'R magnitude' );
is( $star->get_magnitude( 'V' ), 16.3, 'V magnitude' );
is( $star->get_errors( 'B' ), 0.4, 'B error' );
is( $star->get_errors( 'R' ), 0.1, 'R error' );
is( $star->get_errors( 'V' ), 0.3, 'V error' );

# COLOURS
# -------

@input = ( "B-V", "B-R" );

my @colours = $star->what_colours();

# report to user
print "# input  = @input\n";
print "# output = @colours\n";

# compare input and returned filters
for my $i (0 .. $#colours) {
 is( $colours[$i], $input[$i], "compare colour names" );
}
is( $star->get_colour('B-V'), 0.1 , "compare B-V colour values" );
is( $star->get_colour('B-R'), 0.3 , "compare B-R colour values" );
is( $star->get_colourerr('B-V'), 0.02, "compare B-V colour error values" );
is( $star->get_colourerr('B-R'), 0.05, "compare B-R colour error values" );
# T I M E   A T   T H E   B A R ---------------------------------------------
exit;