#!perl -T use strict; use warnings; use Test::More tests => 28; BEGIN { use_ok('String::Truncate'); } package String::Truncate::ELIDE; eval { String::Truncate->import(qw(elide)); }; main::ok(__PACKAGE__->can('elide'), "elide is exported on request"); main::ok(!__PACKAGE__->can('trunc'), "trunc is not exported sans request"); package String::Truncate::TRUNC; String::Truncate->import(qw(trunc)); main::ok(__PACKAGE__->can('trunc'), "trunc is exported on request"); main::ok(!__PACKAGE__->can('elide'), "elide is not exported sans request"); package String::Truncate::BOTH; String::Truncate->import(qw(trunc elide)); main::ok(__PACKAGE__->can('trunc'), "trunc is exported on request"); main::ok(__PACKAGE__->can('elide'), "elide is exported on request"); package String::Truncate::ALL; eval { String::Truncate->import(qw(:all)); }; main::ok(__PACKAGE__->can('trunc'), "trunc is exported for ':all'"); main::ok(__PACKAGE__->can('elide'), "elide is exported for ':all'"); package String::Truncate::JUNK; eval { String::Truncate->import(qw(huggalugga)); }; main::like( $@, qr/"huggalugga" is not exported by the String::Truncate module/, "don't accept bogus exports" ); package String::Truncate::DEFAULT_ELIDE; String::Truncate->import(elide => defaults => { marker => '--', length => 10 }); main::ok(__PACKAGE__->can('elide'), "elide is exported on request"); main::ok(!__PACKAGE__->can('trunc'), "trunc is not exported sans request"); main::is( elide("123456789ABCDEF"), "12345678--", "elide with default marker/length", ); package String::Truncate::DEFAULT_TRUNC; String::Truncate->import( trunc => defaults => { truncate => 'left', length => 10 } ); main::ok(__PACKAGE__->can('trunc'), "trunc is exported on request"); main::ok(!__PACKAGE__->can('elide'), "elide is not exported sans request"); main::is( trunc("123456789ABCDEF"), "6789ABCDEF", "trunc with default truncate/length", ); package String::Truncate::DEFAULT_ALL; String::Truncate->import( ':all' => defaults => { truncate => 'left', length => 10, marker => '--' } ); main::ok(__PACKAGE__->can('trunc'), "trunc is exported on request"); main::ok(__PACKAGE__->can('elide'), "elide is exported on request"); main::is( elide("123456789ABCDEF"), "--89ABCDEF", "elide with default truncate/length", ); main::is( elide("123456789ABCDEF", 11), "--789ABCDEF", "elide with overridden default length", ); main::is( elide("123456789ABCDEF", undef, { truncate => 'right' }), "12345678--", "elide with overridden default truncate", ); main::is( trunc("123456789ABCDEF"), "6789ABCDEF", "trunc with default truncate/length", ); package String::Truncate::DEFAULT_ARG; String::Truncate->import( -all => { truncate => 'left', length => 10, marker => '--' } ); main::ok(__PACKAGE__->can('trunc'), "trunc is exported on request"); main::ok(__PACKAGE__->can('elide'), "elide is exported on request"); main::is( elide("123456789ABCDEF"), "--89ABCDEF", "elide with default truncate/length", ); main::is( elide("123456789ABCDEF", 11), "--789ABCDEF", "elide with overridden default length", ); main::is( elide("123456789ABCDEF", undef, { truncate => 'right' }), "12345678--", "elide with overridden default truncate", ); main::is( trunc("123456789ABCDEF"), "6789ABCDEF", "trunc with default truncate/length", );