#!/usr/bin/perl use strict; use warnings; use Test::More tests => 8; use Test::Warn; use Text::Sprintf::Named; my $obj; # TEST $obj = Text::Sprintf::Named->new( { fmt => 'No Tokens Here!', } ); warnings_are { $obj->format() }[], 'No Tokens and No Parameters'; # TEST $obj = Text::Sprintf::Named->new( { fmt => "Example >%(name)s<", } ); warning_like { $obj->format() } qr/Token 'name'/, 'Missing Token Throws Warning ( String )'; # TEST $obj = Text::Sprintf::Named->new( { fmt => "Example >%(foo)8.3f<", } ); warnings_like { $obj->format() }[ qr/Token 'foo'/, qr/numeric.*sprintf/ ], 'Missing Token Throws Warning ( Float )'; no warnings 'Text::Sprintf::Named'; # TEST $obj = Text::Sprintf::Named->new( { fmt => 'No Tokens Here!', } ); warnings_are { $obj->format() }[], 'No Tokens and No Parameters'; # TEST $obj = Text::Sprintf::Named->new( { fmt => "Example >%(name)s<", } ); warnings_are { $obj->format() }[], '[Silent] Missing Token Throws Warning ( String )'; # TEST $obj = Text::Sprintf::Named->new( { fmt => "Example >%(foo)8.3f<", } ); warnings_like { $obj->format() }[qr/numeric.*sprintf/], '[Subdued] Missing Token Throws Warning ( Float )'; # TEST $obj = Text::Sprintf::Named->new( { fmt => '.' } ); use warnings 'Text::Sprintf::Named'; warning_like { $obj->format( { erroneous_parameter => 'this one', more_error => 'this', this_will_never => 'work', } ); } qr/Format parameters were specified, but none/, 'Weird Format Parameters Throws Warning'; # TEST no warnings 'Text::Sprintf::Named'; warnings_are { $obj->format( { erroneous_parameter => 'this one', more_error => 'this', this_will_never => 'work', } ); } [], '[Silenced] Weird Format Parameters Throws Warning';