summaryrefslogtreecommitdiff
path: root/vendor/ramsey/array_column/tests/ArrayColumnTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/ramsey/array_column/tests/ArrayColumnTest.php')
-rw-r--r--vendor/ramsey/array_column/tests/ArrayColumnTest.php422
1 files changed, 422 insertions, 0 deletions
diff --git a/vendor/ramsey/array_column/tests/ArrayColumnTest.php b/vendor/ramsey/array_column/tests/ArrayColumnTest.php
new file mode 100644
index 00000000..597b1dea
--- /dev/null
+++ b/vendor/ramsey/array_column/tests/ArrayColumnTest.php
@@ -0,0 +1,422 @@
+<?php
+class ArrayColumnTest extends \PHPUnit_Framework_TestCase
+{
+ protected $recordSet;
+ protected $multiDataTypes;
+ protected $numericColumns;
+ protected $mismatchedColumns;
+
+ protected function setUp()
+ {
+ $this->recordSet = array(
+ array(
+ 'id' => 1,
+ 'first_name' => 'John',
+ 'last_name' => 'Doe'
+ ),
+ array(
+ 'id' => 2,
+ 'first_name' => 'Sally',
+ 'last_name' => 'Smith'
+ ),
+ array(
+ 'id' => 3,
+ 'first_name' => 'Jane',
+ 'last_name' => 'Jones'
+ ),
+ );
+
+ $fh = fopen(__FILE__, 'r', true);
+
+ $this->multiDataTypes = array(
+ array(
+ 'id' => 1,
+ 'value' => new stdClass
+ ),
+ array(
+ 'id' => 2,
+ 'value' => 34.2345
+ ),
+ array(
+ 'id' => 3,
+ 'value' => true
+ ),
+ array(
+ 'id' => 4,
+ 'value' => false
+ ),
+ array(
+ 'id' => 5,
+ 'value' => null
+ ),
+ array(
+ 'id' => 6,
+ 'value' => 1234
+ ),
+ array(
+ 'id' => 7,
+ 'value' => 'Foo'
+ ),
+ array(
+ 'id' => 8,
+ 'value' => $fh
+ ),
+ );
+
+ $this->numericColumns = array(
+ array('aaa', '111'),
+ array('bbb', '222'),
+ array('ccc', '333', -1 => 'ddd'),
+ );
+
+ $this->mismatchedColumns = array(
+ array('a' => 'foo', 'b' => 'bar', 'e' => 'bbb'),
+ array('a' => 'baz', 'c' => 'qux', 'd' => 'aaa'),
+ array('a' => 'eee', 'b' => 'fff', 'e' => 'ggg'),
+ );
+ }
+
+ public function testFirstNameColumnFromRecordset()
+ {
+ $expected = array('John', 'Sally', 'Jane');
+ $this->assertEquals($expected, array_column($this->recordSet, 'first_name'));
+ }
+
+ public function testIdColumnFromRecordset()
+ {
+ $expected = array(1, 2, 3);
+ $this->assertEquals($expected, array_column($this->recordSet, 'id'));
+ }
+
+ public function testLastNameColumnKeyedByIdColumnFromRecordset()
+ {
+ $expected = array(1 => 'Doe', 2 => 'Smith', 3 => 'Jones');
+ $this->assertEquals($expected, array_column($this->recordSet, 'last_name', 'id'));
+ }
+
+ public function testLastNameColumnKeyedByFirstNameColumnFromRecordset()
+ {
+ $expected = array('John' => 'Doe', 'Sally' => 'Smith', 'Jane' => 'Jones');
+ $this->assertEquals($expected, array_column($this->recordSet, 'last_name', 'first_name'));
+ }
+
+ public function testValueColumnWithMultipleDataTypes()
+ {
+ $expected = array();
+ foreach ($this->multiDataTypes as $row) {
+ $expected[] = $row['value'];
+ }
+ $this->assertEquals($expected, array_column($this->multiDataTypes, 'value'));
+ }
+
+ public function testValueColumnKeyedByIdWithMultipleDataTypes()
+ {
+ $expected = array();
+ foreach ($this->multiDataTypes as $row) {
+ $expected[$row['id']] = $row['value'];
+ }
+ $this->assertEquals($expected, array_column($this->multiDataTypes, 'value', 'id'));
+ }
+
+ public function testNumericColumnKeys1()
+ {
+ $expected = array('111', '222', '333');
+ $this->assertEquals($expected, array_column($this->numericColumns, 1));
+ }
+
+ public function testNumericColumnKeys2()
+ {
+ $expected = array('aaa' => '111', 'bbb' => '222', 'ccc' => '333');
+ $this->assertEquals($expected, array_column($this->numericColumns, 1, 0));
+ }
+
+ public function testNumericColumnKeys3()
+ {
+ $expected = array('aaa' => '111', 'bbb' => '222', 'ccc' => '333');
+ $this->assertEquals($expected, array_column($this->numericColumns, 1, 0.123));
+ }
+
+ public function testNumericColumnKeys4()
+ {
+ $expected = array(0 => '111', 1 => '222', 'ddd' => '333');
+ $this->assertEquals($expected, array_column($this->numericColumns, 1, -1));
+ }
+
+ public function testFailureToFindColumn1()
+ {
+ $this->assertEquals(array(), array_column($this->numericColumns, 2));
+ }
+
+ public function testFailureToFindColumn2()
+ {
+ $this->assertEquals(array(), array_column($this->numericColumns, 'foo'));
+ }
+
+ public function testFailureToFindColumn3()
+ {
+ $expected = array('aaa', 'bbb', 'ccc');
+ $this->assertEquals($expected, array_column($this->numericColumns, 0, 'foo'));
+ }
+
+ public function testFailureToFindColumn4()
+ {
+ $this->assertEquals(array(), array_column($this->numericColumns, 3.14));
+ }
+
+ public function testSingleDimensionalArray()
+ {
+ $singleDimension = array('foo', 'bar', 'baz');
+ $this->assertEquals(array(), array_column($singleDimension, 1));
+ }
+
+ public function testMismatchedColumns1()
+ {
+ $expected = array('qux');
+ $this->assertEquals($expected, array_column($this->mismatchedColumns, 'c'));
+ }
+
+ public function testMismatchedColumns2()
+ {
+ $expected = array('baz' => 'qux');
+ $this->assertEquals($expected, array_column($this->mismatchedColumns, 'c', 'a'));
+ }
+
+ public function testMismatchedColumns3()
+ {
+ $expected = array('foo', 'aaa' => 'baz', 'eee');
+ $this->assertEquals($expected, array_column($this->mismatchedColumns, 'a', 'd'));
+ }
+
+ public function testMismatchedColumns4()
+ {
+ $expected = array('bbb' => 'foo', 'baz', 'ggg' => 'eee');
+ $this->assertEquals($expected, array_column($this->mismatchedColumns, 'a', 'e'));
+ }
+
+ public function testMismatchedColumns5()
+ {
+ $expected = array('bar', 'fff');
+ $this->assertEquals($expected, array_column($this->mismatchedColumns, 'b'));
+ }
+
+ public function testMismatchedColumns6()
+ {
+ $expected = array('foo' => 'bar', 'eee' => 'fff');
+ $this->assertEquals($expected, array_column($this->mismatchedColumns, 'b', 'a'));
+ }
+
+ public function testObjectConvertedToString()
+ {
+ $f = new Foo();
+ $b = new Bar();
+ $this->assertEquals(array('Doe', 'Smith', 'Jones'), array_column($this->recordSet, $f));
+ $this->assertEquals(array('John' => 'Doe', 'Sally' => 'Smith', 'Jane' => 'Jones'), array_column($this->recordSet, $f, $b));
+ }
+
+ /**
+ * @expectedException PHPUnit_Framework_Error_Warning
+ * @expectedExceptionMessage array_column() expects at least 2 parameters, 0 given
+ */
+ public function testFunctionWithZeroArgs()
+ {
+ $foo = array_column();
+ }
+
+ public function testFunctionWithZeroArgsReturnValue()
+ {
+ $foo = @array_column();
+ $this->assertNull($foo);
+ }
+
+ /**
+ * @expectedException PHPUnit_Framework_Error_Warning
+ * @expectedExceptionMessage array_column() expects at least 2 parameters, 1 given
+ */
+ public function testFunctionWithOneArg()
+ {
+ $foo = array_column(array());
+ }
+
+ public function testFunctionWithOneArgReturnValue()
+ {
+ $foo = @array_column(array());
+ $this->assertNull($foo);
+ }
+
+ /**
+ * @expectedException PHPUnit_Framework_Error_Warning
+ * @expectedExceptionMessage array_column() expects parameter 1 to be array, string given
+ */
+ public function testFunctionWithStringAsFirstArg()
+ {
+ $foo = array_column('foo', 0);
+ }
+
+ public function testFunctionWithStringAsFirstArgReturnValue()
+ {
+ $foo = @array_column('foo', 0);
+ $this->assertNull($foo);
+ }
+
+ /**
+ * @expectedException PHPUnit_Framework_Error_Warning
+ * @expectedExceptionMessage array_column() expects parameter 1 to be array, integer given
+ */
+ public function testFunctionWithIntAsFirstArg()
+ {
+ $foo = array_column(1, 'foo');
+ }
+
+ public function testFunctionWithIntAsFirstArgReturnValue()
+ {
+ $foo = @array_column(1, 'foo');
+ $this->assertNull($foo);
+ }
+
+ /**
+ * @expectedException PHPUnit_Framework_Error_Warning
+ * @expectedExceptionMessage array_column(): The column key should be either a string or an integer
+ */
+ public function testFunctionWithColumnKeyAsBool()
+ {
+ $foo = array_column(array(), true);
+ }
+
+ public function testFunctionWithColumnKeyAsBoolReturnValue()
+ {
+ $foo = @array_column(array(), true);
+ $this->assertFalse($foo);
+ }
+
+ /**
+ * @expectedException PHPUnit_Framework_Error_Warning
+ * @expectedExceptionMessage array_column(): The column key should be either a string or an integer
+ */
+ public function testFunctionWithColumnKeyAsArray()
+ {
+ $foo = array_column(array(), array());
+ }
+
+ public function testFunctionWithColumnKeyAsArrayReturnValue()
+ {
+ $foo = @array_column(array(), array());
+ $this->assertFalse($foo);
+ }
+
+ /**
+ * @expectedException PHPUnit_Framework_Error_Warning
+ * @expectedExceptionMessage array_column(): The index key should be either a string or an integer
+ */
+ public function testFunctionWithIndexKeyAsBool()
+ {
+ $foo = array_column(array(), 'foo', true);
+ }
+
+ public function testFunctionWithIndexKeyAsBoolReturnValue()
+ {
+ $foo = @array_column(array(), 'foo', true);
+ $this->assertFalse($foo);
+ }
+
+ /**
+ * @expectedException PHPUnit_Framework_Error_Warning
+ * @expectedExceptionMessage array_column(): The index key should be either a string or an integer
+ */
+ public function testFunctionWithIndexKeyAsArray()
+ {
+ $foo = array_column(array(), 'foo', array());
+ }
+
+ public function testFunctionWithIndexKeyAsArrayReturnValue()
+ {
+ $foo = @array_column(array(), 'foo', array());
+ $this->assertFalse($foo);
+ }
+
+ /**
+ * @link https://bugs.php.net/bug.php?id=64493
+ */
+ public function testBugRequest64493()
+ {
+ // Array from Bug Request #64493 test script
+ $rows = array(
+ 456 => array('id' => '3', 'title' => 'Foo', 'date' => '2013-03-25'),
+ 457 => array('id' => '5', 'title' => 'Bar', 'date' => '2012-05-20'),
+ );
+
+ // pass null as second parameter to get back all columns indexed by third parameter
+ $expected1 = array(
+ 3 => array('id' => '3', 'title' => 'Foo', 'date' => '2013-03-25'),
+ 5 => array('id' => '5', 'title' => 'Bar', 'date' => '2012-05-20'),
+ );
+ $this->assertEquals($expected1, array_column($rows, null, 'id'));
+
+ // pass null as second parameter and bogus third param to get back zero-indexed array of all columns
+ $expected2 = array(
+ array('id' => '3', 'title' => 'Foo', 'date' => '2013-03-25'),
+ array('id' => '5', 'title' => 'Bar', 'date' => '2012-05-20'),
+ );
+ $this->assertEquals($expected2, array_column($rows, null, 'foo'));
+
+ // pass null as second parameter and no third param to get back array_values(input) (same as $expected2)
+ $this->assertEquals($expected2, array_column($rows, null));
+ }
+
+ public function testObjectCast()
+ {
+ $columnKey = new ColumnKeyClass();
+ $indexKey = new IndexKeyClass();
+ $value = new ValueClass();
+
+ $records = array(
+ array(
+ 'id' => $value,
+ 'first_name' => 'John',
+ 'last_name' => 'XXX'
+ ),
+ array(
+ 'id' => 3245,
+ 'first_name' => 'Sally',
+ 'last_name' => 'Smith'
+ ),
+ );
+
+ $expected = array(
+ 2135 => 'John',
+ 3245 => 'Sally',
+ );
+
+ $this->assertEquals($expected, array_column($records, $columnKey, $indexKey));
+ }
+}
+
+class Foo
+{
+ public function __toString()
+ {
+ return 'last_name';
+ }
+}
+
+class Bar
+{
+ public function __toString()
+ {
+ return 'first_name';
+ }
+}
+
+class ColumnKeyClass
+{
+ function __toString() { return 'first_name'; }
+}
+
+class IndexKeyClass
+{
+ function __toString() { return 'id'; }
+}
+
+class ValueClass
+{
+ function __toString() { return '2135'; }
+}