99 lines
3.5 KiB
Java
99 lines
3.5 KiB
Java
/*
|
|
* Copyright 2012 The Closure Compiler Authors.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package com.google.javascript.jscomp;
|
|
|
|
import static com.google.javascript.jscomp.JsMessage.Style.RELAX;
|
|
|
|
import com.google.javascript.jscomp.JsMessage.Style;
|
|
|
|
/**
|
|
* Test which checks that replacer works correctly.
|
|
*
|
|
*/
|
|
public class ReplaceMessagesForChromeTest extends CompilerTestCase {
|
|
|
|
private Style style = RELAX;
|
|
|
|
@Override
|
|
protected CompilerPass getProcessor(Compiler compiler) {
|
|
return new ReplaceMessagesForChrome(compiler,
|
|
new GoogleJsMessageIdGenerator(null), false, style);
|
|
}
|
|
|
|
@Override
|
|
protected int getNumRepetitions() {
|
|
// No longer valid on the second run.
|
|
return 1;
|
|
}
|
|
|
|
@Override
|
|
protected void setUp() {
|
|
style = RELAX;
|
|
}
|
|
|
|
public void testReplaceSimpleMessage() {
|
|
test("/** @desc A simple message. */\n" +
|
|
"var MSG_A = goog.getMsg('Hello world');",
|
|
"var MSG_A=chrome.i18n.getMessage('8660696502365331902');");
|
|
|
|
test("/** @desc A message attached to an object. */\n" +
|
|
"foo.bar.MSG_B = goog.getMsg('Goodbye world');",
|
|
"foo.bar.MSG_B=chrome.i18n.getMessage('2356086230621084760');");
|
|
}
|
|
|
|
public void testReplaceSinglePlaceholder() {
|
|
test("/** @desc A message with one placeholder. */\n" +
|
|
"var MSG_C = goog.getMsg('Hello, {$name}', {name: 'Tyler'});",
|
|
"var MSG_C=chrome.i18n.getMessage('4985325380591528435', ['Tyler']);");
|
|
}
|
|
|
|
public void testReplaceTwoPlaceholders() {
|
|
test("/** @desc A message with two placeholders. */\n" +
|
|
"var MSG_D = goog.getMsg('{$greeting}, {$name}', " +
|
|
"{greeting: 'Hi', name: 'Tyler'});",
|
|
"var MSG_D=chrome.i18n.getMessage('3605047247574980322', " +
|
|
"['Hi', 'Tyler']);");
|
|
|
|
test("/** @desc A message with two placeholders, but their order is\n" +
|
|
" * reversed in the object literal. (Shouldn't make a difference.)\n" +
|
|
" */\n" +
|
|
"var MSG_E = goog.getMsg('{$greeting}, {$name}!', " +
|
|
"{name: 'Tyler', greeting: 'Hi'});",
|
|
"var MSG_E=chrome.i18n.getMessage('691522386483664339', " +
|
|
"['Hi', 'Tyler']);");
|
|
}
|
|
|
|
public void testReplacePlaceholderMissingValue() {
|
|
test("/** @desc A message with two placeholders, but one is missing. */\n" +
|
|
"var MSG_F = goog.getMsg('{$greeting}, {$name}!', {name: 'Tyler'});",
|
|
null, JsMessageVisitor.MESSAGE_TREE_MALFORMED);
|
|
}
|
|
|
|
public void testReplaceTwoPlaceholdersNonAlphaOrder() {
|
|
test("/** @desc A message with two placeholders not in order .*/\n" +
|
|
"var MSG_G = goog.getMsg('{$name}: {$greeting}', " +
|
|
"{greeting: 'Salutations', name: 'Tyler'});",
|
|
"var MSG_G=chrome.i18n.getMessage('7437383242562773138', " +
|
|
"['Salutations', 'Tyler']);");
|
|
}
|
|
|
|
public void testReplaceExternalMessage() {
|
|
test("/** @desc A message that was extracted with SoyMsgExtractor. */\n" +
|
|
"var MSG_EXTERNAL_1357902468 = goog.getMsg('Hello world');",
|
|
"var MSG_EXTERNAL_1357902468 = chrome.i18n.getMessage('1357902468');");
|
|
}
|
|
}
|