getConnection()); } /** * @return array */ public function typesProvider() { return [ ['integer NULL DEFAULT NULL', Schema::TYPE_INTEGER, null, [ ['unsigned'], ['null'], ]], ['integer(10)', Schema::TYPE_INTEGER, 10, [ ['unsigned'], ]], ['timestamp() WITH TIME ZONE NOT NULL', 'timestamp() WITH TIME ZONE', null, [ ['notNull'] ]], ['timestamp() WITH TIME ZONE DEFAULT NOW()', 'timestamp() WITH TIME ZONE', null, [ ['defaultValue', new Expression('NOW()')] ]], ['integer(10)', Schema::TYPE_INTEGER, 10, [ ['comment', 'test'] ]], ]; } /** * @dataProvider typesProvider */ public function testCustomTypes($expected, $type, $length, $calls) { $this->checkBuildString($expected, $type, $length, $calls); } /** * @param string $expected * @param string $type * @param int $length * @param array $calls */ public function checkBuildString($expected, $type, $length, $calls) { $builder = $this->getColumnSchemaBuilder($type, $length); foreach ($calls as $call) { $method = array_shift($call); call_user_func_array([$builder, $method], $call); } self::assertEquals($expected, $builder->__toString()); } }