Badger
view release on metacpan or search on metacpan
t/core/utils.t view on Meta::CPAN
}
#-----------------------------------------------------------------------
# test textlike
#-----------------------------------------------------------------------
ok( textlike 'hello', 'string is textlike' );
ok( textlike $selfish, 'selfish object is textlike' );
ok( ! textlike $obj, 'object is not textlike' );
ok( ! textlike [10], 'list is not textlike' );
ok( ! textlike sub { 'foo' }, 'sub is not textlike' );
#-----------------------------------------------------------------------
# test xprintf()
#-----------------------------------------------------------------------
is( xprintf('The %s sat on the %s', 'cat', 'mat'),
'The cat sat on the mat', 'xprintf s s' );
is( xprintf('The %1$s sat on the %2$s', 'cat', 'mat'),
'The cat sat on the mat', 'xprintf 1 2' );
is( xprintf('The %2$s sat on the %1$s', 'cat', 'mat'),
'The mat sat on the cat', 'xprintf 2 1' );
is( xprintf('The <2> sat on the <1>', 'cat', 'mat'),
'The mat sat on the cat', 'xprintf <2> <1>' );
is( xprintf('The <1:s> sat on the <2:s>', 'cat', 'mat'),
'The cat sat on the mat', 'xprintf <1:s> <2:s>' );
is( xprintf('The <1:5s> sat on the <2:5s>', 'cat', 'mat'),
'The cat sat on the mat', 'xprintf <1:5s> <2:5s>' );
is( xprintf('The <1:-5s> sat on the <2:-5s>', 'cat', 'mat'),
'The cat sat on the mat ', 'xprintf <1:-5s> <2:-5s>' );
is( xprintf('<1> is <2:4.3f>', pi => 3.1415926),
'pi is 3.142', 'pi is 3.142' );
is( xprintf('<1> is <2:4.3f>', e => 2.71828),
'e is 2.718', 'pi is 2.718' );
is( xprintf("<1><2| by ?>", 'one'),
'one', 'one' );
is( xprintf("<1><2| by ?>", 'one', 'two'),
'one by two', 'one by two' );
is( xprintf("<1><2| by ? by ?>", 'one', 'two'),
'one by two by two', 'one by two by two' );
#-----------------------------------------------------------------------
# test we can import utility functions from Scalar::Util, List::Util,
# List::MoreUtils and Hash::Util.
#-----------------------------------------------------------------------
use Badger::Utils 'reftype looks_like_number numlike first max lock_hash';
my $object = bless [ ], 'Badger::Test::Object';
is( reftype $object, 'ARRAY', 'reftype imported' );
ok( looks_like_number 23, 'looks_like_number imported' );
ok( numlike 42, 'numlike imported' );
my @items = (10, 22, 33, 42);
my $first = first { $_ > 25 } @items;
is( $first, 33, 'list first imported' );
my $max = max 2.718, 3.14, 1.618;
is( $max, 3.14, 'list max imported' );
my %hash = (x => 10);
lock_hash(%hash);
ok( ! eval { $hash{x} = 20 }, 'could not modify read-only hash' );
like( $@, qr/Modification of a read-only value attempted/, 'got read-only error' );
#-----------------------------------------------------------------------
# Import from Badger::Timestamp
#-----------------------------------------------------------------------
use Badger::Utils 'Timestamp Now';
my $ts = Now;
is( ref $ts, 'Badger::Timestamp', 'Now is a Badger::Timestamp' );
$ts = Timestamp('2009/05/25 11:31:00');
is( ref $ts, 'Badger::Timestamp', 'Timestamp returned a Badger::Timestamp' );
is( $ts->year, 2009, 'got timestamp year' );
is( $ts->month, 5, 'got timestamp month' );
is( $ts->day, 25, 'got timestamp day' );
#-----------------------------------------------------------------------
# Import from Badger::Date
#-----------------------------------------------------------------------
use Badger::Utils 'Date Today';
my $date = Today;
is( ref $date, 'Badger::Date', 'Today is a Badger::Date' );
$date = Date('2015/04/05');
is( ref $date, 'Badger::Date', 'Date returned a Badger::Date' );
is( $date->year, 2015, 'got date year' );
is( $date->month, 4, 'got date month' );
is( $date->day, 5, 'got date day' );
#-----------------------------------------------------------------------
# Import from Badger::Logic
#-----------------------------------------------------------------------
use Badger::Utils 'Logic';
my $logic = Logic('cheese and biscuits');
ok( blessed $logic && $logic->isa('Badger::Logic'), 'Logic returned a Badger::Logic object' );
#-----------------------------------------------------------------------
# Import from Badger::Filesystem
#-----------------------------------------------------------------------
( run in 0.988 second using v1.01-cache-2.11-cpan-364913b4093 )