1   package groovy.lang;
2   
3   import org.codehaus.groovy.classgen.TestSupport;
4   import org.codehaus.groovy.control.CompilationFailedException;
5   
6   
7   /***
8    * @author Steve Goetze
9    */
10  public class ScriptIntegerDivideTest extends TestSupport {
11  
12  	/***
13  	 * If a script that invokes integer division is specified as a literal string, the
14  	 * division token "\" needs to be escaped. 
15  	 */
16  	public void testIntegerDivide() throws Exception {
17     		assertScript( "assert 4//3 == 1" );
18      }
19  
20  	/***
21  	 * If a groovy script is spec'd in a literal string, any intended Integer
22  	 * divisions need to be escaped.  In cases where the integer division token "\"
23  	 * is surrounded by whitespace the literal cannot be constructed, which is OK.
24  	 * In the case where the second operand immediately follows the token, the literal
25  	 * can be specified, but will result in a compilation error as the token immediately
26  	 * following the backslash will be taken as the escape sequence.
27  	 */
28  	public void testIntegerDivideWithBadEscape() throws Exception {
29      	try {
30      		assertScript( "assert 4\3 == 1" );
31      	} catch (CompilationFailedException e) {
32      		return;
33      	}
34      	fail("Should catch a CompilationFailedException");
35      }
36  }