16fb12b70Safresh1#! /usr/local/perl -w
26fb12b70Safresh1# Before `make install' is performed this script should be runnable with
36fb12b70Safresh1# `make test'. After `make install' it should work as `perl test.pl'
46fb12b70Safresh1
56fb12b70Safresh1#########################
66fb12b70Safresh1
76fb12b70Safresh1use Test::More qw/no_plan/;
86fb12b70Safresh1
96fb12b70Safresh1# do strict lax tests in a sub to isolate a package to test importing
106fb12b70Safresh1SKIP: {
116fb12b70Safresh1    skip 'No extended regexes Perl < 5.006', 174
126fb12b70Safresh1	if $] < 5.006_000;
136fb12b70Safresh1    strict_lax_tests();
146fb12b70Safresh1    is ref($version::LAX), 'Regexp', 'Can see $version::LAX '.$version::LAX ;
156fb12b70Safresh1    is ref($version::STRICT), 'Regexp', 'Can see $version::STRICT '.$version::STRICT;
165759b3d2Safresh1    { # https://rt.cpan.org/Ticket/Display.html?id=114712
175759b3d2Safresh1        my ($v) = ( "snapshot-1.2.3ga-001-432" =~ /($version::LAX)/ );
185759b3d2Safresh1        is $v, '1.2.3', "Extract just the version: $v";
195759b3d2Safresh1        ($v) = ( "snapshot-1.2ga-001-432" =~ /($version::LAX)/ );
205759b3d2Safresh1        is $v, '1.2', "Extract just the version: $v";
215759b3d2Safresh1        ($v) = ( "snapshot-v1.2.3ga-001-432" =~ /($version::STRICT)/ );
225759b3d2Safresh1        is $v, 'v1.2.3', "Extract just the version: $v";
235759b3d2Safresh1    }
245759b3d2Safresh1
255759b3d2Safresh1    is ref($version::LAX_DECIMAL_VERSION), 'Regexp', 'Can see $version::LAX_DECIMAL_VERSION '.$version::LAX_DECIMAL_VERSION ;
265759b3d2Safresh1    is ref($version::LAX_DOTTED_DECIMAL_VERSION), 'Regexp', 'Can see $version::LAX_DOTTED_DECIMAL_VERSION '.$version::LAX_DOTTED_DECIMAL_VERSION ;
275759b3d2Safresh1    is ref($version::STRICT_DECIMAL_VERSION), 'Regexp', 'Can see $version::STRICT_DECIMAL_VERSION '.$version::STRICT_DECIMAL_VERSION;
285759b3d2Safresh1    is ref($version::STRICT_DOTTED_DECIMAL_VERSION), 'Regexp', 'Can see $version::STRICT_DOTTED_DECIMAL_VERSION '.$version::STRICT_DOTTED_DECIMAL_VERSION;
295759b3d2Safresh1    { # https://rt.cpan.org/Ticket/Display.html?id=119669
305759b3d2Safresh1        ($v) = ( "snapshot-1.2.3ga-001-432" =~ /($version::LAX_DOTTED_DECIMAL_VERSION)/ );
315759b3d2Safresh1        is $v, '1.2.3', "Extract just the version: $v";
325759b3d2Safresh1        ($v) = ( "snapshot-1.2ga-001-432" =~ /($version::LAX_DECIMAL_VERSION)/ );
335759b3d2Safresh1        is $v, '1.2', "Extract just the version: $v";
345759b3d2Safresh1        ($v) = ( "snapshot-v1.2.3ga-001-432" =~ /($version::STRICT_DOTTED_DECIMAL_VERSION)/ );
355759b3d2Safresh1        is $v, 'v1.2.3', "Extract just the version: $v";
365759b3d2Safresh1        ($v) = ( "snapshot-1.2ga-001-432" =~ /($version::STRICT_DECIMAL_VERSION)/ );
375759b3d2Safresh1        is $v, '1.2', "Extract just the version: $v";
385759b3d2Safresh1      }
396fb12b70Safresh1}
406fb12b70Safresh1
416fb12b70Safresh1
426fb12b70Safresh1sub strict_lax_tests {
436fb12b70Safresh1  package temp12345;
446fb12b70Safresh1  # copied from perl core test t/op/packagev.t
456fb12b70Safresh1  # format: STRING STRICT_OK LAX_OK
466fb12b70Safresh1  my $strict_lax_data = << 'CASE_DATA';
476fb12b70Safresh11.00		pass	pass
486fb12b70Safresh11.00001		pass	pass
496fb12b70Safresh10.123		pass	pass
506fb12b70Safresh112.345		pass	pass
516fb12b70Safresh142		pass	pass
526fb12b70Safresh10		pass	pass
536fb12b70Safresh10.0		pass	pass
546fb12b70Safresh1v1.2.3		pass	pass
556fb12b70Safresh1v1.2.3.4	pass	pass
566fb12b70Safresh1v0.1.2		pass	pass
576fb12b70Safresh1v0.0.0		pass	pass
586fb12b70Safresh101		fail	pass
596fb12b70Safresh101.0203		fail	pass
606fb12b70Safresh1v01		fail	pass
616fb12b70Safresh1v01.02.03	fail	pass
626fb12b70Safresh1.1		fail	pass
636fb12b70Safresh1.1.2		fail	pass
646fb12b70Safresh11.		fail	pass
656fb12b70Safresh11.a		fail	fail
666fb12b70Safresh11._		fail	fail
676fb12b70Safresh11.02_03		fail	pass
686fb12b70Safresh1v1.2_3		fail	pass
696fb12b70Safresh1v1.02_03	fail	pass
706fb12b70Safresh1v1.2_3_4	fail	fail
716fb12b70Safresh1v1.2_3.4	fail	fail
726fb12b70Safresh11.2_3.4		fail	fail
736fb12b70Safresh10_		fail	fail
746fb12b70Safresh11_		fail	fail
756fb12b70Safresh11_.		fail	fail
766fb12b70Safresh11.1_		fail	fail
776fb12b70Safresh11.02_03_04	fail	fail
786fb12b70Safresh11.2.3		fail	pass
796fb12b70Safresh1v1.2		fail	pass
806fb12b70Safresh1v0		fail	pass
816fb12b70Safresh1v1		fail	pass
826fb12b70Safresh1v.1.2.3		fail	fail
836fb12b70Safresh1v		fail	fail
846fb12b70Safresh1v1.2345.6	fail	pass
856fb12b70Safresh1undef		fail	pass
866fb12b70Safresh11a		fail	fail
876fb12b70Safresh11.2a3		fail	fail
886fb12b70Safresh1bar		fail	fail
896fb12b70Safresh1_		fail	fail
906fb12b70Safresh1CASE_DATA
916fb12b70Safresh1
926fb12b70Safresh1  require version;
93*256a93a4Safresh1  'version'->import( qw/is_strict is_lax/ );
946fb12b70Safresh1  for my $case ( split qr/\n/, $strict_lax_data ) {
956fb12b70Safresh1    my ($v, $strict, $lax) = split qr/\t+/, $case;
966fb12b70Safresh1    main::ok( $strict eq 'pass' ? is_strict($v) : ! is_strict($v), "is_strict($v) [$strict]" );
976fb12b70Safresh1    main::ok( $strict eq 'pass' ? version::is_strict($v) : ! version::is_strict($v), "version::is_strict($v) [$strict]" );
986fb12b70Safresh1    main::ok( $lax eq 'pass' ? is_lax($v) : ! is_lax($v), "is_lax($v) [$lax]" );
996fb12b70Safresh1    main::ok( $lax eq 'pass' ? version::is_lax($v) : ! version::is_lax($v), "version::is_lax($v) [$lax]" );
1006fb12b70Safresh1  }
1016fb12b70Safresh1}
102