/**
  * Test if NULL value is not cast to other native types.
  */
 public function testNullRemainsNull()
 {
     $caster = new ValueCaster();
     $this->assertEquals(ValueCaster::CAST_INT, $caster->getTypeByFieldName('project_leader_id'));
     $row = ['project_leader_id' => null];
     $caster->castRowValues($row);
     $this->assertArrayHasKey('project_leader_id', $row);
     $this->assertNull($row['project_leader_id']);
 }
 /**
  * Test execute.
  */
 public function testExecuteWithCustomCaster()
 {
     $result = $this->connection->execute('SELECT * FROM `writers` ORDER BY `id`');
     $this->assertInstanceOf('\\ActiveCollab\\DatabaseConnection\\Result\\Result', $result);
     $this->assertCount(3, $result);
     $caster = new ValueCaster(['id' => ValueCaster::CAST_STRING, 'birthday' => ValueCaster::CAST_DATE]);
     $this->assertEquals(ValueCaster::CAST_STRING, $caster->getTypeByFieldName('id'));
     $this->assertEquals(ValueCaster::CAST_DATE, $caster->getTypeByFieldName('birthday'));
     $result->setValueCaster($caster);
     $writers = [];
     foreach ($result as $row) {
         $writers[] = $row;
     }
     $this->assertCount(3, $writers);
     $this->assertSame('1', $writers[0]['id']);
     $this->assertSame('Leo Tolstoy', $writers[0]['name']);
     $this->assertSame('1828-09-09', $writers[0]['birthday']->format('Y-m-d'));
     $this->assertSame('2', $writers[1]['id']);
     $this->assertSame('Alexander Pushkin', $writers[1]['name']);
     $this->assertSame('1799-06-06', $writers[1]['birthday']->format('Y-m-d'));
     $this->assertSame('3', $writers[2]['id']);
     $this->assertSame('Fyodor Dostoyevsky', $writers[2]['name']);
     $this->assertSame('1821-11-11', $writers[2]['birthday']->format('Y-m-d'));
 }