Start to expand the EL test cases
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Wed, 6 Jan 2010 17:33:26 +0000 (17:33 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Wed, 6 Jan 2010 17:33:26 +0000 (17:33 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@896557 13f79535-47bb-0310-9956-ffa450edef68

test/org/apache/el/TestELEvaluation.java

index a9bd9ac..e1ca9c0 100644 (file)
@@ -46,9 +46,32 @@ public class TestELEvaluation extends TestCase {
         assertEquals("false", evaluateExpression("${false?true:false}"));
     }
 
-    public void testMisc() {
-        // From bug 45451 - not a parser bug
-        assertEquals("\\", evaluateExpression("\\\\"));
+    public void testParserLiteralExpression() {
+        // Inspired by work on bug 45451, comments from kkolinko on the dev
+        // list and looking at the spec to find some edge cases
+
+        // '\' is only an escape character inside a StringLiteral
+        assertEquals("\\\\", evaluateExpression("\\\\"));
+    }
+
+    public void testParserStringLiteral() {
+        // Inspired by work on bug 45451, comments from kkolinko on the dev
+        // list and looking at the spec to find some edge cases
+        
+        // '\' is only an escape character inside a StringLiteral
+        assertEquals("\\", evaluateExpression("${'\\\\'}"));
+        assertEquals("\\", evaluateExpression("${\"\\\\\"}"));
+
+        // Can use ''' inside '"' when quoting with '"' and vice versa without
+        // escaping
+        assertEquals("\\\"", evaluateExpression("${'\\\\\"'}"));
+        assertEquals("\"\\", evaluateExpression("${'\"\\\\'}"));
+        assertEquals("\\'", evaluateExpression("${'\\\\\\''}"));
+        assertEquals("'\\", evaluateExpression("${'\\'\\\\'}"));
+        assertEquals("\\'", evaluateExpression("${\"\\\\'\"}"));
+        assertEquals("'\\", evaluateExpression("${\"'\\\\\"}"));
+        assertEquals("\\\"", evaluateExpression("${\"\\\\\\\"\"}"));
+        assertEquals("\"\\", evaluateExpression("${\"\\\"\\\\\"}"));
     }
 
     private void compareBoth(String msg, int expected, Object o1, Object o2){