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
This commit is contained in:
Morris Jobke 2015-07-30 10:57:16 +02:00
parent e115bf96e7
commit 972e560e72
No known key found for this signature in database
GPG key ID: 9CE5ED29E7FCD38A
2 changed files with 46 additions and 0 deletions

View file

@ -293,4 +293,19 @@
</table>
<table>
<name>*dbprefix*text_table</name>
<declaration>
<field>
<name>textfield</name>
<type>text</type>
<notnull>false</notnull>
<length>255</length>
</field>
</declaration>
</table>
</database>

View file

@ -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
];
}
}