/* * Copyright 2009 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.jstestdriver.html; import java.util.List; import junit.framework.TestCase; import com.google.common.collect.Lists; import com.google.jstestdriver.token.BufferedTokenStream; import com.google.jstestdriver.token.ConcreteToken; import com.google.jstestdriver.token.Nodes; import com.google.jstestdriver.token.Token; /** * @author corysmith@google.com (Cory Smith) */ public class HtmlDocParserTest extends TestCase { public void testParseHtmlDoc() throws Exception { Token id = ConcreteToken.from("foo "); Token html = ConcreteToken.from(" <div></div>"); List<Token> tokens = Lists.<Token>newArrayList( ConcreteToken.from("/*:DOC"), id, ConcreteToken.from("="), html, ConcreteToken.from("*/")); BufferedTokenStream stream = new BufferedTokenStream(tokens.iterator()); assertEquals(new Nodes().add(new HtmlDocGlobalNode(id, Lists.newArrayList(html))), new HtmlDocParser().parse(stream)); } public void testParseHtmlDocInBlock() throws Exception { Token id = ConcreteToken.from("foo "); Token html = ConcreteToken.from(" <div></div>"); Token functionToken = ConcreteToken.from("function foo()"); Token blockStartToken = ConcreteToken.from("{"); Token blockEndToken = ConcreteToken.from("}"); List<Token> tokens = Lists.<Token>newArrayList( functionToken, blockStartToken, ConcreteToken.from("/*:DOC"), id, ConcreteToken.from("="), html, ConcreteToken.from("*/"), blockEndToken); BufferedTokenStream stream = new BufferedTokenStream(tokens.iterator()); assertEquals(new Nodes().add(new TextNode(functionToken)) .add(new TextNode(blockStartToken)) .add(new HtmlDocNestedNode(id, Lists.newArrayList(html))) .add(new TextNode(blockEndToken)), new HtmlDocParser().parse(stream)); } public void testOtherAndBlock() throws Exception { Token setUpToken = ConcreteToken.from("TestCase.prototype.setUp "); Token equalsToken = ConcreteToken.from("="); Token functionToken = ConcreteToken.from(" function()"); Token blockStartToken = ConcreteToken.from("{"); Token fooToken = ConcreteToken.from(" this.foo "); Token oneToken = ConcreteToken.from(" 1; "); Token docStartToken = ConcreteToken.from("/*:DOC"); Token barToken = ConcreteToken.from(" bar "); Token htmlToken = ConcreteToken.from(" <div></div>"); Token endDocToken = ConcreteToken.from("*/"); Token endBlockToken = ConcreteToken.from("}"); List<Token> tokens = Lists.<Token>newArrayList( setUpToken, equalsToken, functionToken, blockStartToken, fooToken, equalsToken, oneToken, docStartToken, barToken, equalsToken, htmlToken, endDocToken, endBlockToken); BufferedTokenStream stream = new BufferedTokenStream(tokens.iterator()); assertEquals(new Nodes().add(new TextNode(setUpToken)) .add(new TextNode(equalsToken)) .add(new TextNode(functionToken)) .add(new TextNode(blockStartToken)) .add(new TextNode(fooToken)) .add(new TextNode(equalsToken)) .add(new TextNode(oneToken)) .add(new HtmlDocNestedNode(barToken, Lists.newArrayList(htmlToken))) .add(new TextNode(endBlockToken)), new HtmlDocParser().parse(stream)); } }