diff options
Diffstat (limited to 't/ivms.t')
-rw-r--r-- | t/ivms.t | 82 |
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; |