From 8c1288dbdb9f4bfc9728a05b6e289ee7b933c76d Mon Sep 17 00:00:00 2001 From: Adrian Greeve Date: Tue, 10 Jan 2017 14:50:18 +0800 Subject: [PATCH] MDL-48228 database: Unit test addition and update. --- lib/ddl/tests/ddl_test.php | 2 +- lib/dml/tests/dml_test.php | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/lib/ddl/tests/ddl_test.php b/lib/ddl/tests/ddl_test.php index 0338badb4a3..a0d78fdec98 100644 --- a/lib/ddl/tests/ddl_test.php +++ b/lib/ddl/tests/ddl_test.php @@ -584,7 +584,7 @@ class core_ddl_testcase extends database_driver_testcase { $table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null); $table->add_field('name', XMLDB_TYPE_CHAR, '30', null, null, null, null); $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id')); - for ($i = 0; $i < 15; $i++) { + for ($i = 0; $i < 12; $i++) { $table->add_field('text'.$i, XMLDB_TYPE_CHAR, '1333', null, null, null, null); $data->{'text'.$i} = $text; } diff --git a/lib/dml/tests/dml_test.php b/lib/dml/tests/dml_test.php index 5aaf56b0eb5..849fbf3e25b 100644 --- a/lib/dml/tests/dml_test.php +++ b/lib/dml/tests/dml_test.php @@ -5543,6 +5543,42 @@ class core_dml_testcase extends database_driver_testcase { $dbman->drop_table($table); } } + + /** + * Test that the database has full utf8 support (4 bytes). + */ + public function test_four_byte_character_insertion() { + $DB = $this->tdb; + + if ($DB->get_dbfamily() === 'mysql' && strpos($DB->get_dbcollation(), 'utf8_') === 0) { + $this->markTestSkipped($DB->get_name() . + ' does not support 4 byte characters with only a utf8 collation. + Please change to utf8mb4 for full utf8 support.'); + } + + $dbman = $this->tdb->get_manager(); + + $table = $this->get_test_table(); + $tablename = $table->getName(); + + $table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null); + $table->add_field('name', XMLDB_TYPE_CHAR, '255', null, null, null, null); + $table->add_field('content', XMLDB_TYPE_TEXT, 'big', null, XMLDB_NOTNULL); + $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id')); + $dbman->create_table($table); + + $data = array( + 'name' => 'Name with a four byte character 𠮟る', + 'content' => 'Content with a four byte emoji 📝 memo.' + ); + + $insertid = $DB->insert_record($tablename, $data); + $result = $DB->get_record($tablename, array('id' => $insertid)); + $this->assertEquals($data['name'], $result->name); + $this->assertEquals($data['content'], $result->content); + + $dbman->drop_table($table); + } } /**