|
Packit |
7d6a7d |
################################################################################
|
|
Packit |
7d6a7d |
#
|
|
Packit |
7d6a7d |
# !!!!! Do NOT edit this file directly! !!!!!
|
|
Packit |
7d6a7d |
#
|
|
Packit |
7d6a7d |
# Edit mktests.PL and/or parts/inc/magic instead.
|
|
Packit |
7d6a7d |
#
|
|
Packit |
7d6a7d |
# This file was automatically generated from the definition files in the
|
|
Packit |
7d6a7d |
# parts/inc/ subdirectory by mktests.PL. To learn more about how all this
|
|
Packit |
7d6a7d |
# works, please read the F<HACKERS> file that came with this distribution.
|
|
Packit |
7d6a7d |
#
|
|
Packit |
7d6a7d |
################################################################################
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
BEGIN {
|
|
Packit |
7d6a7d |
if ($ENV{'PERL_CORE'}) {
|
|
Packit |
7d6a7d |
chdir 't' if -d 't';
|
|
Packit |
7d6a7d |
@INC = ('../lib', '../ext/Devel-PPPort/t') if -d '../lib' && -d '../ext';
|
|
Packit |
7d6a7d |
require Config; import Config;
|
|
Packit |
7d6a7d |
use vars '%Config';
|
|
Packit |
7d6a7d |
if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) {
|
|
Packit |
7d6a7d |
print "1..0 # Skip -- Perl configured without Devel::PPPort module\n";
|
|
Packit |
7d6a7d |
exit 0;
|
|
Packit |
7d6a7d |
}
|
|
Packit |
7d6a7d |
}
|
|
Packit |
7d6a7d |
else {
|
|
Packit |
7d6a7d |
unshift @INC, 't';
|
|
Packit |
7d6a7d |
}
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
sub load {
|
|
Packit |
7d6a7d |
eval "use Test";
|
|
Packit |
7d6a7d |
require 'testutil.pl' if $@;
|
|
Packit |
7d6a7d |
}
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
if (23) {
|
|
Packit |
7d6a7d |
load();
|
|
Packit |
7d6a7d |
plan(tests => 23);
|
|
Packit |
7d6a7d |
}
|
|
Packit |
7d6a7d |
}
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
use Devel::PPPort;
|
|
Packit |
7d6a7d |
use strict;
|
|
Packit |
7d6a7d |
$^W = 1;
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
package Devel::PPPort;
|
|
Packit |
7d6a7d |
use vars '@ISA';
|
|
Packit |
7d6a7d |
require DynaLoader;
|
|
Packit |
7d6a7d |
@ISA = qw(DynaLoader);
|
|
Packit |
7d6a7d |
bootstrap Devel::PPPort;
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
package main;
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
# Find proper magic
|
|
Packit |
7d6a7d |
ok(my $obj1 = Devel::PPPort->new_with_mg());
|
|
Packit |
7d6a7d |
ok(Devel::PPPort::as_string($obj1), 'hello');
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
# Find with no magic
|
|
Packit |
7d6a7d |
my $obj = bless {}, 'Fake::Class';
|
|
Packit |
7d6a7d |
ok(Devel::PPPort::as_string($obj), "Sorry, your princess is in another castle.");
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
# Find with other magic (not the magic we are looking for)
|
|
Packit |
7d6a7d |
ok($obj = Devel::PPPort->new_with_other_mg());
|
|
Packit |
7d6a7d |
ok(Devel::PPPort::as_string($obj), "Sorry, your princess is in another castle.");
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
# Okay, attempt to remove magic that isn't there
|
|
Packit |
7d6a7d |
Devel::PPPort::remove_other_magic($obj1);
|
|
Packit |
7d6a7d |
ok(Devel::PPPort::as_string($obj1), 'hello');
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
# Remove magic that IS there
|
|
Packit |
7d6a7d |
Devel::PPPort::remove_null_magic($obj1);
|
|
Packit |
7d6a7d |
ok(Devel::PPPort::as_string($obj1), "Sorry, your princess is in another castle.");
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
# Removing when no magic present
|
|
Packit |
7d6a7d |
Devel::PPPort::remove_null_magic($obj1);
|
|
Packit |
7d6a7d |
ok(Devel::PPPort::as_string($obj1), "Sorry, your princess is in another castle.");
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
use Tie::Hash;
|
|
Packit |
7d6a7d |
my %h;
|
|
Packit |
7d6a7d |
tie %h, 'Tie::StdHash';
|
|
Packit |
7d6a7d |
$h{foo} = 'foo';
|
|
Packit |
7d6a7d |
$h{bar} = '';
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
&Devel::PPPort::sv_catpv_mg($h{foo}, 'bar');
|
|
Packit |
7d6a7d |
ok($h{foo}, 'foobar');
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
&Devel::PPPort::sv_catpvn_mg($h{bar}, 'baz');
|
|
Packit |
7d6a7d |
ok($h{bar}, 'baz');
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
&Devel::PPPort::sv_catsv_mg($h{foo}, '42');
|
|
Packit |
7d6a7d |
ok($h{foo}, 'foobar42');
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
&Devel::PPPort::sv_setiv_mg($h{bar}, 42);
|
|
Packit |
7d6a7d |
ok($h{bar}, 42);
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
&Devel::PPPort::sv_setnv_mg($h{PI}, 3.14159);
|
|
Packit |
7d6a7d |
ok(abs($h{PI} - 3.14159) < 0.01);
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
&Devel::PPPort::sv_setpv_mg($h{mhx}, 'mhx');
|
|
Packit |
7d6a7d |
ok($h{mhx}, 'mhx');
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
&Devel::PPPort::sv_setpvn_mg($h{mhx}, 'Marcus');
|
|
Packit |
7d6a7d |
ok($h{mhx}, 'Marcus');
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
&Devel::PPPort::sv_setsv_mg($h{sv}, 'SV');
|
|
Packit |
7d6a7d |
ok($h{sv}, 'SV');
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
&Devel::PPPort::sv_setuv_mg($h{sv}, 4711);
|
|
Packit |
7d6a7d |
ok($h{sv}, 4711);
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
&Devel::PPPort::sv_usepvn_mg($h{sv}, 'Perl');
|
|
Packit |
7d6a7d |
ok($h{sv}, 'Perl');
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
# v1 is treated as a bareword in older perls...
|
|
Packit |
7d6a7d |
my $ver = do { local $SIG{'__WARN__'} = sub {}; eval qq[v1.2.0] };
|
|
Packit |
7d6a7d |
ok($] < 5.009 || $@ eq '');
|
|
Packit |
7d6a7d |
ok($] < 5.009 || Devel::PPPort::SvVSTRING_mg($ver));
|
|
Packit |
7d6a7d |
ok(!Devel::PPPort::SvVSTRING_mg(4711));
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
my $foo = 'bar';
|
|
Packit |
7d6a7d |
ok(Devel::PPPort::sv_magic_portable($foo));
|
|
Packit |
7d6a7d |
ok($foo eq 'bar');
|
|
Packit |
7d6a7d |
|