The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# -*-Perl-*- Test Harness script for Bioperl
# $Id: xmfa.t 14971 2008-10-28 16:08:52Z cjfields $

use strict;

BEGIN {
	use lib '.';
    use Bio::Root::Test;
    
    test_begin(-tests => 30);
	
	use_ok('Bio::AlignIO::xmfa');
}

my $DEBUG = test_debug(); # foo

my ($str,$aln,$strout,$status);

# XMFA
$str = Bio::AlignIO->new(
		 -file => test_input_file("testaln.xmfa"), 
		 -format => 'xmfa');
$aln = $str->next_aln();
isa_ok($aln,'Bio::Align::AlignI');

# test seqs

my @test_data = (
    # 1:1-598 + chrY 
    [ 'chrY/1-598', 1, 598, 1, 'chrY', undef],

    # 2:5000-5534 - chr17 
    [ 'chr17/5534-5000', 5000, 5534, -1, 'chr17', undef],

    # 3:19000-19537 - chr7
    [ 'chr7/19537-19000', 19000, 19537, -1, 'chr7', undef],
);

for my $pos (1..3) {
    my $seq = $aln->get_seq_by_pos($pos);
    my @seq_data = @{shift @test_data};
    is $seq->get_nse, shift @seq_data,  "xmfa input test ";
    is $seq->start, shift @seq_data, "xmfa input test for start";
    is $seq->end, shift @seq_data, "xmfa input test for end";
    is $seq->strand, shift @seq_data,  "xmfa strand test";
    is $seq->display_id, shift @seq_data, "xmfa input test for id";
    is $seq->description, shift @seq_data, "xmfa input test for id";
}

# test aln
is $aln->score, 111, 'xmfa alignment score';

$aln = $str->next_aln();
isa_ok($aln,'Bio::Align::AlignI');
is $aln->get_seq_by_pos(1)->get_nse, 'chrY/1000-1059', 
  "xmfa input test ";
is $aln->get_seq_by_pos(1)->strand, 1, 
  "xmfa strand";
is ($aln->get_seq_by_pos(2)->description, undef, 
    "xmfa input test for description");
is ($aln->get_seq_by_pos(3)->display_id, 'chr12',
    "xmfa input test for id");
is ($aln->get_seq_by_pos(2)->start, 6000,
    "xmfa input test for end");
is ($aln->get_seq_by_pos(1)->end, 1059,
    "xmfa input test for end");
is ($aln->score, 11, 'xmfa alignment score');

$strout = Bio::AlignIO->new(
   '-file' => ">".test_output_file(), 
			      '-format' => 'xmfa');
$status = $strout->write_aln($aln);
is $status, 1,"xmfa output test";