/** * Test that map() applies callback functions to all elements in the array. */ public function testMap() { $data = array('foo' => 'bar', 'boolean' => true, 'null' => null, 'array' => array(), 'number' => 123); $this->assertEquals(array('foo' => 'BAR', 'boolean' => true, 'null' => null, 'array' => array(), 'number' => 123), Hash::map($data, 'strtoupper')); $this->assertEquals(array('foo' => 0, 'boolean' => 1, 'null' => 0, 'array' => array(), 'number' => 123), Hash::map($data, 'intval')); $this->assertEquals(array('foo' => 'string', 'boolean' => 'true', 'null' => 'null', 'array' => array(), 'number' => 'number'), Hash::map($data, function ($value) { if (is_numeric($value)) { return 'number'; } elseif (is_bool($value)) { return $value ? 'true' : 'false'; } elseif (is_null($value)) { return 'null'; } elseif (is_string($value)) { return 'string'; } else { return $value; } })); }