packages/sql-parser/tests/Unit/MySql/MySqlVersionTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\MySql;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\Attributes\Small;
9use PHPUnit\Framework\Attributes\UsesClass;
10use PHPUnit\Framework\TestCase;
11use RuntimeException;
12use SqlParser\MySql\MySqlVersion;
13use SqlParser\Resource\SqlVersion;
14use SqlParser\Resource\VersionRegistry;
15
16#[CoversClass(MySqlVersion::class)]
17#[UsesClass(SqlVersion::class)]
18#[UsesClass(VersionRegistry::class)]
19#[Small]
20final class MySqlVersionTest extends TestCase
21{
22 public function testResolve(): void
23 {
24 self::assertSame('mysql-8.4.7', MySqlVersion::resolve()->name());
25 self::assertSame('mysql-5.6.51', MySqlVersion::resolve('mysql-5.6.51')->name());
26 }
27
28 public function testResolveRejectsAnUnknownRelease(): void
29 {
30 $this->expectException(RuntimeException::class);
31
32 MySqlVersion::resolve('mysql-4.1.0');
33 }
34
35 public function testName(): void
36 {
37 self::assertSame('mysql-9.1.0', MySqlVersion::resolve('mysql-9.1.0')->name());
38 }
39
40 public function testId(): void
41 {
42 self::assertSame(80407, MySqlVersion::resolve('mysql-8.4.7')->id());
43 self::assertSame(50651, MySqlVersion::resolve('mysql-5.6.51')->id());
44 self::assertSame(90100, MySqlVersion::resolve('mysql-9.1.0')->id());
45 }
46
47 public function testHasJsonOperators(): void
48 {
49 self::assertFalse(MySqlVersion::resolve('mysql-5.6.51')->hasJsonOperators());
50 self::assertTrue(MySqlVersion::resolve('mysql-5.7.44')->hasJsonOperators());
51 }
52
53 public function testHasDollarQuotedStrings(): void
54 {
55 self::assertFalse(MySqlVersion::resolve('mysql-8.0.44')->hasDollarQuotedStrings());
56 self::assertTrue(MySqlVersion::resolve('mysql-8.1.0')->hasDollarQuotedStrings());
57 }
58
59 public function testMergesWithCube(): void
60 {
61 self::assertTrue(MySqlVersion::resolve('mysql-5.7.44')->mergesWithCube());
62 self::assertFalse(MySqlVersion::resolve('mysql-8.0.44')->mergesWithCube());
63 }
64}
65