#!/usr/bin/perl use lib '../src'; use strict; use warnings; use Test::More; use PVE::Tools; my $tests = [ { name => 'both undef', a => undef, b => undef, expected => 1, }, { name => 'empty string', a => '', b => '', expected => 1, }, { name => 'empty string and undef', a => '', b => undef, expected => 0, }, { name => '0 and undef', a => 0, b => undef, expected => 0, }, { name => 'equal strings', a => 'test', b => 'test', expected => 1, }, { name => 'unequal strings', a => 'test', b => 'tost', expected => 0, }, { name => 'equal numerics', a => 42, b => 42, expected => 1, }, { name => 'unequal numerics', a => 42, b => 420, expected => 0, }, { name => 'equal arrays', a => ['foo', 'bar'], b => ['foo', 'bar'], expected => 1, }, { name => 'equal empty arrays', a => [], b => [], expected => 1, }, { name => 'unequal arrays', a => ['foo', 'bar'], b => ['bar', 'foo'], expected => 0, }, { name => 'equal empty hashes', a => { }, b => { }, expected => 1, }, { name => 'equal hashes', a => { foo => 'bar' }, b => { foo => 'bar' }, expected => 1, }, { name => 'unequal hashes', a => { foo => 'bar' }, b => { bar => 'foo' }, expected => 0, }, { name => 'equal nested hashes', a => { foo => 'bar', bar => 1, list => ['foo', 'bar'], properties => { baz => 'boo', }, }, b => { foo => 'bar', bar => 1, list => ['foo', 'bar'], properties => { baz => 'boo', }, }, expected => 1, }, { name => 'unequal nested hashes', a => { foo => 'bar', bar => 1, list => ['foo', 'bar'], properties => { baz => 'boo', }, }, b => { foo => 'bar', bar => 1, list => ['foo', 'bar'], properties => { baz => undef, }, }, expected => 0, }, ]; for my $test ($tests->@*) { is (PVE::Tools::is_deeply($test->{a}, $test->{b}), $test->{expected}, $test->{name}); } done_testing();