Browse Source

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
tags/v11.0RC2
Morris Jobke 9 years ago
parent
commit
972e560e72
No account linked to committer's email address
2 changed files with 46 additions and 0 deletions
  1. 15
    0
      tests/data/db_structure.xml
  2. 31
    0
      tests/lib/DB/LegacyDBTest.php

+ 15
- 0
tests/data/db_structure.xml 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>

+ 31
- 0
tests/lib/DB/LegacyDBTest.php 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
];
}
}

Loading…
Cancel
Save