#!perl

# Test XY format read/write

use Test::More tests => 27;
use File::Temp ();

use strict;

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

my $cat = new Astro::Catalog(
        Format => 'XY',
        Data => \*DATA);
isa_ok($cat, "Astro::Catalog");

# There should be five items in the catalog.
is($cat->sizeof, 5, "number of items in catalog");

my @stars = $cat->stars;

is($stars[0]->x, 1,  "star 0 x position is 1");
is($stars[0]->y, 2,  "star 0 y position is 2");
is($stars[1]->x, 2,  "star 1 x position is 2");
is($stars[1]->y, 3,  "star 1 y position is 3");
is($stars[2]->x, 4,  "star 2 x position is 4");
is($stars[2]->y, 7,  "star 2 y position is 7");
is($stars[3]->x, 2,  "star 3 x position is 2");
is($stars[3]->y, 9,  "star 3 y position is 9");
is($stars[4]->x, 12, "star 4 x position is 12");
is($stars[4]->y, 52, "star 4 y position is 52");

# Write out a file, then read it back in.
my $fh = new File::Temp;
my $tempfile = $fh->filename;
ok($cat->write_catalog(Format => 'XY', File => $tempfile),
    "Writing catalog to disk");

my $newcat = new Astro::Catalog(Format => 'XY', File => $tempfile);
isa_ok($newcat, "Astro::Catalog");

# There should be five items in the new catalog.
is($newcat->sizeof, 5, "number of items in new catalog");

my @newstars = $newcat->stars;

is($newstars[0]->x, 1,  "new star 0 x position is 1");
is($newstars[0]->y, 2,  "new star 0 y position is 2");
is($newstars[1]->x, 2,  "new star 1 x position is 2");
is($newstars[1]->y, 3,  "new star 1 y position is 3");
is($newstars[2]->x, 4,  "new star 2 x position is 4");
is($newstars[2]->y, 7,  "new star 2 y position is 7");
is($newstars[3]->x, 2,  "new star 3 x position is 2");
is($newstars[3]->y, 9,  "new star 3 y position is 9");
is($newstars[4]->x, 12, "new star 4 x position is 12");
is($newstars[4]->y, 52, "new star 4 y position is 52");

exit;

__DATA__
1 2
2 3
4 7
# this is a comment
 2 9
  12      52     
