#!/usr/bin/env php 'Simple number', 'want' => 1, 'have' => 1, 'output' => null ), array( 'name' => 'Matching array', 'want' => array(1, 2, 3), 'have' => array(1, 2, 3), 'output' => null ), array( 'name' => 'Matching hash', 'want' => array('foo' => 'bar', '123' => array(1, 2, 3)), 'have' => array('foo' => 'bar', '123' => array(1, 2, 3)), 'output' => null ), array( 'name' => 'Different types', 'want' => 123, 'have' => array(1, 2, 3), 'output' => array( 'gpath' => '', 'have' => 'array(1, 2, 3)', 'epath' => '', 'want' => 123 ) ), array( 'name' => 'Different strings', 'want' => 'this', 'have' => 'that', 'output' => array( 'gpath' => '', 'have' => "'that'", 'epath' => '', 'want' => "'this'" ) ), array( 'name' => 'Different arrays', 'want' => array(1, 2, 4), 'have' => array(1, 2, 3), 'output' => array( 'gpath' => '[2]', 'have' => 3, 'epath' => '[2]', 'want' => 4 ) ), array( 'name' => 'Deeper arrays', 'want' => array(1, 2, array(3, 4)), 'have' => array(1, 2, array(3, 5)), 'output' => array( 'gpath' => '[2][1]', 'have' => 5, 'epath' => '[2][1]', 'want' => 4 ) ), array( 'name' => 'Larger arrays', 'want' => array(1, 2, 3, 4), 'have' => 1234, 'output' => array( 'gpath' => '', 'have' => 1234, 'epath' => '', 'want' => 'array(1, 2, 3, ... 1 more element ...)' ) ), array( 'name' => 'Larger arrays 2', 'want' => array(1, 2, 3, 4, 5), 'have' => 12345, 'output' => array( 'gpath' => '', 'have' => 12345, 'epath' => '', 'want' => 'array(1, 2, 3, ... 2 more elements ...)' ) ), array( 'name' => 'Missing 1', 'want' => array(1, 2, 3), 'have' => array(1, 2), 'output' => array( 'gpath' => 'missing', 'have' => 'nothing', 'epath' => '[2]', 'want' => 3 ) ), array( 'name' => 'Missing 2', 'want' => array(1, 2), 'have' => array(1, 2, 3), 'output' => array( 'gpath' => '[2]', 'have' => 3, 'epath' => 'missing', 'want' => 'nothing' ) ), array( 'name' => 'Different hash', 'want' => array('foo' => 'bar', '123' => array( 'one' => 1, 'two' => 2, 'three' => 3 )), 'have' => array('foo' => 'bar', '123' => 123), 'output' => array( 'gpath' => "[123]", 'have' => 123, 'epath' => "[123]", 'want' => "array('one' => 1, 'two' => 2, 'three' => 3)" ) ), array( 'name' => 'Hash missing 1', 'want' => array('foo' => 'bar', '123' => 123), 'have' => array('foo' => 'bar'), 'output' => array( 'gpath' => 'missing', 'have' => 'nothing', 'epath' => "[123]", 'want' => 123 ) ), array( 'name' => 'Hash missing 2', 'want' => array('foo' => 'bar'), 'have' => array('foo' => 'bar', '123' => 123), 'output' => array( 'gpath' => "[123]", 'have' => 123, 'epath' => 'missing', 'want' => 'nothing' ) ), array( 'name' => 'Hash ordering', 'want' => array('foo' => 'bar', 'bar' => 'foo'), 'have' => array('bar' => 'foo', 'foo' => 'bar'), 'output' => array( 'gpath' => "['bar']", 'have' => "'foo'", 'epath' => "['foo']", 'want' => "'bar'" ) ), array( 'name' => 'Deep array', 'want' => array(1, 2, 3), 'have' => array(1, 2, 3), 'output' => null ), ); plan( count($schedule) * 2 ); foreach ($schedule as $test) { $name = $test['name']; $diff = _cmp_deeply($test['have'], $test['want']); # Simple test - since is_deeply depends on _cmp_deeply is(serialize($diff), serialize($test['output']), "$name: output OK"); # Now do it again with is_deeply is_deeply($diff, $test['output'], "$name output deeply OK"); } ?>