Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(148)

Side by Side Diff: ppapi/tests/test_char_set.cc

Issue 7349016: Added versioning for PPB_Core::MemAlloc and MemFree (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Changes based on comments from dmichael Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ppapi/shared_impl/char_set_impl.cc ('k') | webkit/plugins/ppapi/plugin_module.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ppapi/tests/test_char_set.h" 5 #include "ppapi/tests/test_char_set.h"
6 6
7 #include "ppapi/c/dev/ppb_char_set_dev.h" 7 #include "ppapi/c/dev/ppb_char_set_dev.h"
8 #include "ppapi/cpp/dev/memory_dev.h"
8 #include "ppapi/cpp/module.h" 9 #include "ppapi/cpp/module.h"
9 #include "ppapi/tests/testing_instance.h" 10 #include "ppapi/tests/testing_instance.h"
10 11
11 REGISTER_TEST_CASE(CharSet); 12 REGISTER_TEST_CASE(CharSet);
12 13
13 TestCharSet::TestCharSet(TestingInstance* instance) 14 TestCharSet::TestCharSet(TestingInstance* instance)
14 : TestCase(instance), 15 : TestCase(instance),
15 char_set_interface_(NULL) { 16 char_set_interface_(NULL) {
16 } 17 }
17 18
18 bool TestCharSet::Init() { 19 bool TestCharSet::Init() {
19 char_set_interface_ = static_cast<PPB_CharSet_Dev const*>( 20 char_set_interface_ = static_cast<PPB_CharSet_Dev const*>(
20 pp::Module::Get()->GetBrowserInterface(PPB_CHAR_SET_DEV_INTERFACE)); 21 pp::Module::Get()->GetBrowserInterface(PPB_CHAR_SET_DEV_INTERFACE));
21 return !!char_set_interface_; 22 return !!char_set_interface_;
22 } 23 }
23 24
24 void TestCharSet::RunTest() { 25 void TestCharSet::RunTest() {
25 RUN_TEST(UTF16ToCharSet); 26 RUN_TEST(UTF16ToCharSet);
26 RUN_TEST(CharSetToUTF16); 27 RUN_TEST(CharSetToUTF16);
27 RUN_TEST(GetDefaultCharSet); 28 RUN_TEST(GetDefaultCharSet);
28 } 29 }
29 30
30 std::string TestCharSet::TestUTF16ToCharSet() { 31 std::string TestCharSet::TestUTF16ToCharSet() {
31 // Empty string. 32 // Empty string.
32 std::vector<uint16_t> utf16; 33 std::vector<uint16_t> utf16;
33 utf16.push_back(0); 34 utf16.push_back(0);
34 uint32_t utf8result_len = 0; 35 uint32_t utf8result_len = 0;
36 pp::Memory_Dev memory;
35 char* utf8result = char_set_interface_->UTF16ToCharSet( 37 char* utf8result = char_set_interface_->UTF16ToCharSet(
36 instance_->pp_instance(), &utf16[0], 0, "latin1", 38 instance_->pp_instance(), &utf16[0], 0, "latin1",
37 PP_CHARSET_CONVERSIONERROR_SUBSTITUTE, &utf8result_len); 39 PP_CHARSET_CONVERSIONERROR_SUBSTITUTE, &utf8result_len);
38 ASSERT_TRUE(utf8result); 40 ASSERT_TRUE(utf8result);
39 ASSERT_TRUE(utf8result[0] == 0); 41 ASSERT_TRUE(utf8result[0] == 0);
40 ASSERT_TRUE(utf8result_len == 0); 42 ASSERT_TRUE(utf8result_len == 0);
41 pp::Module::Get()->core()->MemFree(utf8result); 43 memory.MemFree(utf8result);
42 44
43 // Try round-tripping some English & Chinese from UTF-8 through UTF-16 45 // Try round-tripping some English & Chinese from UTF-8 through UTF-16
44 std::string utf8source("Hello, world. \xe4\xbd\xa0\xe5\xa5\xbd"); 46 std::string utf8source("Hello, world. \xe4\xbd\xa0\xe5\xa5\xbd");
45 utf16 = UTF8ToUTF16(utf8source); 47 utf16 = UTF8ToUTF16(utf8source);
46 utf8result = char_set_interface_->UTF16ToCharSet( 48 utf8result = char_set_interface_->UTF16ToCharSet(
47 instance_->pp_instance(), &utf16[0], static_cast<uint32_t>(utf16.size()), 49 instance_->pp_instance(), &utf16[0], static_cast<uint32_t>(utf16.size()),
48 "Utf-8", PP_CHARSET_CONVERSIONERROR_FAIL, &utf8result_len); 50 "Utf-8", PP_CHARSET_CONVERSIONERROR_FAIL, &utf8result_len);
49 ASSERT_TRUE(utf8source == std::string(utf8result, utf8result_len)); 51 ASSERT_TRUE(utf8source == std::string(utf8result, utf8result_len));
50 pp::Module::Get()->core()->MemFree(utf8result); 52 memory.MemFree(utf8result);
51 53
52 // Test an un-encodable character with various modes. 54 // Test an un-encodable character with various modes.
53 utf16 = UTF8ToUTF16("h\xe4\xbd\xa0i"); 55 utf16 = UTF8ToUTF16("h\xe4\xbd\xa0i");
54 56
55 // Fail mode. 57 // Fail mode.
56 utf8result_len = 1234; // Test that this gets 0'ed on failure. 58 utf8result_len = 1234; // Test that this gets 0'ed on failure.
57 utf8result = char_set_interface_->UTF16ToCharSet( 59 utf8result = char_set_interface_->UTF16ToCharSet(
58 instance_->pp_instance(), &utf16[0], static_cast<uint32_t>(utf16.size()), 60 instance_->pp_instance(), &utf16[0], static_cast<uint32_t>(utf16.size()),
59 "latin1", PP_CHARSET_CONVERSIONERROR_FAIL, &utf8result_len); 61 "latin1", PP_CHARSET_CONVERSIONERROR_FAIL, &utf8result_len);
60 ASSERT_TRUE(utf8result_len == 0); 62 ASSERT_TRUE(utf8result_len == 0);
61 ASSERT_TRUE(utf8result == NULL); 63 ASSERT_TRUE(utf8result == NULL);
62 64
63 // Skip mode. 65 // Skip mode.
64 utf8result = char_set_interface_->UTF16ToCharSet( 66 utf8result = char_set_interface_->UTF16ToCharSet(
65 instance_->pp_instance(), &utf16[0], static_cast<uint32_t>(utf16.size()), 67 instance_->pp_instance(), &utf16[0], static_cast<uint32_t>(utf16.size()),
66 "latin1", PP_CHARSET_CONVERSIONERROR_SKIP, &utf8result_len); 68 "latin1", PP_CHARSET_CONVERSIONERROR_SKIP, &utf8result_len);
67 ASSERT_TRUE(utf8result_len == 2); 69 ASSERT_TRUE(utf8result_len == 2);
68 ASSERT_TRUE(utf8result[0] == 'h' && utf8result[1] == 'i' && 70 ASSERT_TRUE(utf8result[0] == 'h' && utf8result[1] == 'i' &&
69 utf8result[2] == 0); 71 utf8result[2] == 0);
70 pp::Module::Get()->core()->MemFree(utf8result); 72 memory.MemFree(utf8result);
71 73
72 // Substitute mode. 74 // Substitute mode.
73 utf8result = char_set_interface_->UTF16ToCharSet( 75 utf8result = char_set_interface_->UTF16ToCharSet(
74 instance_->pp_instance(), &utf16[0], static_cast<uint32_t>(utf16.size()), 76 instance_->pp_instance(), &utf16[0], static_cast<uint32_t>(utf16.size()),
75 "latin1", PP_CHARSET_CONVERSIONERROR_SUBSTITUTE, &utf8result_len); 77 "latin1", PP_CHARSET_CONVERSIONERROR_SUBSTITUTE, &utf8result_len);
76 ASSERT_TRUE(utf8result_len == 3); 78 ASSERT_TRUE(utf8result_len == 3);
77 ASSERT_TRUE(utf8result[0] == 'h' && utf8result[1] == '?' && 79 ASSERT_TRUE(utf8result[0] == 'h' && utf8result[1] == '?' &&
78 utf8result[2] == 'i' && utf8result[3] == 0); 80 utf8result[2] == 'i' && utf8result[3] == 0);
79 pp::Module::Get()->core()->MemFree(utf8result); 81 memory.MemFree(utf8result);
80 82
81 // Try some invalid input encoding. 83 // Try some invalid input encoding.
82 utf16.clear(); 84 utf16.clear();
83 utf16.push_back(0xD800); // High surrogate. 85 utf16.push_back(0xD800); // High surrogate.
84 utf16.push_back('A'); // Not a low surrogate. 86 utf16.push_back('A'); // Not a low surrogate.
85 utf8result = char_set_interface_->UTF16ToCharSet( 87 utf8result = char_set_interface_->UTF16ToCharSet(
86 instance_->pp_instance(), &utf16[0], static_cast<uint32_t>(utf16.size()), 88 instance_->pp_instance(), &utf16[0], static_cast<uint32_t>(utf16.size()),
87 "latin1", PP_CHARSET_CONVERSIONERROR_SUBSTITUTE, &utf8result_len); 89 "latin1", PP_CHARSET_CONVERSIONERROR_SUBSTITUTE, &utf8result_len);
88 ASSERT_TRUE(utf8result_len == 2); 90 ASSERT_TRUE(utf8result_len == 2);
89 ASSERT_TRUE(utf8result[0] == '?' && utf8result[1] == 'A' && 91 ASSERT_TRUE(utf8result[0] == '?' && utf8result[1] == 'A' &&
90 utf8result[2] == 0); 92 utf8result[2] == 0);
91 pp::Module::Get()->core()->MemFree(utf8result); 93 memory.MemFree(utf8result);
92 94
93 // Invalid encoding name. 95 // Invalid encoding name.
94 utf8result = char_set_interface_->UTF16ToCharSet( 96 utf8result = char_set_interface_->UTF16ToCharSet(
95 instance_->pp_instance(), &utf16[0], static_cast<uint32_t>(utf16.size()), 97 instance_->pp_instance(), &utf16[0], static_cast<uint32_t>(utf16.size()),
96 "poopiepants", PP_CHARSET_CONVERSIONERROR_SUBSTITUTE, &utf8result_len); 98 "poopiepants", PP_CHARSET_CONVERSIONERROR_SUBSTITUTE, &utf8result_len);
97 ASSERT_TRUE(!utf8result); 99 ASSERT_TRUE(!utf8result);
98 ASSERT_TRUE(utf8result_len == 0); 100 ASSERT_TRUE(utf8result_len == 0);
99 101
100 PASS(); 102 PASS();
101 } 103 }
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 uint16_t* result = char_set_interface_->CharSetToUTF16( 177 uint16_t* result = char_set_interface_->CharSetToUTF16(
176 instance_->pp_instance(), utf8.c_str(), 178 instance_->pp_instance(), utf8.c_str(),
177 static_cast<uint32_t>(utf8.size()), 179 static_cast<uint32_t>(utf8.size()),
178 "utf-8", PP_CHARSET_CONVERSIONERROR_FAIL, &result_len); 180 "utf-8", PP_CHARSET_CONVERSIONERROR_FAIL, &result_len);
179 181
180 std::vector<uint16_t> result_vector; 182 std::vector<uint16_t> result_vector;
181 if (!result) 183 if (!result)
182 return result_vector; 184 return result_vector;
183 185
184 result_vector.assign(result, &result[result_len]); 186 result_vector.assign(result, &result[result_len]);
185 pp::Module::Get()->core()->MemFree(result); 187 pp::Memory_Dev memory;
188 memory.MemFree(result);
186 return result_vector; 189 return result_vector;
187 } 190 }
OLDNEW
« no previous file with comments | « ppapi/shared_impl/char_set_impl.cc ('k') | webkit/plugins/ppapi/plugin_module.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698