Import Moose/t/010_basics/*.t
[gitmo/Mouse.git] / t / 010_basics / 009_import_unimport.t
diff --git a/t/010_basics/009_import_unimport.t b/t/010_basics/009_import_unimport.t
new file mode 100755 (executable)
index 0000000..373eb2b
--- /dev/null
@@ -0,0 +1,75 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 41;
+
+
+my @moose_exports = qw(
+    extends with
+    has
+    before after around
+    override
+    augment
+    super inner
+);
+
+{
+    package Foo;
+
+    eval 'use Mouse';
+    die $@ if $@;
+}
+
+can_ok('Foo', $_) for @moose_exports;
+
+{
+    package Foo;
+
+    eval 'no Mouse';
+    die $@ if $@;
+}
+
+ok(!Foo->can($_), '... Foo can no longer do ' . $_) for @moose_exports;
+
+# and check the type constraints as well
+
+my @moose_type_constraint_exports = qw(
+    type subtype as where message
+    coerce from via
+    enum
+    find_type_constraint
+);
+
+{
+    package Bar;
+
+    eval 'use Mouse::Util::TypeConstraints';
+    die $@ if $@;
+}
+
+can_ok('Bar', $_) for @moose_type_constraint_exports;
+
+{
+    package Bar;
+
+    eval 'no Mouse::Util::TypeConstraints';
+    die $@ if $@;
+}
+
+{
+    local $TODO = 'Mouse::Util::TypeConstraints->unimport is not yet supported';
+    ok(!Bar->can($_), '... Bar can no longer do ' . $_) for @moose_type_constraint_exports;
+}
+
+{
+    package Baz;
+
+    use Scalar::Util qw( blessed );
+    use Mouse;
+
+    no Mouse;
+}
+
+can_ok( 'Baz', 'blessed' );