r8862 - in /trunk/libdatetime-astro-sunrise: ./ Changes MANIFEST Makefile.PL README Sunrise.pm t/ t/00load.t t/01basic.t

joeyh at users.alioth.debian.org joeyh at users.alioth.debian.org
Sun Nov 4 22:26:21 UTC 2007


Author: joeyh
Date: Sun Nov  4 22:26:21 2007
New Revision: 8862

URL: http://svn.debian.org/wsvn/?sc=1&rev=8862
Log:
initial import

Added:
    trunk/libdatetime-astro-sunrise/
    trunk/libdatetime-astro-sunrise/Changes
    trunk/libdatetime-astro-sunrise/MANIFEST
    trunk/libdatetime-astro-sunrise/Makefile.PL
    trunk/libdatetime-astro-sunrise/README
    trunk/libdatetime-astro-sunrise/Sunrise.pm
    trunk/libdatetime-astro-sunrise/t/
    trunk/libdatetime-astro-sunrise/t/00load.t
    trunk/libdatetime-astro-sunrise/t/01basic.t

Added: trunk/libdatetime-astro-sunrise/Changes
URL: http://svn.debian.org/wsvn/trunk/libdatetime-astro-sunrise/Changes?rev=8862&op=file
==============================================================================
--- trunk/libdatetime-astro-sunrise/Changes (added)
+++ trunk/libdatetime-astro-sunrise/Changes Sun Nov  4 22:26:21 2007
@@ -1,0 +1,5 @@
+Revision history for Perl extension DateTime::Astro::Sunrise.
+
+0.01_01  Mon Mar 17 10:01:50 2003
+	- original version; created by Ron Hill
+

Added: trunk/libdatetime-astro-sunrise/MANIFEST
URL: http://svn.debian.org/wsvn/trunk/libdatetime-astro-sunrise/MANIFEST?rev=8862&op=file
==============================================================================
--- trunk/libdatetime-astro-sunrise/MANIFEST (added)
+++ trunk/libdatetime-astro-sunrise/MANIFEST Sun Nov  4 22:26:21 2007
@@ -1,0 +1,7 @@
+Changes
+Makefile.PL
+MANIFEST
+README
+Sunrise.pm
+t/00load.t
+t/01basic.t

Added: trunk/libdatetime-astro-sunrise/Makefile.PL
URL: http://svn.debian.org/wsvn/trunk/libdatetime-astro-sunrise/Makefile.PL?rev=8862&op=file
==============================================================================
--- trunk/libdatetime-astro-sunrise/Makefile.PL (added)
+++ trunk/libdatetime-astro-sunrise/Makefile.PL Sun Nov  4 22:26:21 2007
@@ -1,0 +1,8 @@
+use ExtUtils::MakeMaker;
+# See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# the contents of the Makefile that is written.
+WriteMakefile(
+    'NAME'		=> 'DateTime::Astro::Sunrise',
+    'VERSION_FROM'	=> 'Sunrise.pm', # finds $VERSION
+    'PREREQ_PM'		=> {DateTime =>0.07}, # e.g., Module::Name => 1.1
+);

Added: trunk/libdatetime-astro-sunrise/README
URL: http://svn.debian.org/wsvn/trunk/libdatetime-astro-sunrise/README?rev=8862&op=file
==============================================================================
--- trunk/libdatetime-astro-sunrise/README (added)
+++ trunk/libdatetime-astro-sunrise/README Sun Nov  4 22:26:21 2007
@@ -1,0 +1,29 @@
+DateTime/Astro/Sunrise version 0.01
+===================================
+
+This module will return a DateTime Object for sunrise and sunset for a
+given day.
+
+
+To install this module type the following:
+
+   perl Makefile.PL
+   make
+   make test
+   make install
+
+DEPENDENCIES
+
+This module requires these other modules and libraries:
+
+  DateTime.pm version 0.07 
+
+COPYRIGHT AND LICENCE
+
+Same as perl
+
+Copyright (C) 2003 Ron Hill
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself. 
+

Added: trunk/libdatetime-astro-sunrise/Sunrise.pm
URL: http://svn.debian.org/wsvn/trunk/libdatetime-astro-sunrise/Sunrise.pm?rev=8862&op=file
==============================================================================
--- trunk/libdatetime-astro-sunrise/Sunrise.pm (added)
+++ trunk/libdatetime-astro-sunrise/Sunrise.pm Sun Nov  4 22:26:21 2007
@@ -1,0 +1,647 @@
+package DateTime::Astro::Sunrise;
+
+use strict;
+require Exporter;
+use POSIX;
+use Math::Trig;
+use Carp;
+use DateTime;
+use vars qw( $VERSION $RADEG $DEGRAD @ISA );
+ at ISA       = qw( Exporter );
+$VERSION = qw($Revision: 0.01_01 $) [1];
+$RADEG   = ( 180 / pi );
+$DEGRAD  = ( pi / 180 );
+my $INV360 = ( 1.0 / 360.0 );
+
+my $upper_limb = '1';
+
+sub new {
+    my $class = shift;
+    my %args;
+    $args{LON}  = shift;
+    $args{LAT}  = shift;
+    $args{ALT}  = shift;
+    $args{ITER} = shift;
+    unless ( $args{LON} ) {
+        croak "You need to have a longitude\n";
+    }
+
+    unless ( $args{LAT} ) {
+        croak "You need to have a latitude\n";
+    }
+
+    return bless \%args, $class;
+
+}
+
+sub sunrise {
+    my ( $self, $dt ) = @_;
+
+    my ( $year, $month, $day ) = ( $dt->year, $dt->month, $dt->day );
+    my $altit     = $self->{ALT} || -0.833;
+    my $iteration = defined( $self->{ITER} ) ? $self->{ITER} : 0;
+
+    if ($iteration) {
+
+        # This is the initial start
+
+        my $d =
+          days_since_2000_Jan_0( $year, $month, $day ) + 0.5 - $self->{LON} /
+          360.0;
+        my ( $tmp_rise_1, $tmp_set_1 ) =
+          sun_rise_set( $d, $self->{LON}, $self->{LAT}, $altit,
+          15.04107 );
+
+# Now we have the initial rise/set times next recompute d using the exact moment
+# recompute sunrise
+
+        my $tmp_rise_2 = 9;
+        my $tmp_rise_3 = 0;
+        until ( equal( $tmp_rise_2, $tmp_rise_3, 8 ) ) {
+
+            my $d_sunrise_1 = $d + $tmp_rise_1 / 24.0;
+            ( $tmp_rise_2, undef ) = sun_rise_set(
+              $d_sunrise_1, $self->{LON}, $self->{LAT}, $altit,
+              15.04107
+            );
+            $tmp_rise_1 = $tmp_rise_3;
+            my $d_sunrise_2 = $d + $tmp_rise_2 / 24.0;
+            ( $tmp_rise_3, undef ) = sun_rise_set(
+              $d_sunrise_2, $self->{LON}, $self->{LAT}, $altit,
+              15.04107
+            );
+
+	    #print "tmp_rise2 is: $tmp_rise_2 tmp_rise_3 is:$tmp_rise_3\n";
+
+        }
+
+###################################################################################
+        # end sunrise
+###################################################################################
+
+        my $tmp_set_2 = 9;
+        my $tmp_set_3 = 0;
+
+        until ( equal( $tmp_set_2, $tmp_set_3, 8 ) ) {
+
+            my $d_sunset_1 = $d + $tmp_set_1 / 24.0;
+            ( undef, $tmp_set_2 ) = sun_rise_set(
+              $d_sunset_1, $self->{LON}, $self->{LAT}, $altit,
+              15.04107
+            );
+            $tmp_set_1 = $tmp_set_3;
+            my $d_sunset_2 = $d + $tmp_set_2 / 24.0;
+            ( undef, $tmp_set_3 ) = sun_rise_set(
+              $d_sunset_2, $self->{LON}, $self->{LAT}, $altit,
+              15.04107
+            );
+
+	    #print "tmp_set_1 is: $tmp_set_1 tmp_set_3 is:$tmp_set_3\n";
+
+        }
+
+        my ( $hour_rise, $min_rise, $hour_set, $min_set ) = convert_hour($tmp_rise_3,$tmp_set_3);
+        my $rise_time = DateTime->new(
+          year      => $dt->year,
+          month     => $dt->month,
+          day       => $dt->day,
+          hour      => $hour_rise,
+          minute    => $min_rise,
+          time_zone => 'UTC'
+        );
+        my $set_time = DateTime->new(
+          year      => $dt->year,
+          month     => $dt->month,
+          day       => $dt->day,
+          hour      => $hour_set,
+          minute    => $min_set,
+          time_zone => 'UTC'
+        );
+      return ($rise_time, $set_time); 
+    }
+    else {
+        my $d =
+          days_since_2000_Jan_0( $year, $month, $day ) + 0.5 - $self->{LON} /
+          360.0;
+        my ( $h1, $h2 ) =
+          sun_rise_set( $d, $self->{LON}, $self->{LAT}, $altit, 15.0 );
+        my ( $hour_rise, $min_rise, $hour_set, $min_set ) =
+          convert_hour( $h1, $h2 );
+
+        my $rise_time = DateTime->new(
+          year      => $dt->year,
+          month     => $dt->month,
+          day       => $dt->day,
+          hour      => $hour_rise,
+          minute    => $min_rise,
+          time_zone => 'UTC'
+        );
+        my $set_time = DateTime->new(
+          year      => $dt->year,
+          month     => $dt->month,
+          day       => $dt->day,
+          hour      => $hour_set,
+          minute    => $min_set,
+          time_zone => 'UTC'
+        );
+      return ($rise_time, $set_time);
+    }
+
+}
+
+sub sun_rise_set {
+    my ( $d, $lon, $lat, $altit, $h ) = @_;
+
+    
+    my $sidtime = revolution( GMST0($d) + 180.0 + $lon );
+
+    my ( $sRA, $sdec ) = sun_RA_dec($d);
+    my $tsouth  = 12.0 - rev180( $sidtime - $sRA ) /$h ;
+    my $sradius = 0.2666 / $sRA;
+
+    if ($upper_limb) {
+        $altit -= $sradius;
+    }
+
+    # Compute the diurnal arc that the Sun traverses to reach 
+    # the specified altitude altit: 
+
+    my $cost =
+      ( sind($altit) - sind($lat) * sind($sdec) ) /
+      ( cosd($lat) * cosd($sdec) );
+
+    my $t;
+    if ( $cost >= 1.0 ) {
+        carp "Sun never rises!!\n";
+        $t = 0.0;    # Sun always below altit
+    }
+    elsif ( $cost <= -1.0 ) {
+        carp "Sun never sets!!\n";
+        $t = 12.0;    # Sun always above altit
+    }
+    else {
+        $t = acosd($cost) / 15.0;    # The diurnal arc, hours
+    }
+
+    # Store rise and set times - in hours UT 
+
+    my $hour_rise_ut = $tsouth - $t;
+    my $hour_set_ut  = $tsouth + $t;
+    return ( $hour_rise_ut, $hour_set_ut );
+
+    
+}
+
+#########################################################################################################
+sub GMST0 {
+
+    #
+    #
+    # FUNCTIONAL SEQUENCE for GMST0 
+    #
+    # _GIVEN
+    # Day number
+    #
+    # _THEN
+    #
+    # computes GMST0, the Greenwich Mean Sidereal Time  
+    # at 0h UT (i.e. the sidereal time at the Greenwhich meridian at  
+    # 0h UT).  GMST is then the sidereal time at Greenwich at any     
+    # time of the day..
+    # 
+    #
+    # _RETURN
+    #
+    # Sidtime
+    #
+    my ($d) = @_;
+
+    my $sidtim0 =
+      revolution( ( 180.0 + 356.0470 + 282.9404 ) +
+      ( 0.9856002585 + 4.70935E-5 ) * $d );
+    return $sidtim0;
+
+}
+
+sub sunpos {
+
+    #
+    #
+    # FUNCTIONAL SEQUENCE for sunpos
+    #
+    # _GIVEN
+    #  day number
+    #
+    # _THEN
+    #
+    # Computes the Sun's ecliptic longitude and distance */
+    # at an instant given in d, number of days since     */
+    # 2000 Jan 0.0. 
+    # 
+    #
+    # _RETURN
+    #
+    # ecliptic longitude and distance
+    # ie. $True_solar_longitude, $Solar_distance
+    #
+    my ($d) = @_;
+
+    #                       Mean anomaly of the Sun 
+    #                       Mean longitude of perihelion 
+    #                         Note: Sun's mean longitude = M + w 
+    #                       Eccentricity of Earth's orbit 
+    #                       Eccentric anomaly 
+    #                       x, y coordinates in orbit 
+    #                       True anomaly 
+
+    # Compute mean elements 
+    my $Mean_anomaly_of_sun = revolution( 356.0470 + 0.9856002585 * $d );
+    my $Mean_longitude_of_perihelion = 282.9404 + 4.70935E-5 * $d;
+    my $Eccentricity_of_Earth_orbit  = 0.016709 - 1.151E-9 * $d;
+
+    # Compute true longitude and radius vector 
+    my $Eccentric_anomaly =
+      $Mean_anomaly_of_sun + $Eccentricity_of_Earth_orbit * $RADEG *
+      sind($Mean_anomaly_of_sun) *
+      ( 1.0 + $Eccentricity_of_Earth_orbit * cosd($Mean_anomaly_of_sun) );
+
+    my $x = cosd($Eccentric_anomaly) - $Eccentricity_of_Earth_orbit;
+
+    my $y =
+      sqrt( 1.0 - $Eccentricity_of_Earth_orbit * $Eccentricity_of_Earth_orbit )
+      * sind($Eccentric_anomaly);
+
+    my $Solar_distance = sqrt( $x * $x + $y * $y );    # Solar distance
+    my $True_anomaly = atan2d( $y, $x );               # True anomaly
+
+    my $True_solar_longitude =
+      $True_anomaly + $Mean_longitude_of_perihelion;    # True solar longitude
+
+    if ( $True_solar_longitude >= 360.0 ) {
+        $True_solar_longitude -= 360.0;    # Make it 0..360 degrees
+    }
+
+    return ( $Solar_distance, $True_solar_longitude );
+}
+
+sub sun_RA_dec {
+
+    #
+    #
+    # FUNCTIONAL SEQUENCE for sun_RA_dec 
+    #
+    # _GIVEN
+    # day number, $r and $lon (from sunpos) 
+    #
+    # _THEN
+    #
+    # compute RA and dec
+    # 
+    #
+    # _RETURN
+    #
+    # Sun's Right Ascension (RA) and Declination (dec)
+    # 
+    #
+    my ($d) = @_;
+
+    # Compute Sun's ecliptical coordinates 
+    my ( $r, $lon ) = sunpos($d);
+
+    # Compute ecliptic rectangular coordinates (z=0) 
+    my $x = $r * cosd($lon);
+    my $y = $r * sind($lon);
+
+    # Compute obliquity of ecliptic (inclination of Earth's axis) 
+    my $obl_ecl = 23.4393 - 3.563E-7 * $d;
+
+    # Convert to equatorial rectangular coordinates - x is unchanged 
+    my $z = $y * sind($obl_ecl);
+    $y = $y * cosd($obl_ecl);
+
+    # Convert to spherical coordinates 
+    my $RA  = atan2d( $y, $x );
+    my $dec = atan2d( $z, sqrt( $x * $x + $y * $y ) );
+
+    return ( $RA, $dec );
+
+}    # sun_RA_dec
+
+sub days_since_2000_Jan_0 {
+
+    #
+    #
+    # FUNCTIONAL SEQUENCE for days_since_2000_Jan_0 
+    #
+    # _GIVEN
+    # year, month, day
+    #
+    # _THEN
+    #
+    # process the year month and day (counted in days)
+    # Day 0.0 is at Jan 1 2000 0.0 UT
+    # Note that ALL divisions here should be INTEGER divisions
+    #
+    # _RETURN
+    #
+    # day number
+    #
+    use integer;
+    my ( $year, $month, $day ) = @_;
+
+    my $d =
+      ( 367 * ($year) -
+      int( ( 7 * ( ($year) + ( ( ($month) + 9 ) / 12 ) ) ) / 4 ) +
+      int( ( 275 * ($month) ) / 9 ) + ($day) - 730530 );
+
+    return $d;
+
+}
+
+sub sind {
+    sin( ( $_[0] ) * $DEGRAD );
+}
+
+sub cosd {
+    cos( ( $_[0] ) * $DEGRAD );
+}
+
+sub tand {
+    tan( ( $_[0] ) * $DEGRAD );
+}
+
+sub atand {
+    ( $RADEG * atan( $_[0] ) );
+}
+
+sub asind {
+    ( $RADEG * asin( $_[0] ) );
+}
+
+sub acosd {
+    ( $RADEG * acos( $_[0] ) );
+}
+
+sub atan2d {
+    ( $RADEG * atan2( $_[0], $_[1] ) );
+}
+
+sub revolution {
+
+    #
+    #
+    # FUNCTIONAL SEQUENCE for revolution
+    #
+    # _GIVEN
+    # any angle
+    #
+    # _THEN
+    #
+    # reduces any angle to within the first revolution 
+    # by subtracting or adding even multiples of 360.0
+    # 
+    #
+    # _RETURN
+    #
+    # the value of the input is >= 0.0 and < 360.0
+    #
+
+    my $x = $_[0];
+    return ( $x - 360.0 * floor( $x * $INV360 ) );
+}
+
+sub rev180 {
+
+    #
+    #
+    # FUNCTIONAL SEQUENCE for rev180
+    #
+    # _GIVEN
+    # 
+    # any angle
+    #
+    # _THEN
+    #
+    # Reduce input to within +180..+180 degrees
+    # 
+    #
+    # _RETURN
+    #
+    # angle that was reduced
+    #
+    my ($x) = @_;
+
+    return ( $x - 360.0 * floor( $x * $INV360 + 0.5 ) );
+}
+
+sub equal {
+    my ( $A, $B, $dp ) = @_;
+
+    return sprintf( "%.${dp}g", $A ) eq sprintf( "%.${dp}g", $B );
+}
+
+sub convert_hour {
+
+    #
+    #
+    # FUNCTIONAL SEQUENCE for convert_hour 
+    #
+    # _GIVEN
+    # Hour_rise, Hour_set 
+    # hours are in UT
+    #
+    # _THEN
+    #
+    # split out the hours and minites
+    # 
+    #
+    # _RETURN
+    #
+    # hour:min rise and set 
+    #
+
+    my ( $hour_rise_ut, $hour_set_ut ) = @_;
+
+    my $min_rise = int( ( $hour_rise_ut - int($hour_rise_ut) ) * 60 );
+    my $min_set  = int( ( $hour_set_ut - int($hour_set_ut) ) * 60 );
+
+    my $hour_rise = int($hour_rise_ut);
+    my $hour_set  = int($hour_set_ut);
+    if ( $min_rise < 10 ) {
+        $min_rise = sprintf( "%02d", $min_rise );
+    }
+
+    if ( $min_set < 10 ) {
+        $min_set = sprintf( "%02d", $min_set );
+    }
+
+    return ( $hour_rise, $min_rise, $hour_set, $min_set );
+}
+=head1 NAME
+
+DateTime::Astro::Sunrise - Perl DateTime extension for computing the sunrise/sunset on a given day
+
+=head1 SYNOPSIS
+ use DateTime;
+ use DateTime::Astro::Sunrise;
+ 
+ my $dt = DateTime->new( year   => 2000,
+                         month  => 6,
+                         day    => 20,
+                  );
+
+my $sunrise = DateTime::Astro::Sunrise ->new('-118','33',undef,1);
+
+my ($tmp_rise, $tmp_set) = $sunrise->sunrise($dt); 
+ 
+ 
+=head1 DESCRIPTION
+
+This module will return a DateTime Object for sunrise and sunset for a given day.
+
+=head1 USAGE
+
+=over
+
+=item B<my $sunrise = DateTime::Astro::Sunrise ->new(longitutide,latatude,ALT,Iteration);>
+
+=over
+ Eastern longitude is entered as a positive number
+ Western longitude is entered as a negative number
+ Northern latitude is entered as a positive number
+ Southern latitude is entered as a negative number
+
+inter is set to either 0 or 1.
+If set to 0 no Iteration will occur.
+If set to 1 Iteration will occur.
+Default is 0.
+
+There are a number of sun altitides to chose from.  The default is
+-0.833 because this is what most countries use. Feel free to
+specify it if you need to. Here is the list of values to specify
+altitude (ALT) with:
+
+=over
+
+=item B<0> degrees
+
+Center of Sun's disk touches a mathematical horizon
+
+=item B<-0.25> degrees
+
+Sun's upper limb touches a mathematical horizon
+
+=item B<-0.583> degrees
+
+Center of Sun's disk touches the horizon; atmospheric refraction accounted for
+
+=item B<-0.833> degrees
+
+Sun's supper limb touches the horizon; atmospheric refraction accounted for
+
+=item B<-6> degrees
+
+Civil twilight (one can no longer read outside without artificial illumination)
+
+=item B<-12> degrees
+
+Nautical twilight (navigation using a sea horizon no longer possible)
+
+=item B<-15> degrees
+
+Amateur astronomical twilight (the sky is dark enough for most astronomical observations)
+
+=item B<-18> degrees
+
+Astronomical twilight (the sky is completely dark)
+
+=item F<Notes on Iteration>
+
+=over
+
+The orginal method only gives an approximate value of the Sun's rise/set times. 
+The error rarely exceeds one or two minutes, but at high latitudes, when the Midnight Sun 
+soon will start or just has ended, the errors may be much larger. If you want higher accuracy, 
+you must then use the iteration feature. This feature is new as of version 0.7. Here is
+what I have tried to accomplish with this.
+
+a) Compute sunrise or sunset as always, with one exception: to convert LHA from degrees to hours,
+   divide by 15.04107 instead of 15.0 (this accounts for the difference between the solar day 
+   and the sidereal day.
+
+b) Re-do the computation but compute the Sun's RA and Decl, and also GMST0, for the moment 
+   of sunrise or sunset last computed.
+
+c) Iterate b) until the computed sunrise or sunset no longer changes significantly. 
+   Usually 2 iterations are enough, in rare cases 3 or 4 iterations may be needed.
+
+
+
+=back
+
+=back
+
+=head1 ($sunrise, $sunset) = $sunrise->($dt);
+
+
+Returns two DateTime objects sunrise and sunset.
+Please note that the time zone for these objects
+is set to UTC. So don't forget to set your timezone!!
+
+
+
+=head1 AUTHOR
+
+Ron Hill
+rkhill at firstlight.net
+
+=head1 CREDITS
+
+
+=item  Paul Schlyer, Stockholm, Sweden 
+
+for his excellent web page on the subject.
+
+=item Rich Bowen (rbowen at rbowen.com)
+
+for suggestions
+
+=head1 COPYRIGHT and LICENSE
+
+Here is the copyright information provided by Paul Schlyer:
+
+Written as DAYLEN.C, 1989-08-16
+
+Modified to SUNRISET.C, 1992-12-01
+
+(c) Paul Schlyter, 1989, 1992
+
+Released to the public domain by Paul Schlyter, December 1992
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+=head1 BUGS
+
+=head1 SEE ALSO
+
+perl(1).
+
+=cut
+1;
+

Added: trunk/libdatetime-astro-sunrise/t/00load.t
URL: http://svn.debian.org/wsvn/trunk/libdatetime-astro-sunrise/t/00load.t?rev=8862&op=file
==============================================================================
--- trunk/libdatetime-astro-sunrise/t/00load.t (added)
+++ trunk/libdatetime-astro-sunrise/t/00load.t Sun Nov  4 22:26:21 2007
@@ -1,0 +1,9 @@
+use strict;
+use Test;
+
+BEGIN {$| = 1; plan tests => 1 }
+use DateTime;
+use DateTime::Astro::Sunrise;
+my $loaded = 1;
+ok($loaded);
+

Added: trunk/libdatetime-astro-sunrise/t/01basic.t
URL: http://svn.debian.org/wsvn/trunk/libdatetime-astro-sunrise/t/01basic.t?rev=8862&op=file
==============================================================================
--- trunk/libdatetime-astro-sunrise/t/01basic.t (added)
+++ trunk/libdatetime-astro-sunrise/t/01basic.t Sun Nov  4 22:26:21 2007
@@ -1,0 +1,21 @@
+use strict;
+use Test;
+use DateTime;
+use DateTime::Astro::Sunrise;
+
+BEGIN { plan tests => 2 }
+my $dt = DateTime->new( year   => 2000,
+		 month  => 6,
+		 day    => 20,
+                  );
+
+my $sunrise = DateTime::Astro::Sunrise ->new('-118','33');
+
+my ($tmp_rise, $tmp_set) = $sunrise->sunrise($dt);
+$tmp_rise->set_time_zone( 'America/Los_Angeles' );
+$tmp_set->set_time_zone('America/Los_Angeles' );
+
+# test 1
+ok ($tmp_rise->hms eq '05:43:00');
+# test 2
+ok ($tmp_set->hms eq '20:03:00');




More information about the Pkg-perl-cvs-commits mailing list