use 5.008;    # Require at least Perl version 5.8
use strict;   # Must declare all variables before using them
use warnings; # Emit helpful warnings
use autodie;  # Fatal exceptions for common unrecoverable errors (e.g. w/open)

# Testing-related modules
use Test::More;                  # provide testing functions (e.g. is, like)
use Test::LongString;            # Compare strings byte by byte
use Data::Section -setup;        # Set up labeled DATA sections
use File::Temp  qw( tempfile );  #
use File::Slurp qw( slurp    );  # Read a file into a string

SKIP: {
    skip 'Author tests', 2 unless $ENV{RUN_DEVELOPER_TESTS};
    system("perl lib/Bio/App/SELEX/RNAmotifAnalysis.pm --fastq dummy ");
    my $config_file = 'cluster.cfg';
    my $result   = slurp $config_file;
    my $expected = string_from('expected');
    is( $result, $expected, 'successfully created config file' );
    delete_temp_file( $config_file);
}

{
    system("perl lib/Bio/App/SELEX/RNAmotifAnalysis.pm --fastq dummy ");
    my $config_file = 'cluster.cfg';

    ok( -e $config_file, 'created a config file' );
    delete_temp_file( $config_file);
}


done_testing();

sub sref_from {
    my $section = shift;

    #Scalar reference to the section text
    return __PACKAGE__->section_data($section);
}

sub string_from {
    my $section = shift;

    #Get the scalar reference
    my $sref = sref_from($section);

    #Return a string containing the entire section
    return ${$sref};
}

sub delete_temp_file {
    my $filename  = shift;
    my $delete_ok = unlink $filename;
    ok($delete_ok, "deleted temp file '$filename'");
}

#------------------------------------------------------------------------
# IMPORTANT!
#
# Each line from each section automatically ends with a newline character
#------------------------------------------------------------------------

__DATA__
__[ expected ]__
[Flags_for]
RNAalifold=-r -cv 0.6 -nc 10 -p -d2 -noLP -color -aln
mafft=--preservecase --clustalout

[executables]
CreateStockholm=selex_clustal2stockholm.pl
RNAalifold=RNAalifold
cmalign=cmalign
cmbuild=cmbuild
cmcalibrate=cmcalibrate
cmsearch=cmsearch
mafft=mafft
stock2fasta=selex_stock2fasta.pl
