Provided by: libtest-mocktime-datecalc-perl_7+ds-2_all bug

NAME

       Test::MockTime::DateCalc -- fake time for Date::Calc functions

SYNOPSIS

        use Test::MockTime;
        use Test::MockTime::DateCalc; # before Date::Calc loads
        # ...
        use My::Module::Using::Date::Calc;

DESCRIPTION

       "Test::MockTime::DateCalc" arranges for the functions in "Date::Calc" to follow the Perl
       level "time()" function (see perlfunc) and in particular any fake date/time set there by
       "Test::MockTime".  The following "Date::Calc" functions are changed

           System_Clock
           Today
           Now
           Today_and_Now
           This_Year

           Gmtime
           Localtime
           Timezone
           Time_to_Date

       "Gmtime", "Localtime", "Timezone" and "Time_to_Date" are made to default to the Perl-level
       current "time()".  When called with an explicit time argument, they're unchanged.

   Module Load Order
       "Test::MockTime" or similar fakery must be loaded first, before anything with a "time()"
       call, which includes "Test::MockTime::DateCalc".  This is the same as for any
       "CORE::GLOBAL" override, see "OVERRIDING CORE FUNCTIONS" in CORE.

       "Test::MockTime::DateCalc" must be loaded before "Date::Calc".  If "Date::Calc" is already
       loaded then its functions might have been imported into other modules and such imports are
       not affected by the redefinitions made.  For that reason, "Test::MockTime::DateCalc"
       demands it be the one to load "Date::Calc" for the first time.  Usually this simply means
       having "Test::MockTime::DateCalc" at the start of a test script, before the things you're
       going to test.

           use strict;
           use warnings;
           use Test::MockTime ':all';
           use Test::MockTime::DateCalc;

           use My::Foo::Bar;

           set_fixed_time('1981-01-01T00:00:00Z');
           is (My::Foo::Bar::something(), 1981);
           restore_time();

       In a test script, it's often good to have your own modules early to check they correctly
       load their pre-requisites.  You might want a separate test script for that so as not to
       accidentally rely on "Test::MockTime::DateCalc" loading "Date::Calc".

   Other Faking Modules
       "Test::MockTime::DateCalc" can be used with other modules which mangle the Perl-level
       "time" too.  For example "Time::Fake",

           use Time::Fake;                # fakery first
           use Test::MockTime::DateCalc;

       Or "Time::Mock",

           use Time::Mock;                # fakery first
           use Test::MockTime::DateCalc;

       "Time::Warp" (as of version 0.5) only exports a new "time", it's not a core override and
       so can't be used with "Test::MockTime::DateCalc".

SEE ALSO

       Date::Calc, Test::MockTime, Time::Fake, Time::Mock

       faketime(1)

HOME PAGE

       http://user42.tuxfamily.org/test-mocktime-datecalc/index.html

COPYRIGHT

       Copyright 2009, 2010, 2011, 2019 Kevin Ryde

       Test-MockTime-DateCalc is free software; you can redistribute it and/or modify it under
       the terms of the GNU General Public License as published by the Free Software Foundation;
       either version 3, or (at your option) any later version.

       Test-MockTime-DateCalc is distributed in the hope that it will be useful, but WITHOUT ANY
       WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
       PURPOSE.  See the GNU General Public License for more details.

       You should have received a copy of the GNU General Public License along with Test-
       MockTime-DateCalc.  If not, see <http://www.gnu.org/licenses/>.