# -*- perl -*- use Test::More tests => 26; use Test::Number::Delta relative => 1e-4; BEGIN { use_ok( 'Geo::Sun' ); } my $gs = Geo::Sun->new; isa_ok($gs, 'Geo::Sun'); my $tropic=23 + (26 + 22/60)/60; #Tropic of Cancer my $summer=DateTime->new( year => 2008, month => 6, day => 20, hour => 23, minute => 59, time_zone => "UTC", ); isa_ok($summer, "DateTime"); my $point=$gs->point_dt($summer); isa_ok($point, "GPS::Point"); delta_ok($point->lat, $tropic, "Summer Solstice"); $point=$gs->set_datetime($summer)->point; isa_ok($point, "GPS::Point"); delta_ok($point->lat, $tropic, "Summer Solstice"); is($summer->datetime, $gs->datetime->datetime, 'correct time'); my $winter=DateTime->new( year => 2008, month => 12, day => 21, hour => 12, minute => 04, time_zone => "UTC", ); isa_ok($winter, "DateTime"); $point=$gs->point_dt($winter); isa_ok($point, "GPS::Point"); delta_ok($point->lat, -$tropic, "Winter Solstice"); $point=$gs->set_datetime($winter)->point; isa_ok($point, "GPS::Point"); delta_ok($point->lat, -$tropic, "Winter Solstice"); is($winter->datetime, $gs->datetime->datetime, 'correct time'); my $spring=DateTime->new( year => 2008, month => 3, day => 20, hour => 5, minute => 48, time_zone => "UTC", ); isa_ok($spring, "DateTime"); $point=$gs->point_dt($spring); isa_ok($point, "GPS::Point"); delta_within($point->lat, 0, 0.005, "Spring Equinox"); $point=$gs->set_datetime($spring)->point; isa_ok($point, "GPS::Point"); delta_within($point->lat, 0, 0.005, "Spring Equinox"); is($spring->datetime, $gs->datetime->datetime, 'correct time'); my $fall=DateTime->new( year => 2008, month => 9, day => 22, hour => 15, minute => 44, time_zone => "UTC", ); isa_ok($fall, "DateTime"); $point=$gs->point_dt($fall); isa_ok($point, "GPS::Point"); delta_within($point->lat, 0, 0.005, "Fall Equinox"); $point=$gs->set_datetime($fall)->point; isa_ok($point, "GPS::Point"); delta_within($point->lat, 0, 0.005, "Fall Equinox"); is($fall->datetime, $gs->datetime->datetime, 'correct time');