The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl

# Test FITS binary table read

# Astro::Catalog test harness
use Test::More;
use Data::Dumper;
use File::Spec;

use strict;

eval { require Astro::FITS::CFITSIO; };
if( $@ ) {
  plan skip_all => "Tests require Astro::FITS::CFITSIO";
} else {
  plan tests => 18;
}

require_ok( "Astro::Catalog" );
require_ok( "Astro::Catalog::IO::FITSTable" );

my $file = File::Spec->catfile( "t", "data", "cat.fit" );

my $cat = new Astro::Catalog( Format => 'FITSTable',
                              File => $file );

isa_ok( $cat, "Astro::Catalog" );

is( $cat->sizeof, 672, "Size of catalog" );

my $star = $cat->popstar();
my $id = $star->id;

is( $id, 672, "Last object's ID" );

is( $star->dec, "-02 03 51.95", "Last object's Dec" );

my $fluxes = $star->fluxes;
isa_ok( $fluxes, "Astro::Fluxes" );

my @allfluxes = $fluxes->allfluxes;
foreach my $flux ( @allfluxes ) {
  isa_ok( $flux, "Astro::Flux" );
  if( lc($flux->type) eq 'isophotal_flux' ) {
    is( sprintf( "%.3f", $flux->quantity('isophotal_flux') ),
        1169.419,
        "Last object's isophotal flux" );
    is( $flux->datetime->datetime, "2004-11-27T05:49:14", "DateTime of flux measurement" );
    is( $flux->waveband->natural, "Z", "Filter of flux measurement" );
  }
}