From 972e560e7274cf25021b1a5095206640b063789a Mon Sep 17 00:00:00 2001 From: Morris Jobke Date: Thu, 30 Jul 2015 10:57:16 +0200 Subject: [PATCH] Adding tests for 4 byte unicode characters * success on SQLite and Postgres * failure on MySQL due to the limited charset that only supports up to 3 bytes --- tests/data/db_structure.xml | 15 +++++++++++++++ tests/lib/DB/LegacyDBTest.php | 31 +++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/tests/data/db_structure.xml b/tests/data/db_structure.xml index 371da94483..b155114f2e 100644 --- a/tests/data/db_structure.xml +++ b/tests/data/db_structure.xml @@ -293,4 +293,19 @@ + + + *dbprefix*text_table + + + + textfield + text + false + 255 + + + +
+ diff --git a/tests/lib/DB/LegacyDBTest.php b/tests/lib/DB/LegacyDBTest.php index 7aeeb3dd1f..2c91121c02 100644 --- a/tests/lib/DB/LegacyDBTest.php +++ b/tests/lib/DB/LegacyDBTest.php @@ -46,6 +46,11 @@ class LegacyDBTest extends \Test\TestCase { */ private $table5; + /** + * @var string + */ + private $text_table; + protected function setUp() { parent::setUp(); @@ -63,6 +68,7 @@ class LegacyDBTest extends \Test\TestCase { $this->table3 = $this->test_prefix.'vcategory'; $this->table4 = $this->test_prefix.'decimal'; $this->table5 = $this->test_prefix.'uniconst'; + $this->text_table = $this->test_prefix.'text_table'; } protected function tearDown() { @@ -390,4 +396,29 @@ class LegacyDBTest extends \Test\TestCase { $result = $query->execute(array('%ba%')); $this->assertCount(1, $result->fetchAll()); } + + /** + * @dataProvider insertAndSelectDataProvider + */ + public function testInsertAndSelectData($expected) { + $table = "*PREFIX*{$this->text_table}"; + + $query = OC_DB::prepare("INSERT INTO `$table` (`textfield`) VALUES (?)"); + $result = $query->execute(array($expected)); + $this->assertEquals(1, $result); + + $actual = OC_DB::prepare("SELECT `textfield` FROM `$table`")->execute()->fetchOne(); + $this->assertSame($expected, $actual); + } + + public function insertAndSelectDataProvider() { + return [ + ['abcdefghijklmnopqrstuvwxyzABCDEFGHIKLMNOPQRSTUVWXYZ'], + ['0123456789'], + ['äöüÄÖÜß!"§$%&/()=?#\'+*~°^`´'], + ['²³¼½¬{[]}\\'], + ['♡⚗'], + ['💩'], # :hankey: on github + ]; + } }