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

use strict;
use Test::More tests => 15;

BEGIN { use_ok("SCUBA::Table::NoDeco"); }

my $stn;

eval { $stn = SCUBA::Table::NoDeco->new(table => "Non-Existant"); };
ok($@,"Non-existant table used");

$stn = SCUBA::Table::NoDeco->new(table => "SSI");

eval { $stn->dive(metres => 100, minutes => 30) };
ok($@,"Dive outside of table's maximum depth");

eval { $stn->dive(metres => 30, minutes => 30) };
ok($@,"Dive outside of table's maximum no-deco time");

eval { $stn->dive(metres => -1, minutes => 30) };
ok($@,"Negative metric depth supplied");

eval { $stn->dive(feet => -1, minutes => 30) };
ok($@,"Negative imperial depth supplied");

eval { $stn->dive(feet => 10, metres => 20, minutes => 30) };
ok($@,"Both imperial and metric depths supplied");

eval { $stn->dive(metres => 20, minutes => -30) };
ok($@,"Negative time supplied");

eval { $stn->dive(metres => 0, minutes => 30) };
ok($@,"Zero depth supplied");

eval { $stn->dive(metres => 18, minutes => 0) };
ok($@,"Zero time supplied");

eval { $stn->dive(metres => 18) };
ok($@,"No times supplied");

eval { $stn->dive(minutes => 18) };
ok($@,"No depth supplied");

eval { $stn->max_depth(units=>"furlongs") };
ok($@,"Unsupported units supplied");

eval { $stn->max_time(metres => 100) };
ok($@,"Too great a depth for our tables");

eval { local $^W = 0; $stn->surface(123) };	# No minutes argument supplied.
like($@,qr/Mandatory argument/,"No minutes argument supplied");