// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "ui/base/template_expressions.h" #include "testing/gtest/include/gtest/gtest.h" namespace ui { TEST(TemplateExpressionsTest, ReplaceTemplateExpressionsPieces) { TemplateReplacements substitutions; substitutions["test"] = "word"; substitutions["5"] = "number"; EXPECT_EQ("", ReplaceTemplateExpressions("", substitutions)); EXPECT_EQ("word", ReplaceTemplateExpressions("$i18n{test}", substitutions)); EXPECT_EQ("number ", ReplaceTemplateExpressions("$i18n{5} ", substitutions)); EXPECT_EQ("multiple: word, number.", ReplaceTemplateExpressions("multiple: $i18n{test}, $i18n{5}.", substitutions)); } TEST(TemplateExpressionsTest, ReplaceTemplateExpressionsConsecutiveDollarSignsPieces) { TemplateReplacements substitutions; substitutions["a"] = "x"; EXPECT_EQ("$ $$ $$$", ReplaceTemplateExpressions("$ $$ $$$", substitutions)); EXPECT_EQ("$x", ReplaceTemplateExpressions("$$i18n{a}", substitutions)); EXPECT_EQ("$$x", ReplaceTemplateExpressions("$$$i18n{a}", substitutions)); EXPECT_EQ("$i1812", ReplaceTemplateExpressions("$i1812", substitutions)); } TEST(TemplateExpressionsTest, ReplaceTemplateExpressionsEscaping) { static TemplateReplacements substitutions; substitutions["punctuationSample"] = "a\"b'ce&f"; substitutions["htmlSample"] = "
hello
"; EXPECT_EQ( "a"b'c<d>e&f", ReplaceTemplateExpressions("$i18n{punctuationSample}", substitutions)); EXPECT_EQ("<div>hello</div>", ReplaceTemplateExpressions("$i18n{htmlSample}", substitutions)); EXPECT_EQ( "multiple: <div>hello</div>, a"b'c<d>e&f.", ReplaceTemplateExpressions( "multiple: $i18n{htmlSample}, $i18n{punctuationSample}.", substitutions)); } TEST(TemplateExpressionsTest, ReplaceTemplateExpressionsRaw) { static TemplateReplacements substitutions; substitutions["rawSample"] = "hello"; EXPECT_EQ("hello", ReplaceTemplateExpressions("$i18nRaw{rawSample}", substitutions)); } TEST(TemplateExpressionsTest, ReplaceTemplateExpressionsPolymerQuoting) { static TemplateReplacements substitutions; substitutions["singleSample"] = "don't do it"; substitutions["doubleSample"] = "\"moo\" said the cow"; // This resolves |Call('don\'t do it')| to Polymer, which is presented as // |don't do it| to the user. EXPECT_EQ("
[[Call('don\\'t do it')]]", ReplaceTemplateExpressions( "
[[Call('$i18nPolymer{singleSample}')]]", substitutions)); // This resolves |Call('\"moo\" said the cow')| to Polymer, which is // presented as |"moo" said the cow| to the user. EXPECT_EQ("
[[Call('\\\"moo\\\" said the cow')]]", ReplaceTemplateExpressions( "
[[Call('$i18nPolymer{doubleSample}')]]", substitutions)); } TEST(TemplateExpressionsTest, ReplaceTemplateExpressionsPolymerMixed) { static TemplateReplacements substitutions; substitutions["punctuationSample"] = "a\"b'ce&f"; substitutions["htmlSample"] = "
hello
"; EXPECT_EQ("a\\\"b\\'ce&f", ReplaceTemplateExpressions("$i18nPolymer{punctuationSample}", substitutions)); EXPECT_EQ("
hello
", ReplaceTemplateExpressions( "$i18nPolymer{htmlSample}", substitutions)); EXPECT_EQ("multiple:
hello
, a\\\"b\\'ce&f.", ReplaceTemplateExpressions("multiple: $i18nPolymer{htmlSample}, " "$i18nPolymer{punctuationSample}.", substitutions)); } } // namespace ui