xref: /openbsd-src/gnu/usr.bin/perl/cpan/Test-Simple/t/Legacy/More.t (revision f2a19305cfc49ea4d1a5feb55cd6c283c6f1e031)
15759b3d2Safresh1#!perl -w
25759b3d2Safresh1
35759b3d2Safresh1BEGIN {
45759b3d2Safresh1    if( $ENV{PERL_CORE} ) {
55759b3d2Safresh1        chdir 't';
65759b3d2Safresh1        @INC = qw(../lib ../lib/Test/Simple/t/lib);
75759b3d2Safresh1    }
85759b3d2Safresh1}
95759b3d2Safresh1
105759b3d2Safresh1use lib 't/lib';
11*f2a19305Safresh1use Test::More tests => 57;
125759b3d2Safresh1
135759b3d2Safresh1# Make sure we don't mess with $@ or $!.  Test at bottom.
145759b3d2Safresh1my $Err   = "this should not be touched";
155759b3d2Safresh1my $Errno = 42;
165759b3d2Safresh1$@ = $Err;
175759b3d2Safresh1$! = $Errno;
185759b3d2Safresh1
195759b3d2Safresh1use_ok('Dummy');
205759b3d2Safresh1is( $Dummy::VERSION, '0.01', 'use_ok() loads a module' );
215759b3d2Safresh1require_ok('Test::More');
225759b3d2Safresh1
235759b3d2Safresh1
245759b3d2Safresh1ok( 2 eq 2,             'two is two is two is two' );
255759b3d2Safresh1is(   "foo", "foo",       'foo is foo' );
265759b3d2Safresh1isnt( "foo", "bar",     'foo isnt bar');
27*f2a19305Safresh1{
28*f2a19305Safresh1    use warnings;
29*f2a19305Safresh1    my $warning;
30*f2a19305Safresh1    local $SIG{__WARN__}= sub { $warning = $_[0] };
31256a93a4Safresh1    isn::t("foo", "bar",     'foo isn\'t bar');
32*f2a19305Safresh1    is($warning, "Use of apostrophe as package separator was deprecated in Perl 5.37.9,\n"
33*f2a19305Safresh1               . "and will be removed in Perl 5.42.0.  You should change code that uses\n"
34*f2a19305Safresh1               . "Test::More::isn't() to use Test::More::isnt() as a replacement"
35*f2a19305Safresh1               . " at t/Legacy/More.t line 31\n",
36*f2a19305Safresh1            "Got expected warning from isn::t() under use warnings");
37*f2a19305Safresh1}
38*f2a19305Safresh1{
39*f2a19305Safresh1    no warnings "deprecated";
40*f2a19305Safresh1    my $warning;
41*f2a19305Safresh1    local $SIG{__WARN__}= sub { $warning = $_[0] };
42*f2a19305Safresh1    isn::t("foo", "bar",     'foo isn\'t bar');
43*f2a19305Safresh1    is($warning, undef, "No warnings from isn::t() under no warnings deprecated");
44*f2a19305Safresh1}
455759b3d2Safresh1
465759b3d2Safresh1#'#
475759b3d2Safresh1like("fooble", '/^foo/',    'foo is like fooble');
485759b3d2Safresh1like("FooBle", '/foo/i',   'foo is like FooBle');
495759b3d2Safresh1like("/usr/local/pr0n/", '/^\/usr\/local/',   'regexes with slashes in like' );
505759b3d2Safresh1
515759b3d2Safresh1unlike("fbar", '/^bar/',    'unlike bar');
525759b3d2Safresh1unlike("FooBle", '/foo/',   'foo is unlike FooBle');
535759b3d2Safresh1unlike("/var/local/pr0n/", '/^\/usr\/local/','regexes with slashes in unlike' );
545759b3d2Safresh1
555759b3d2Safresh1my @foo = qw(foo bar baz);
565759b3d2Safresh1unlike(@foo, '/foo/');
575759b3d2Safresh1
585759b3d2Safresh1can_ok('Test::More', qw(require_ok use_ok ok is isnt like skip can_ok
595759b3d2Safresh1                        pass fail eq_array eq_hash eq_set));
605759b3d2Safresh1can_ok(bless({}, "Test::More"), qw(require_ok use_ok ok is isnt like skip
615759b3d2Safresh1                                   can_ok pass fail eq_array eq_hash eq_set));
625759b3d2Safresh1
635759b3d2Safresh1
645759b3d2Safresh1isa_ok(bless([], "Foo"), "Foo");
655759b3d2Safresh1isa_ok([], 'ARRAY');
665759b3d2Safresh1isa_ok(\42, 'SCALAR');
675759b3d2Safresh1{
685759b3d2Safresh1    local %Bar::;
695759b3d2Safresh1    local @Foo::ISA = 'Bar';
705759b3d2Safresh1    isa_ok( "Foo", "Bar" );
715759b3d2Safresh1}
725759b3d2Safresh1
735759b3d2Safresh1
745759b3d2Safresh1# can_ok() & isa_ok should call can() & isa() on the given object, not
755759b3d2Safresh1# just class, in case of custom can()
765759b3d2Safresh1{
775759b3d2Safresh1       local *Foo::can;
785759b3d2Safresh1       local *Foo::isa;
795759b3d2Safresh1       *Foo::can = sub { $_[0]->[0] };
805759b3d2Safresh1       *Foo::isa = sub { $_[0]->[0] };
815759b3d2Safresh1       my $foo = bless([0], 'Foo');
825759b3d2Safresh1       ok( ! $foo->can('bar') );
835759b3d2Safresh1       ok( ! $foo->isa('bar') );
845759b3d2Safresh1       $foo->[0] = 1;
855759b3d2Safresh1       can_ok( $foo, 'blah');
865759b3d2Safresh1       isa_ok( $foo, 'blah');
875759b3d2Safresh1}
885759b3d2Safresh1
895759b3d2Safresh1
905759b3d2Safresh1pass('pass() passed');
915759b3d2Safresh1
925759b3d2Safresh1ok( eq_array([qw(this that whatever)], [qw(this that whatever)]),
935759b3d2Safresh1    'eq_array with simple arrays' );
945759b3d2Safresh1is @Test::More::Data_Stack, 0, '@Data_Stack not holding onto things';
955759b3d2Safresh1
965759b3d2Safresh1ok( eq_hash({ foo => 42, bar => 23 }, {bar => 23, foo => 42}),
975759b3d2Safresh1    'eq_hash with simple hashes' );
985759b3d2Safresh1is @Test::More::Data_Stack, 0;
995759b3d2Safresh1
1005759b3d2Safresh1ok( eq_set([qw(this that whatever)], [qw(that whatever this)]),
1015759b3d2Safresh1    'eq_set with simple sets' );
1025759b3d2Safresh1is @Test::More::Data_Stack, 0;
1035759b3d2Safresh1
1045759b3d2Safresh1my @complex_array1 = (
1055759b3d2Safresh1                      [qw(this that whatever)],
1065759b3d2Safresh1                      {foo => 23, bar => 42},
1075759b3d2Safresh1                      "moo",
1085759b3d2Safresh1                      "yarrow",
1095759b3d2Safresh1                      [qw(498 10 29)],
1105759b3d2Safresh1                     );
1115759b3d2Safresh1my @complex_array2 = (
1125759b3d2Safresh1                      [qw(this that whatever)],
1135759b3d2Safresh1                      {foo => 23, bar => 42},
1145759b3d2Safresh1                      "moo",
1155759b3d2Safresh1                      "yarrow",
1165759b3d2Safresh1                      [qw(498 10 29)],
1175759b3d2Safresh1                     );
1185759b3d2Safresh1
1195759b3d2Safresh1is_deeply( \@complex_array1, \@complex_array2,    'is_deeply with arrays' );
1205759b3d2Safresh1ok( eq_array(\@complex_array1, \@complex_array2),
1215759b3d2Safresh1    'eq_array with complicated arrays' );
1225759b3d2Safresh1ok( eq_set(\@complex_array1, \@complex_array2),
1235759b3d2Safresh1    'eq_set with complicated arrays' );
1245759b3d2Safresh1
1255759b3d2Safresh1my @array1 = (qw(this that whatever),
1265759b3d2Safresh1              {foo => 23, bar => 42} );
1275759b3d2Safresh1my @array2 = (qw(this that whatever),
1285759b3d2Safresh1              {foo => 24, bar => 42} );
1295759b3d2Safresh1
1305759b3d2Safresh1ok( !eq_array(\@array1, \@array2),
1315759b3d2Safresh1    'eq_array with slightly different complicated arrays' );
1325759b3d2Safresh1is @Test::More::Data_Stack, 0;
1335759b3d2Safresh1
1345759b3d2Safresh1ok( !eq_set(\@array1, \@array2),
1355759b3d2Safresh1    'eq_set with slightly different complicated arrays' );
1365759b3d2Safresh1is @Test::More::Data_Stack, 0;
1375759b3d2Safresh1
1385759b3d2Safresh1my %hash1 = ( foo => 23,
1395759b3d2Safresh1              bar => [qw(this that whatever)],
1405759b3d2Safresh1              har => { foo => 24, bar => 42 },
1415759b3d2Safresh1            );
1425759b3d2Safresh1my %hash2 = ( foo => 23,
1435759b3d2Safresh1              bar => [qw(this that whatever)],
1445759b3d2Safresh1              har => { foo => 24, bar => 42 },
1455759b3d2Safresh1            );
1465759b3d2Safresh1
1475759b3d2Safresh1is_deeply( \%hash1, \%hash2,    'is_deeply with complicated hashes' );
1485759b3d2Safresh1ok( eq_hash(\%hash1, \%hash2),  'eq_hash with complicated hashes');
1495759b3d2Safresh1
1505759b3d2Safresh1%hash1 = ( foo => 23,
1515759b3d2Safresh1           bar => [qw(this that whatever)],
1525759b3d2Safresh1           har => { foo => 24, bar => 42 },
1535759b3d2Safresh1         );
1545759b3d2Safresh1%hash2 = ( foo => 23,
1555759b3d2Safresh1           bar => [qw(this tha whatever)],
1565759b3d2Safresh1           har => { foo => 24, bar => 42 },
1575759b3d2Safresh1         );
1585759b3d2Safresh1
1595759b3d2Safresh1ok( !eq_hash(\%hash1, \%hash2),
1605759b3d2Safresh1    'eq_hash with slightly different complicated hashes' );
1615759b3d2Safresh1is @Test::More::Data_Stack, 0;
1625759b3d2Safresh1
1635759b3d2Safresh1is( Test::Builder->new, Test::More->builder,    'builder()' );
1645759b3d2Safresh1
1655759b3d2Safresh1
1665759b3d2Safresh1cmp_ok(42, '==', 42,        'cmp_ok ==');
1675759b3d2Safresh1cmp_ok('foo', 'eq', 'foo',  '       eq');
1685759b3d2Safresh1cmp_ok(42.5, '<', 42.6,     '       <');
1695759b3d2Safresh1cmp_ok(0, '||', 1,          '       ||');
1705759b3d2Safresh1
1715759b3d2Safresh1
1725759b3d2Safresh1# Piers pointed out sometimes people override isa().
1735759b3d2Safresh1{
1745759b3d2Safresh1    package Wibble;
1755759b3d2Safresh1    sub isa {
1765759b3d2Safresh1        my($self, $class) = @_;
1775759b3d2Safresh1        return 1 if $class eq 'Wibblemeister';
1785759b3d2Safresh1    }
1795759b3d2Safresh1    sub new { bless {} }
1805759b3d2Safresh1}
1815759b3d2Safresh1isa_ok( Wibble->new, 'Wibblemeister' );
1825759b3d2Safresh1
1835759b3d2Safresh1my $sub = sub {};
1845759b3d2Safresh1is_deeply( $sub, $sub, 'the same function ref' );
1855759b3d2Safresh1
1865759b3d2Safresh1use Symbol;
1875759b3d2Safresh1my $glob = gensym;
1885759b3d2Safresh1is_deeply( $glob, $glob, 'the same glob' );
1895759b3d2Safresh1
1905759b3d2Safresh1is_deeply( { foo => $sub, bar => [1, $glob] },
1915759b3d2Safresh1           { foo => $sub, bar => [1, $glob] }
1925759b3d2Safresh1         );
1935759b3d2Safresh1
1945759b3d2Safresh1
1955759b3d2Safresh1# rt.cpan.org 53469  is_deeply with regexes
1965759b3d2Safresh1is_deeply( qr/a/, qr/a/, "same regex" );
1975759b3d2Safresh1
1985759b3d2Safresh1
1995759b3d2Safresh1# These two tests must remain at the end.
2005759b3d2Safresh1is( $@, $Err,               '$@ untouched' );
2015759b3d2Safresh1cmp_ok( $!, '==', $Errno,   '$! untouched' );
202