]> git.vpit.fr Git - perl/modules/Bit-MorseSignals.git/blobdiff - t/20-emitter-obj.t
Switch to qw<>
[perl/modules/Bit-MorseSignals.git] / t / 20-emitter-obj.t
index b405700be4d27133ac337f538c389039a172c906..969502e228afe63b365d8d695f8d15246ca7325c 100644 (file)
@@ -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;
+my $deuce = Bit::MorseSignals::Emitter->new;
 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 = Bit::MorseSignals::Emitter->new(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');