#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
use Test;
BEGIN { plan tests => 17 };
# File : GO-AnnotatedGene.t
# Author : Gavin Sherlock
# Date Begun : March 9th 2002
# $Id: GO-AnnotatedGene.t,v 1.2 2007/03/18 01:37:14 sherlock Exp $
# This file forms a set of tests for the GO::AnnotatedGene class
use GO::AnnotatedGene;
my $databaseId = "S0004660";
my $standardName = "AAC1";
my $type = "gene";
my $productName = "ADP/ATP translocator";
my @aliases = ("YMRO56C");
my @methods = qw (databaseId standardName type productName aliases);
my $annotatedGene = GO::AnnotatedGene->new(databaseId => $databaseId,
standardName => $standardName,
type => $type,
productName => $productName,
aliases => \@aliases);
# check object type
ok($annotatedGene->isa("GO::AnnotatedGene"));
# check the object returns a code reference when asked if it can do a
# method that should exist
foreach my $method (@methods){
ok(ref($annotatedGene->can($method)), "CODE");
}
# check object attributes
ok($annotatedGene->databaseId, $databaseId);
ok($annotatedGene->standardName, $standardName);
ok($annotatedGene->type, $type);
ok($annotatedGene->productName, $productName);
ok(($annotatedGene->aliases)[0], $aliases[0]);
ok(scalar($annotatedGene->aliases), scalar(@aliases));
# now test not passing in the optional arguments
$annotatedGene = GO::AnnotatedGene->new(databaseId => $databaseId,
standardName => $standardName,
type => $type);
ok($annotatedGene->productName, undef);
ok(scalar($annotatedGene->aliases), 0);
# now check that we throw an error with the appropriate message if we
# leave out a required argument
# leave out databaseId
eval {
$annotatedGene = GO::AnnotatedGene->new(standardName => $standardName,
type => $type);
};
ok($@ =~ /did not provide a value for the 'databaseId' argument/);
# leave out standardName
eval {
$annotatedGene = GO::AnnotatedGene->new(databaseId => $databaseId,
type => $type);
};
ok($@ =~ /did not provide a value for the 'standardName' argument/);
# leave out type
eval {
$annotatedGene = GO::AnnotatedGene->new(databaseId => $databaseId,
standardName => $standardName);
};
ok($@ =~ /did not provide a value for the 'type' argument/);