#!/usr/bin/perl
use strict;
use Test::More 'no_plan';
use_ok( 'Brick::General' );
use_ok( 'Brick::Bucket' );
use lib qw( t/lib );
use_ok( 'Mock::Bucket' );
my $bucket = Mock::Bucket->new;
isa_ok( $bucket, 'Mock::Bucket' );
isa_ok( $bucket, Mock::Bucket->bucket_class );
can_ok( $bucket, '_is_tuesday' );
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# WORKS - overriding localtime
{
my $sub = $bucket->_is_tuesday();
isa_ok( $sub, ref sub {}, "_is_tuesday returns a code ref" );
{
package Brick::Bucket;
use subs qw(localtime);
sub localtime (;$) { qw( 0 0 0 0 0 0 2 ) };
package main;
use subs qw(localtime);
sub localtime (;$) { qw( 0 0 0 0 0 0 2 ) };
is( (localtime)[6], 2, "Overrode localtime" );
# How do I test this?
my $result = eval { $sub->() };
ok( $result, "Passed" );
}
}
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# FAILS - overriding localtime
{
my $sub = $bucket->_is_tuesday();
isa_ok( $sub, ref sub {}, "_is_tuesday returns a code ref" );
{
no warnings 'redefine';
*Brick::Bucket::localtime = sub (;$) { qw( 0 0 0 0 0 0 3 ) };
*localtime = sub (;$) { qw( 0 0 0 0 0 0 3 ) };
is( (localtime)[6], 3, "Overrode localtime" );
# How do I test this?
my $result = eval { $sub->() };
is( $result, 0, "Failed (expected)" );
}
}