DSNParserTest.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. namespace Test\PhpDevCommunity\PaperORM\Common;
  3. use PhpDevCommunity\PaperORM\Parser\DSNParser;
  4. use PhpDevCommunity\UniTester\TestCase;
  5. class DSNParserTest extends TestCase
  6. {
  7. protected function setUp(): void
  8. {
  9. // TODO: Implement setUp() method.
  10. }
  11. protected function tearDown(): void
  12. {
  13. // TODO: Implement tearDown() method.
  14. }
  15. protected function execute(): void
  16. {
  17. $this->testParse();
  18. }
  19. public function testParse()
  20. {
  21. $this->assertEquals(
  22. [ 'driver' => 'mysql', 'host' => '127.0.0.1', 'port' => 3306, 'user' => 'db_user', 'password' => 'db_password', 'path' => 'db_name', 'memory' => false, 'options' => [ 'serverVersion' => '8.0.37' ]],
  23. DSNParser::parse("mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=8.0.37")
  24. );
  25. $this->assertEquals(
  26. [ 'driver' => 'mysql', 'host' => '127.0.0.1', 'port' => 3306, 'user' => 'db_user', 'password' => 'db_password', 'path' => 'db_name', 'memory' => false, 'options' => [ 'serverVersion' => 'mariadb-10.5.8' ]],
  27. DSNParser::parse("mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=mariadb-10.5.8")
  28. );
  29. $this->assertEquals(
  30. [ 'driver' => 'sqlite', 'path' => 'app.db', 'memory' => false, 'options' => []],
  31. DSNParser::parse("sqlite://app.db")
  32. );
  33. $this->assertEquals(
  34. [ 'driver' => 'sqlite', 'path' => '/app.db', 'memory' => false, 'options' => []],
  35. DSNParser::parse("sqlite:///app.db")
  36. );
  37. $this->assertEquals(
  38. [ 'driver' => 'sqlite', 'path' => 'var/app.db', 'memory' => false, 'options' => []],
  39. DSNParser::parse("sqlite://var/app.db")
  40. );
  41. $this->assertEquals(
  42. [ 'driver' => 'sqlite', 'path' => null, 'memory' => true, 'options' => []],
  43. DSNParser::parse("sqlite:///:memory:")
  44. );
  45. $this->assertEquals(
  46. [ 'driver' => 'sqlite', 'path' => '/app.db', 'memory' => false, 'options' => [
  47. 'mode' => 'ro',
  48. 'cache' => 'shared'
  49. ]],
  50. DSNParser::parse('sqlite:///app.db?mode=ro&cache=shared')
  51. );
  52. $this->assertEquals(
  53. [
  54. 'driver' => 'sql',
  55. 'host' => '127.0.0.1',
  56. 'port' => 5002,
  57. 'user' => 'root',
  58. 'password' => '',
  59. 'path' => '/dbs/mydb',
  60. 'memory' => false,
  61. 'options' =>
  62. [
  63. 'charset_utf8' => '1',
  64. ],
  65. ],
  66. DSNParser::parse('sql://root:@127.0.0.1:5002//dbs/mydb?charset_utf8=1')
  67. );
  68. }
  69. }