[FEATURE] Doctrine: Implement SchemaMigrationService
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Tests / Unit / Database / Schema / Parser / DataTypeAttributes / EnumerationTypeAttributesTest.php
1 <?php
2 declare(strict_types=1);
3
4 namespace TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\DataTypeAttributes;
5
6 /*
7 * This file is part of the TYPO3 CMS project.
8 *
9 * It is free software; you can redistribute it and/or modify it under
10 * the terms of the GNU General Public License, either version 2
11 * of the License, or any later version.
12 *
13 * For the full copyright and license information, please read the
14 * LICENSE.txt file that was distributed with this source code.
15 *
16 * The TYPO3 project - inspiring people to share!
17 */
18
19 use TYPO3\CMS\Core\Tests\Unit\Database\Schema\Parser\AbstractDataTypeBaseTestCase;
20
21 /**
22 * MySQL supports the SQL standard integer types INTEGER (or INT) and SMALLINT.
23 * As an extension to the standard, MySQL also supports the integer types TINYINT, MEDIUMINT, and BIGINT.
24 */
25 class EnumerationTypeAttributesTest extends AbstractDataTypeBaseTestCase
26 {
27
28 /**
29 * Data provider for canParseEnumerationDataTypeAttributes()
30 *
31 * @return array
32 */
33 public function canParseEnumerationDataTypeAttributesProvider(): array
34 {
35 return [
36 'CHARACTER SET' => [
37 "ENUM('value1', 'value2') CHARACTER SET latin1",
38 ['charset' => 'latin1', 'collation' => null],
39 ],
40 'COLLATE' => [
41 "SET('value1', 'value2') COLLATE latin1_german1_ci",
42 ['charset' => null, 'collation' => 'latin1_german1_ci'],
43 ],
44 'CHARACTER SET + COLLATE' => [
45 "SET('value1', 'value2') CHARACTER SET latin1 COLLATE latin1_german1_ci",
46 ['charset' => 'latin1', 'collation' => 'latin1_german1_ci'],
47 ],
48 ];
49 }
50
51 /**
52 * @test
53 * @dataProvider canParseEnumerationDataTypeAttributesProvider
54 * @param string $columnDefinition
55 * @param array $options
56 */
57 public function canParseDataType(string $columnDefinition, array $options)
58 {
59 $subject = $this->createSubject($columnDefinition);
60
61 $this->assertSame($options, $subject->dataType->getOptions());
62 }
63 }