ArrTest.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. class ArrTest extends PHPUnit_Framework_TestCase {
  3. /**
  4. * @dataProvider getArray
  5. */
  6. public function testGetMethodReturnsItemsFromArray($array)
  7. {
  8. $this->assertEquals(Arr::get($array, 'email'), $array['email']);
  9. $this->assertEquals(Arr::get($array, 'names.uncle'), $array['names']['uncle']);
  10. }
  11. /**
  12. * @dataProvider getArray
  13. */
  14. public function testGetMethodReturnsDefaultWhenItemDoesntExist($array)
  15. {
  16. $this->assertNull(Arr::get($array, 'names.aunt'));
  17. $this->assertEquals(Arr::get($array, 'names.aunt', 'Tammy'), 'Tammy');
  18. $this->assertEquals(Arr::get($array, 'names.aunt', function() {return 'Tammy';}), 'Tammy');
  19. }
  20. /**
  21. * @dataProvider getArray
  22. */
  23. public function testSetMethodSetsItemsInArray($array)
  24. {
  25. Arr::set($array, 'name', 'Taylor');
  26. Arr::set($array, 'names.aunt', 'Tammy');
  27. Arr::set($array, 'names.friends.best', 'Abigail');
  28. $this->assertEquals($array['name'], 'Taylor');
  29. $this->assertEquals($array['names']['aunt'], 'Tammy');
  30. $this->assertEquals($array['names']['friends']['best'], 'Abigail');
  31. }
  32. /**
  33. * @dataProvider getArray
  34. */
  35. public function testFirstMethodReturnsFirstItemPassingTruthTest($array)
  36. {
  37. $array['email2'] = 'taylor@hotmail.com';
  38. $this->assertEquals('taylorotwell@gmail.com', Arr::first($array, function($k, $v) {return substr($v, 0, 3) == 'tay';}));
  39. }
  40. /**
  41. * @dataProvider getArray
  42. */
  43. public function testFirstMethodReturnsDefaultWhenNoItemExists($array)
  44. {
  45. $this->assertNull(Arr::first($array, function($k, $v) {return $v === 'something';}));
  46. $this->assertEquals('default', Arr::first($array, function($k, $v) {return $v === 'something';}, 'default'));
  47. $this->assertEquals('default', Arr::first($array, function($k, $v) {return $v === 'something';}, function() {return 'default';}));
  48. }
  49. public function getArray()
  50. {
  51. return array(array(
  52. array(
  53. 'email' => 'taylorotwell@gmail.com',
  54. 'names' => array(
  55. 'uncle' => 'Mike',
  56. ),
  57. )
  58. ));
  59. }
  60. }