| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "platform/fonts/ScriptRunIterator.h" | 5 #include "platform/fonts/ScriptRunIterator.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include "platform/wtf/Assertions.h" | 8 #include "platform/wtf/Assertions.h" |
| 9 #include "platform/wtf/Threading.h" | 9 #include "platform/wtf/Threading.h" |
| 10 #include "platform/wtf/text/WTFString.h" | 10 #include "platform/wtf/text/WTFString.h" |
| (...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 277 kGreek2 + kLatin, | 277 kGreek2 + kLatin, |
| 278 kGreek2 + kHan, | 278 kGreek2 + kHan, |
| 279 kLatin3 + kHan2 + kGreek, | 279 kLatin3 + kHan2 + kGreek, |
| 280 kLatin3 + kGreek2 + kHan, | 280 kLatin3 + kGreek2 + kHan, |
| 281 kHan3 + kLatin2 + kGreek, | 281 kHan3 + kLatin2 + kGreek, |
| 282 kHan3 + kGreek2 + kLatin, | 282 kHan3 + kGreek2 + kLatin, |
| 283 kGreek3 + kLatin2 + kHan, | 283 kGreek3 + kLatin2 + kHan, |
| 284 kGreek3 + kHan2 + kLatin, | 284 kGreek3 + kHan2 + kLatin, |
| 285 }; | 285 }; |
| 286 | 286 |
| 287 class ScriptRunIteratorTest : public testing::Test { | 287 class ScriptRunIteratorTest : public ::testing::Test { |
| 288 protected: | 288 protected: |
| 289 void CheckRuns(const Vector<TestRun>& runs) { | 289 void CheckRuns(const Vector<TestRun>& runs) { |
| 290 String text(g_empty_string16_bit); | 290 String text(g_empty_string16_bit); |
| 291 Vector<ExpectedRun> expect; | 291 Vector<ExpectedRun> expect; |
| 292 for (auto& run : runs) { | 292 for (auto& run : runs) { |
| 293 text.append(String::FromUTF8(run.text.c_str())); | 293 text.append(String::FromUTF8(run.text.c_str())); |
| 294 expect.push_back(ExpectedRun(text.length(), run.code)); | 294 expect.push_back(ExpectedRun(text.length(), run.code)); |
| 295 } | 295 } |
| 296 ScriptRunIterator script_run_iterator(text.Characters16(), text.length()); | 296 ScriptRunIterator script_run_iterator(text.Characters16(), text.length()); |
| 297 VerifyRuns(&script_run_iterator, expect); | 297 VerifyRuns(&script_run_iterator, expect); |
| (...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 607 } | 607 } |
| 608 | 608 |
| 609 TEST_F(ScriptRunIteratorTest, OddLatinString) { | 609 TEST_F(ScriptRunIteratorTest, OddLatinString) { |
| 610 CHECK_RUNS({{"ç̈", USCRIPT_LATIN}}); | 610 CHECK_RUNS({{"ç̈", USCRIPT_LATIN}}); |
| 611 } | 611 } |
| 612 | 612 |
| 613 TEST_F(ScriptRunIteratorTest, CommonMalayalam) { | 613 TEST_F(ScriptRunIteratorTest, CommonMalayalam) { |
| 614 CHECK_RUNS({{"100-ാം", USCRIPT_MALAYALAM}}); | 614 CHECK_RUNS({{"100-ാം", USCRIPT_MALAYALAM}}); |
| 615 } | 615 } |
| 616 | 616 |
| 617 class ScriptRunIteratorICUDataTest : public testing::Test { | 617 class ScriptRunIteratorICUDataTest : public ::testing::Test { |
| 618 public: | 618 public: |
| 619 ScriptRunIteratorICUDataTest() | 619 ScriptRunIteratorICUDataTest() |
| 620 : max_extensions_(0), max_extensions_codepoint_(0xffff) { | 620 : max_extensions_(0), max_extensions_codepoint_(0xffff) { |
| 621 int max_extensions = 0; | 621 int max_extensions = 0; |
| 622 UChar32 max_extensionscp = 0; | 622 UChar32 max_extensionscp = 0; |
| 623 for (UChar32 cp = 0; cp < 0x11000; ++cp) { | 623 for (UChar32 cp = 0; cp < 0x11000; ++cp) { |
| 624 UErrorCode status = U_ZERO_ERROR; | 624 UErrorCode status = U_ZERO_ERROR; |
| 625 int count = uscript_getScriptExtensions(cp, 0, 0, &status); | 625 int count = uscript_getScriptExtensions(cp, 0, 0, &status); |
| 626 if (count > max_extensions) { | 626 if (count > max_extensions) { |
| 627 max_extensions = count; | 627 max_extensions = count; |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 678 } | 678 } |
| 679 } | 679 } |
| 680 } | 680 } |
| 681 | 681 |
| 682 // ZWJ is \u200D Cf (Format, other) and its script is inherited. I'm going to | 682 // ZWJ is \u200D Cf (Format, other) and its script is inherited. I'm going to |
| 683 // ignore this for now, as I think it shouldn't matter which run it ends up | 683 // ignore this for now, as I think it shouldn't matter which run it ends up |
| 684 // in. HarfBuzz needs to be able to use it as context and shape each | 684 // in. HarfBuzz needs to be able to use it as context and shape each |
| 685 // neighboring character appropriately no matter what run it got assigned to. | 685 // neighboring character appropriately no matter what run it got assigned to. |
| 686 | 686 |
| 687 } // namespace blink | 687 } // namespace blink |
| OLD | NEW |