| /** |
| * 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); |
| } |
| } |