blob: 9a1efcf84f1afac8fed861131355c0f8f6706033 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.hadoop.yarn.webapp.hamlet;
import java.io.PrintWriter;
import org.junit.Test;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import org.apache.hadoop.yarn.webapp.hamlet.HamletImpl;
import org.apache.hadoop.yarn.webapp.hamlet.HamletSpec.*;
public class TestHamletImpl {
/**
* Test the generic implementation methods
* @see TestHamlet for Hamlet syntax
*/
@Test public void testGeneric() {
PrintWriter out = spy(new PrintWriter(System.out));
HamletImpl hi = new HamletImpl(out, 0, false);
hi.
root("start")._attr("name", "value").
_("start text").
elem("sub")._attr("name", "value").
_("sub text")._().
elem("sub1")._noEndTag()._attr("boolean", null).
_("sub1text")._().
_("start text2").
elem("pre")._pre().
_("pre text").
elem("i")._inline()._("inline")._()._().
elem("i")._inline()._("inline after pre")._().
_("start text3").
elem("sub2").
_("sub2text")._().
elem("sub3")._noEndTag().
_("sub3text")._().
elem("sub4")._noEndTag().
elem("i")._inline()._("inline")._().
_("sub4text")._()._();
out.flush();
assertEquals(0, hi.nestLevel);
assertEquals(20, hi.indents);
verify(out).print("<start");
verify(out, times(2)).print(" name=\"value\"");
verify(out).print(" boolean");
verify(out).print("</start>");
verify(out, never()).print("</sub1>");
verify(out, never()).print("</sub3>");
verify(out, never()).print("</sub4>");
}
@Test public void testSetSelector() {
CoreAttrs e = mock(CoreAttrs.class);
HamletImpl.setSelector(e, "#id.class");
verify(e).$id("id");
verify(e).$class("class");
H1 t = mock(H1.class);
HamletImpl.setSelector(t, "#id.class")._("heading");
verify(t).$id("id");
verify(t).$class("class");
verify(t)._("heading");
}
@Test public void testSetLinkHref() {
LINK link = mock(LINK.class);
HamletImpl.setLinkHref(link, "uri");
HamletImpl.setLinkHref(link, "style.css");
verify(link).$href("uri");
verify(link).$rel("stylesheet");
verify(link).$href("style.css");
verifyNoMoreInteractions(link);
}
@Test public void testSetScriptSrc() {
SCRIPT script = mock(SCRIPT.class);
HamletImpl.setScriptSrc(script, "uri");
HamletImpl.setScriptSrc(script, "script.js");
verify(script).$src("uri");
verify(script).$type("text/javascript");
verify(script).$src("script.js");
verifyNoMoreInteractions(script);
}
}