blob: 1704e5103497a679df2ac9534cf75c389e7311eb [file] [log] [blame]
/*
* Copyright 2008 Google Inc.
*
* 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.gwt.safehtml.shared;
import com.google.gwt.core.client.GWT;
import com.google.gwt.junit.client.GWTTestCase;
/**
* Unit tests for {@link SafeHtmlBuilder}.
*/
public class GwtSafeHtmlBuilderTest extends GWTTestCase {
private static final String FOOBARBAZ_HTML = "foo<em>bar</em>baz";
public void testEmpty() {
SafeHtmlBuilder b = new SafeHtmlBuilder();
assertEquals("", b.toSafeHtml().asString());
}
public void testFromSafeHtml() {
SafeHtml html = SafeHtmlUtils.fromSafeConstant(FOOBARBAZ_HTML);
SafeHtmlBuilder b = new SafeHtmlBuilder().append(html);
assertEquals(FOOBARBAZ_HTML, b.toSafeHtml().asString());
}
public void testAppend() {
SafeHtml html = SafeHtmlUtils.fromSafeConstant(FOOBARBAZ_HTML);
SafeHtmlBuilder b = new SafeHtmlBuilder().appendHtmlConstant(
"Yabba dabba &amp; doo\n").appendEscaped("What's up so&so\n").append(
html);
String expected = "Yabba dabba &amp; doo\n" + "What&#39;s up so&amp;so\n"
+ FOOBARBAZ_HTML;
assertEquals(expected, b.toSafeHtml().asString());
}
public void testAppendHtmlConstant_innerHtml() {
SafeHtml html = new SafeHtmlBuilder()
.appendHtmlConstant("<div id=\"div_0\">")
.appendEscaped("0 < 1")
.appendHtmlConstant("</div>").toSafeHtml();
assertEquals("<div id=\"div_0\">0 &lt; 1</div>", html.asString());
}
public void testAppendHtmlConstant_withIncompleteHtml() {
if (GWT.isProdMode()) {
// appendHtmlConstant does not parse/validate its argument in prod mode.
// Hence we short-circuit this test in prod mode.
return;
}
SafeHtmlBuilder b = new SafeHtmlBuilder();
try {
b.appendHtmlConstant("<a href=\"");
fail("Should have thrown IllegalArgumentException");
} catch (IllegalArgumentException e) {
// expected
}
}
@Override
public String getModuleName() {
return "com.google.gwt.safehtml.SafeHtmlTestsModule";
}
}