1use strict;
2use warnings;
3
4use Test::More tests => 7;
5
6BEGIN { use_ok('XS::APItest') };
7
8# I can't see a good way to easily get back perl-space diagnostics for these
9# I hope that this isn't a problem.
10ok(sv_setsv_cow_hashkey_core,
11   "With PERL_CORE sv_setsv does COW for shared hash key scalars");
12
13ok(!sv_setsv_cow_hashkey_notcore,
14   "Without PERL_CORE sv_setsv doesn't COW for shared hash key scalars");
15
16*AUTOLOAD = \&XS::APItest::AutoLoader::AUTOLOADp;
17foo(\1); sv_set_deref(\&AUTOLOAD, '$', 0);
18is prototype(\&AUTOLOAD), '$', 'sv_setsv(cv,...) sets prototype';
19foo(\1); sv_set_deref(\&AUTOLOAD, '$', 1);
20is prototype(\&AUTOLOAD), '$', 'sv_setpv(cv,...) sets prototype';
21foo(\1); sv_set_deref(\&AUTOLOAD, '$', 2);
22is prototype(\&AUTOLOAD), '$', 'sv_setpvn(cv,...) sets prototype';
23
24# Perhaps this does not belong here?  But it is at least testing that
25# sv_mortalcopy uses sv_setsv in an unsurprising way.
26ok !SvIsCOW(sv_mortalcopy(__PACKAGE__)),
27  'sv_mortalcopy does not COW for extensions [perl #79824]';
28