update the Bool attribute helper to be a trait
[gitmo/MooseX-AttributeHelpers.git] / t / 208_trait_bool.t
diff --git a/t/208_trait_bool.t b/t/208_trait_bool.t
new file mode 100644 (file)
index 0000000..4c0e36d
--- /dev/null
@@ -0,0 +1,42 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 8;
+use MooseX::AttributeHelpers;
+
+{
+    package Room;
+    use Moose;
+    has 'is_lit' => (
+        traits    => ['Bool'],
+        is        => 'rw',
+        isa       => 'Bool',
+        default   => sub { 0 },
+        provides  => {
+            set     => 'illuminate',
+            unset   => 'darken',
+            toggle  => 'flip_switch',
+            not     => 'is_dark'
+        }
+    )
+}
+
+my $room = Room->new;
+$room->illuminate;
+ok $room->is_lit, 'set is_lit to 1 using ->illuminate';
+ok !$room->is_dark, 'check if is_dark does the right thing';
+
+$room->darken;
+ok !$room->is_lit, 'set is_lit to 0 using ->darken';
+ok $room->is_dark, 'check if is_dark does the right thing';
+
+$room->flip_switch;
+ok $room->is_lit, 'toggle is_lit back to 1 using ->flip_switch';
+ok !$room->is_dark, 'check if is_dark does the right thing';
+
+$room->flip_switch;
+ok !$room->is_lit, 'toggle is_lit back to 0 again using ->flip_switch';
+ok $room->is_dark, 'check if is_dark does the right thing';
+