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 => 3+16*2+13*2;

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

my %MAX_TIMES = (
	SSI => {
		3.0  => 300,
		4.5  => 350,
		6.0  => 325,
		7.5  => 245,
		9.0  => 205,
		10.5 => 160,
		12.0 => 130,
		15.0 =>  70,
		18.0 =>  50,
		21.0 =>  40,
		24.0 =>  30,
		27.0 =>  25,
		30.0 =>  20,
		33.0 =>  15,
		36.0 =>  10,
		39.0 =>   5,
	},
	PADI => {
		10.5 => 205,
		12.0 => 140,
		15.0 =>  80,
		18.0 =>  55,
		21.0 =>  40,
		24.0 =>  30,
		27.0 =>  25,
		30.0 =>  20,
		33.0 =>  16,
		36.0 =>  13,
		39.0 =>  10,
		42.0 =>   8,
	}
);

my %MAX_TIMES_FT = (
	SSI => {
		10  => 300,
		15  => 350,
		20  => 325,
		25  => 245,
		30  => 205,
		35  => 160,
		40  => 130,
		50  =>  70,
		60  =>  50,
		70  =>  40,
		80  =>  30,
		90  =>  25,
		100 =>  20,
		110 =>  15,
		120 =>  10,
		130 =>   5,
	},
	PADI => {
		 35 => 205,
		 40 => 140,
		 50 =>  80,
		 60 =>  55,
		 70 =>  40,
		 80 =>  30,
		 90 =>  25,
		100 =>  20,
		110 =>  16,
		120 =>  13,
		130 =>  10,
		140 =>   8,
	}
);

my %sdt = (
	SSI  => SCUBA::Table::NoDeco->new(table => 'SSI'),
	PADI => SCUBA::Table::NoDeco->new(table => 'PADI'),
);

# Test SSI dive.

$sdt{SSI}->dive(metres => 18, minutes => 30);

is($sdt{SSI}->group,"F","Dive for 18 metres for 30 minutes is group F");

$sdt{SSI}->clear;
is($sdt{SSI}->group,"","Group cleared");

# Test PADI dive.

$sdt{PADI}->dive(metres => 18, minutes => 30);
is($sdt{PADI}->group,"L","PADI dive for 18 minutes and 30 minutes is group L");

$sdt{PADI}->clear;
is($sdt{PADI}->group,"","PADI Group cleared");

foreach my $table (keys %MAX_TIMES) {

	foreach my $depth (keys %{$MAX_TIMES{$table}}) {
		is($sdt{$table}->max_time(metres => $depth),
		   $MAX_TIMES{$table}{$depth},
		   "Max time at $depth metres on $table is $MAX_TIMES{$table}{$depth}");
	}

	foreach my $depth (keys %{$MAX_TIMES_FT{$table}}) {
		is($sdt{$table}->max_time(feet => $depth),
		   $MAX_TIMES_FT{$table}{$depth},
		   "Max time at $depth feet on $table is $MAX_TIMES_FT{$table}{$depth}");
	}

}