summaryrefslogtreecommitdiff
path: root/t/ivms.t
diff options
context:
space:
mode:
Diffstat (limited to 't/ivms.t')
-rw-r--r--t/ivms.t82
1 files changed, 82 insertions, 0 deletions
diff --git a/t/ivms.t b/t/ivms.t
new file mode 100644
index 0000000..0c92890
--- /dev/null
+++ b/t/ivms.t
@@ -0,0 +1,82 @@
+use warnings;
+use strict;
+
+use Test::More tests => 140;
+
+BEGIN { use_ok "Module::Runtime", qw(
+ $top_module_spec_rx $sub_module_spec_rx
+ is_module_spec is_valid_module_spec check_module_spec
+); }
+
+ok \&is_valid_module_spec == \&is_module_spec;
+
+foreach my $spec (
+ undef,
+ *STDOUT,
+ \"Foo",
+ [],
+ {},
+ sub{},
+) {
+ ok(!is_module_spec(0, $spec), "non-string is bad (function)");
+ eval { check_module_spec(0, $spec) }; isnt $@, "";
+ ok(!is_module_spec(1, $spec), "non-string is bad (function)");
+ eval { check_module_spec(1, $spec) }; isnt $@, "";
+}
+
+foreach my $spec (qw(
+ Foo
+ foo::bar
+ foo::123::x_0
+ foo/bar
+ foo/123::x_0
+ foo::123/x_0
+ foo/123/x_0
+ /Foo
+ /foo/bar
+ ::foo/bar
+)) {
+ ok(is_module_spec(0, $spec), "`$spec' is always good (function)");
+ eval { check_module_spec(0, $spec) }; is $@, "";
+ ok($spec =~ qr/\A$top_module_spec_rx\z/,
+ "`$spec' is always good (regexp)");
+ ok(is_module_spec(1, $spec), "`$spec' is always good (function)");
+ eval { check_module_spec(1, $spec) }; is $@, "";
+ ok($spec =~ qr/\A$sub_module_spec_rx\z/,
+ "`$spec' is always good (regexp)");
+}
+
+foreach my $spec (qw(
+ foo'bar
+ IO::
+ foo::::bar
+ /foo/
+ /1foo
+ ::foo::
+ ::1foo
+)) {
+ ok(!is_module_spec(0, $spec), "`$spec' is always bad (function)");
+ eval { check_module_spec(0, $spec) }; isnt $@, "";
+ ok($spec !~ qr/\A$top_module_spec_rx\z/,
+ "`$spec' is always bad (regexp)");
+ ok(!is_module_spec(1, $spec), "`$spec' is always bad (function)");
+ eval { check_module_spec(1, $spec) }; isnt $@, "";
+ ok($spec !~ qr/\A$sub_module_spec_rx\z/,
+ "`$spec' is always bad (regexp)");
+}
+
+foreach my $spec (qw(
+ 1foo
+ 0/1
+)) {
+ ok(!is_module_spec(0, $spec), "`$spec' needs a prefix (function)");
+ eval { check_module_spec(0, $spec) }; isnt $@, "";
+ ok($spec !~ qr/\A$top_module_spec_rx\z/,
+ "`$spec' needs a prefix (regexp)");
+ ok(is_module_spec(1, $spec), "`$spec' needs a prefix (function)");
+ eval { check_module_spec(1, $spec) }; is $@, "";
+ ok($spec =~ qr/\A$sub_module_spec_rx\z/,
+ "`$spec' needs a prefix (regexp)");
+}
+
+1;