The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl

use 5.010;
use strict;
use warnings;

use Test::More 0.98;
use Test::Perinci::Sub::Wrapper qw(test_wrap);

subtest 'prop: result_naked' => sub {
    my $meta = {v=>1.1,
                args=>{a=>{pos=>0, schema=>"int"},
                       b=>{pos=>1, schema=>"int"}}};
    test_wrap(
        name => 'convert result_naked 0->1',
        wrap_args => {sub => sub {my %args=@_;[200,"OK",$args{a}/$args{b}]}, meta => $meta, convert=>{result_naked=>1}},
        calls => [
            {argsr => [a=>12, b=>3], res => 4},
        ],
        posttest => sub {
            my ($wrap_res, $call_res) = @_;
            my $meta = $wrap_res->[2]{meta};
            ok($meta->{result_naked}, "new meta result_naked=1");
        },
    );
    $meta->{result_naked} = 1;
    test_wrap(
        name => 'convert result_naked 1->0',
        wrap_args => {sub => sub {my %args=@_;$args{a}/$args{b}}, meta => $meta, convert=>{result_naked=>0}},
        calls => [
            {argsr => [a=>12, b=>3], res => [200,"OK",4]},
        ],
        posttest => sub {
            my ($wrap_res, $call_res) = @_;
            my $meta = $wrap_res->[2]{meta};
            ok(!$meta->{result_naked}, "new meta result_naked=0");
        },
    );
};

DONE_TESTING:
done_testing;