1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/app_list/search/tokenized_string.h" 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace app_list { 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace test { 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace { 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)base::string16 GetContent(const TokenizedString& tokenized) { 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const TokenizedString::Tokens& tokens = tokenized.tokens(); 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const TokenizedString::Mappings& mappings = tokenized.mappings(); 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 19a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 str; 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (size_t i = 0; i < tokens.size(); ++i) { 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (i > 0) 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) str += ' '; 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) str += tokens[i]; 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) str += base::UTF8ToUTF16(mappings[i].ToString()); 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return str; 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST(TokenizedStringTest, Empty) { 32a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 empty; 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TokenizedString tokens(empty); 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(base::string16(), GetContent(tokens)); 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST(TokenizedStringTest, Basic) { 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::string16 text(base::UTF8ToUTF16("ScratchPad")); 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TokenizedString tokens(text); 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(base::UTF8ToUTF16("scratch{0,7} pad{7,10}"), 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetContent(tokens)); 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::string16 text(base::UTF8ToUTF16("Chess2.0")); 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TokenizedString tokens(text); 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(base::UTF8ToUTF16("chess{0,5} 2.0{5,8}"), 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetContent(tokens)); 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::string16 text(base::UTF8ToUTF16("Cut the rope")); 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TokenizedString tokens(text); 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(base::UTF8ToUTF16("cut{0,3} the{4,7} rope{8,12}"), 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetContent(tokens)); 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::string16 text(base::UTF8ToUTF16("AutoCAD WS")); 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TokenizedString tokens(text); 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(base::UTF8ToUTF16("auto{0,4} cad{4,7} ws{8,10}"), 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetContent(tokens)); 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::string16 text(base::UTF8ToUTF16("Great TweetDeck")); 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TokenizedString tokens(text); 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(base::UTF8ToUTF16("great{0,5} tweet{6,11} deck{11,15}"), 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetContent(tokens)); 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::string16 text(base::UTF8ToUTF16("Draw-It!")); 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TokenizedString tokens(text); 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(base::UTF8ToUTF16("draw{0,4} it{5,7}"), 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetContent(tokens)); 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::string16 text(base::UTF8ToUTF16("Faxing & Signing")); 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TokenizedString tokens(text); 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(base::UTF8ToUTF16("faxing{0,6} signing{9,16}"), 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetContent(tokens)); 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::string16 text(base::UTF8ToUTF16("!@#$%^&*()<<<**>>>")); 82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TokenizedString tokens(text); 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(base::UTF8ToUTF16(""), 84c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetContent(tokens)); 85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 87c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 88c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace test 89c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace app_list 90