X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FBit-MorseSignals.git;a=blobdiff_plain;f=t%2F20-emitter-obj.t;h=1c253825cf31b37a123d7d4abfd1036227fd7276;hp=b405700be4d27133ac337f538c389039a172c906;hb=d4cad38280f090c2057f4df1d6ef1fce88ccbcc6;hpb=8ce9fd9d5f4e6197d1a33a3fd11953cc1dc3b31f diff --git a/t/20-emitter-obj.t b/t/20-emitter-obj.t index b405700..1c25382 100644 --- a/t/20-emitter-obj.t +++ b/t/20-emitter-obj.t @@ -3,15 +3,32 @@ use strict; use warnings; -use Test::More tests => 3; +use Test::More tests => 25; use Bit::MorseSignals::Emitter; my $deuce = new Bit::MorseSignals::Emitter; ok(defined $deuce, 'BME object is defined'); -ok(ref $deuce eq 'Bit::MorseSignals::Emitter', 'BME object is valid'); +is(ref $deuce, 'Bit::MorseSignals::Emitter', 'BME object is valid'); + +my $deuce2 = $deuce->new; +ok(defined $deuce2, 'BME::new called as an object method works' ); +is(ref $deuce2, 'Bit::MorseSignals::Emitter', 'BME::new called as an object method works is valid'); +ok(!defined Bit::MorseSignals::Emitter::new(), 'BME::new called without a class is invalid'); + +eval { $deuce2 = new Bit::MorseSignals::Emitter qw/a b c/ }; +like($@, qr/Optional\s+arguments/, 'BME::new gets parameters as key => value pairs'); my $fake = { }; bless $fake, 'Bit::MorseSignal::Hlagh'; -eval { Bit::MorseSignals::Emitter::reset($fake) }; -ok($@ && $@ =~ /^First\s+argument/, "BME methods only apply to BME objects"); +for (qw/post pop len pos reset flush busy queued/) { + eval "Bit::MorseSignals::Emitter::$_('Bit::MorseSignals::Emitter')"; + like($@, qr/^First\s+argument/, "BME::$_ isn't a class method"); + eval "Bit::MorseSignals::Emitter::$_(\$fake)"; + like($@, qr/^First\s+argument/, "BME::$_ only applies to BME objects"); +} + +eval { $deuce->post('foo', qw/a b c/) }; +like($@, qr/Optional\s+arguments/, 'BME::post gets parameters after the first as key => value pairs'); +ok(!defined($deuce->post(sub { 1 })), 'BME::post doesn\'t take CODE references'); +ok(!defined($deuce->post(\*STDERR)), 'BME::post doesn\'t take GLOB references');