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

use strict;
use warnings;
use Test::More tests => 11;

use lib './t';
do 'testlib.pm';

use Data::ModeMerge;

merge_is({i=>1}, {"+i"=>3}, {i=>4}, 'int');

merge_is({a=>[1]}, {"+a"=>[1,2]}, {a=>[1,1,2]}, 'array 1');
merge_fail({a=>[1]}, {"+a"=>2}, 'array 2');
merge_fail({a=>1}, {"+a"=>[2]}, 'array 3');
merge_fail({a=>[1]}, {"+a"=>{}}, 'array 4');
merge_fail({a=>{}}, {"+a"=>[2]}, 'array 5');

merge_is({h=>{a=>1, b=>2}}, {"+h"=>{b=>22, c=>3}}, {h=>{a=>1, b=>22, c=>3}}, 'hash 1');
merge_fail({h=>{}}, {"+h"=>1}, 'hash 2');
merge_fail({h=>1}, {"+h"=>{}}, 'hash 3');
merge_fail({h=>{}}, {"+h"=>[]}, 'hash 4');
merge_fail({h=>[]}, {"+h"=>{}}, 'hash 5');