OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 "chrome/browser/chromeos/drive/search_metadata.h" | 5 #include "chrome/browser/chromeos/drive/search_metadata.h" |
6 | 6 |
7 #include "base/files/scoped_temp_dir.h" | 7 #include "base/files/scoped_temp_dir.h" |
8 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
9 #include "base/stringprintf.h" | 9 #include "base/stringprintf.h" |
10 #include "base/threading/sequenced_worker_pool.h" | 10 #include "base/threading/sequenced_worker_pool.h" |
(...skipping 24 matching lines...) Expand all Loading... |
35 id_counter_(0), | 35 id_counter_(0), |
36 last_accessed_counter_(last_accessed_base) {} | 36 last_accessed_counter_(last_accessed_base) {} |
37 | 37 |
38 // Obtains resource ID that is consists of the prefix and a sequential | 38 // Obtains resource ID that is consists of the prefix and a sequential |
39 // number. | 39 // number. |
40 std::string GetId() const { | 40 std::string GetId() const { |
41 return base::StringPrintf("%s%d", prefix_.c_str(), id_counter_); | 41 return base::StringPrintf("%s%d", prefix_.c_str(), id_counter_); |
42 } | 42 } |
43 | 43 |
44 // Obtains the fake last accessed time that is sequential number following | 44 // Obtains the fake last accessed time that is sequential number following |
45 // |last_accessed_base| specified at the construcor. | 45 // |last_accessed_base| specified at the constructor. |
46 int64 GetLastAccessed() const { | 46 int64 GetLastAccessed() const { |
47 return last_accessed_counter_; | 47 return last_accessed_counter_; |
48 } | 48 } |
49 | 49 |
50 // Advances counters to generate the next ID and last accessed time. | 50 // Advances counters to generate the next ID and last accessed time. |
51 void Advance() { | 51 void Advance() { |
52 ++id_counter_; | 52 ++id_counter_; |
53 ++last_accessed_counter_; | 53 ++last_accessed_counter_; |
54 } | 54 } |
55 | 55 |
(...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
567 | 567 |
568 TEST(SearchMetadataSimpleTest, FindAndHighlight_InTheMiddle) { | 568 TEST(SearchMetadataSimpleTest, FindAndHighlight_InTheMiddle) { |
569 std::string highlighted_text; | 569 std::string highlighted_text; |
570 EXPECT_TRUE(FindAndHighlight("yo hello, world", "hello", &highlighted_text)); | 570 EXPECT_TRUE(FindAndHighlight("yo hello, world", "hello", &highlighted_text)); |
571 EXPECT_EQ("yo <b>hello</b>, world", highlighted_text); | 571 EXPECT_EQ("yo <b>hello</b>, world", highlighted_text); |
572 } | 572 } |
573 | 573 |
574 TEST(SearchMetadataSimpleTest, FindAndHighlight_MultipeMatches) { | 574 TEST(SearchMetadataSimpleTest, FindAndHighlight_MultipeMatches) { |
575 std::string highlighted_text; | 575 std::string highlighted_text; |
576 EXPECT_TRUE(FindAndHighlight("yoyoyoyoy", "yoy", &highlighted_text)); | 576 EXPECT_TRUE(FindAndHighlight("yoyoyoyoy", "yoy", &highlighted_text)); |
577 EXPECT_EQ("<b>yoy</b>o<b>yoy</b>oy", highlighted_text); | 577 // Only the first match is highlighted. |
| 578 EXPECT_EQ("<b>yoy</b>oyoyoy", highlighted_text); |
578 } | 579 } |
579 | 580 |
580 TEST(SearchMetadataSimpleTest, FindAndHighlight_IgnoreCase) { | 581 TEST(SearchMetadataSimpleTest, FindAndHighlight_IgnoreCase) { |
581 std::string highlighted_text; | 582 std::string highlighted_text; |
582 EXPECT_TRUE(FindAndHighlight("HeLLo", "hello", &highlighted_text)); | 583 EXPECT_TRUE(FindAndHighlight("HeLLo", "hello", &highlighted_text)); |
583 EXPECT_EQ("<b>HeLLo</b>", highlighted_text); | 584 EXPECT_EQ("<b>HeLLo</b>", highlighted_text); |
584 } | 585 } |
585 | 586 |
| 587 TEST(SearchMetadataSimpleTest, FindAndHighlight_IgnoreCaseNonASCII) { |
| 588 std::string highlighted_text; |
| 589 |
| 590 // Case and accent ignorance in Greek. Find "socra" in "Socra'tes". |
| 591 EXPECT_TRUE(FindAndHighlight( |
| 592 "\xCE\xA3\xCF\x89\xCE\xBA\xCF\x81\xCE\xAC\xCF\x84\xCE\xB7\xCF\x82", |
| 593 "\xCF\x83\xCF\x89\xCE\xBA\xCF\x81\xCE\xB1", &highlighted_text)); |
| 594 EXPECT_EQ( |
| 595 "<b>\xCE\xA3\xCF\x89\xCE\xBA\xCF\x81\xCE\xAC</b>\xCF\x84\xCE\xB7\xCF\x82", |
| 596 highlighted_text); |
| 597 |
| 598 // In Japanese characters. |
| 599 // Find Hiragana "pi" + "(small)ya" in Katakana "hi" + semi-voiced-mark + "ya" |
| 600 EXPECT_TRUE(FindAndHighlight( |
| 601 "\xE3\x81\xB2\xE3\x82\x9A\xE3\x82\x83\xE3\x83\xBC", |
| 602 "\xE3\x83\x94\xE3\x83\xA4", |
| 603 &highlighted_text)); |
| 604 EXPECT_EQ( |
| 605 "<b>\xE3\x81\xB2\xE3\x82\x9A\xE3\x82\x83</b>\xE3\x83\xBC", |
| 606 highlighted_text); |
| 607 } |
| 608 |
586 TEST(SearchMetadataSimpleTest, FindAndHighlight_MetaChars) { | 609 TEST(SearchMetadataSimpleTest, FindAndHighlight_MetaChars) { |
587 std::string highlighted_text; | 610 std::string highlighted_text; |
588 EXPECT_TRUE(FindAndHighlight("<hello>", "hello", &highlighted_text)); | 611 EXPECT_TRUE(FindAndHighlight("<hello>", "hello", &highlighted_text)); |
589 EXPECT_EQ("<<b>hello</b>>", highlighted_text); | 612 EXPECT_EQ("<<b>hello</b>>", highlighted_text); |
590 } | 613 } |
591 | 614 |
592 TEST(SearchMetadataSimpleTest, FindAndHighlight_MoreMetaChars) { | 615 TEST(SearchMetadataSimpleTest, FindAndHighlight_MoreMetaChars) { |
593 std::string highlighted_text; | 616 std::string highlighted_text; |
594 EXPECT_TRUE(FindAndHighlight("a&b&c&d", "b&c", &highlighted_text)); | 617 EXPECT_TRUE(FindAndHighlight("a&b&c&d", "b&c", &highlighted_text)); |
595 EXPECT_EQ("a&<b>b&c</b>&d", highlighted_text); | 618 EXPECT_EQ("a&<b>b&c</b>&d", highlighted_text); |
596 } | 619 } |
597 | 620 |
598 } // namespace internal | 621 } // namespace internal |
599 } // namespace drive | 622 } // namespace drive |
OLD | NEW |