1 /* 2 * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package com.sun.scenario.effect.compiler.parser; 27 28 import com.sun.scenario.effect.compiler.JSLParser; 29 import com.sun.scenario.effect.compiler.tree.BreakStmt; 30 import com.sun.scenario.effect.compiler.tree.ContinueStmt; 31 import com.sun.scenario.effect.compiler.tree.DiscardStmt; 32 import com.sun.scenario.effect.compiler.tree.LiteralExpr; 33 import com.sun.scenario.effect.compiler.tree.ReturnStmt; 34 import com.sun.scenario.effect.compiler.tree.Stmt; 35 import org.antlr.runtime.RecognitionException; 36 import org.junit.Test; 37 import static org.junit.Assert.assertEquals; 38 import static org.junit.Assert.assertNull; 39 import static org.junit.Assert.assertTrue; 40 41 public class JumpStatementTest extends ParserBase { 42 43 @Test 44 public void cont() throws Exception { 45 Stmt tree = parseTreeFor("continue;"); 46 assertTrue(tree instanceof ContinueStmt); 47 } 48 49 @Test 50 public void brk() throws Exception { 51 Stmt tree = parseTreeFor(" break ; "); 52 assertTrue(tree instanceof BreakStmt); 53 } 54 55 @Test 56 public void discard() throws Exception { 57 Stmt tree = parseTreeFor("discard;"); 58 assertTrue(tree instanceof DiscardStmt); 59 } 60 61 @Test 62 public void returnEmpty() throws Exception { 63 Stmt tree = parseTreeFor("return;"); 64 assertTrue(tree instanceof ReturnStmt); 65 assertNull(((ReturnStmt)tree).getExpr()); 66 } 67 68 @Test 69 public void returnExpr() throws Exception { 70 Stmt tree = parseTreeFor("return 3;"); 71 assertTrue(tree instanceof ReturnStmt); 72 ReturnStmt ret = (ReturnStmt)tree; 73 assertTrue(ret.getExpr() instanceof LiteralExpr); 74 LiteralExpr lit = (LiteralExpr)ret.getExpr(); 75 assertEquals(lit.getValue(), new Integer(3)); 76 } 77 78 @Test(expected = RecognitionException.class) 79 public void notAJump() throws Exception { 80 parseTreeFor("float;"); 81 } 82 83 private Stmt parseTreeFor(String text) throws RecognitionException { 84 JSLParser parser = parserOver(text); 85 return parser.jump_statement(); 86 } 87 }