You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by go...@apache.org on 2013/01/26 01:29:28 UTC

svn commit: r1438791 - in /flex/falcon/trunk/compiler.tests/unit-tests/org/apache/flex/compiler/internal/tree/mxml: MXMLNumberNodeTests.java MXMLPropertySpecifierNodeNumberTests.java

Author: gordonsmith
Date: Sat Jan 26 00:29:28 2013
New Revision: 1438791

URL: http://svn.apache.org/viewvc?rev=1438791&view=rev
Log:
Falcon unit tests: Added more parsing tests for <Number> tags and properties of type Number, to check whether we can handle hex integers, scientific notation, NaN, and positive negative Infinity.

This revealed a bug: If p is a property of type Number, <MyComp p="1"/> currently produces an MXMLIntTag to represent the value. It should produce a MXMLNumberTag.

Modified:
    flex/falcon/trunk/compiler.tests/unit-tests/org/apache/flex/compiler/internal/tree/mxml/MXMLNumberNodeTests.java
    flex/falcon/trunk/compiler.tests/unit-tests/org/apache/flex/compiler/internal/tree/mxml/MXMLPropertySpecifierNodeNumberTests.java

Modified: flex/falcon/trunk/compiler.tests/unit-tests/org/apache/flex/compiler/internal/tree/mxml/MXMLNumberNodeTests.java
URL: http://svn.apache.org/viewvc/flex/falcon/trunk/compiler.tests/unit-tests/org/apache/flex/compiler/internal/tree/mxml/MXMLNumberNodeTests.java?rev=1438791&r1=1438790&r2=1438791&view=diff
==============================================================================
--- flex/falcon/trunk/compiler.tests/unit-tests/org/apache/flex/compiler/internal/tree/mxml/MXMLNumberNodeTests.java (original)
+++ flex/falcon/trunk/compiler.tests/unit-tests/org/apache/flex/compiler/internal/tree/mxml/MXMLNumberNodeTests.java Sat Jan 26 00:29:28 2013
@@ -80,6 +80,114 @@ public class MXMLNumberNodeTests extends
 	}
 	
 	@Test
+	public void MXMLNumberNode_integer()
+	{
+		String[] code = new String[]
+		{
+		    "<fx:Number> 1 </fx:Number>"
+		};
+		IMXMLNumberNode node = getMXMLNumberNode(code);
+		assertThat("getValue", node.getValue(), is(1.0));
+		//assertThat("getExpressionNode", node.getExpressionNode(), is((IASNode)null));
+	}
+	
+	@Test
+	public void MXMLNumberNode_hexInteger_upperCase()
+	{
+		String[] code = new String[]
+		{
+		    "<fx:Number> 0xABCDEF </fx:Number>"
+		};
+		IMXMLNumberNode node = getMXMLNumberNode(code);
+		assertThat("getValue", node.getValue(), is((double)0xABCDEF));
+		//assertThat("getExpressionNode", node.getExpressionNode(), is((IASNode)null));
+	}
+	
+	@Test
+	public void MXMLNumberNode_hexInteger_lowerCase()
+	{
+		String[] code = new String[]
+		{
+		    "<fx:Number> -0Xabcdef </fx:Number>"
+		};
+		IMXMLNumberNode node = getMXMLNumberNode(code);
+		assertThat("getValue", node.getValue(), is((double)-0xABCDEF));
+		//assertThat("getExpressionNode", node.getExpressionNode(), is((IASNode)null));
+	}
+	
+	@Test
+	public void MXMLNumberNode_fractional()
+	{
+		String[] code = new String[]
+		{
+		    "<fx:Number> 0.5 </fx:Number>"
+		};
+		IMXMLNumberNode node = getMXMLNumberNode(code);
+		assertThat("getValue", node.getValue(), is(0.5));
+		//assertThat("getExpressionNode", node.getExpressionNode(), is((IASNode)null));
+	}
+	
+	@Test
+	public void MXMLNumberNode_scientific_lowerCase_negExp()
+	{
+		String[] code = new String[]
+		{
+		    "<fx:Number> -1.5e-10 </fx:Number>"
+		};
+		IMXMLNumberNode node = getMXMLNumberNode(code);
+		assertThat("getValue", node.getValue(), is(-1.5e-10));
+		//assertThat("getExpressionNode", node.getExpressionNode(), is((IASNode)null));
+	}
+	
+	@Test
+	public void MXMLNumberNode_scientific_upperCase_posExp()
+	{
+		String[] code = new String[]
+		{
+		    "<fx:Number> -1.5E+10 </fx:Number>"
+		};
+		IMXMLNumberNode node = getMXMLNumberNode(code);
+		assertThat("getValue", node.getValue(), is(-1.5e10));
+		//assertThat("getExpressionNode", node.getExpressionNode(), is((IASNode)null));
+	}
+	
+	@Test
+	public void MXMLNumberNode_NaN()
+	{
+		String[] code = new String[]
+		{
+		    "<fx:Number> NaN </fx:Number>"
+		};
+		IMXMLNumberNode node = getMXMLNumberNode(code);
+		assertThat("getValue", node.getValue(), is(Double.NaN));
+		//assertThat("getExpressionNode", node.getExpressionNode(), is((IASNode)null));
+	}
+	
+	@Test
+	public void MXMLNumberNode_posInfinity()
+	{
+		String[] code = new String[]
+		{
+		    "<fx:Number> Infinity </fx:Number>"
+		};
+		IMXMLNumberNode node = getMXMLNumberNode(code);
+		assertThat("getValue", node.getValue(), is(Double.POSITIVE_INFINITY));
+		//assertThat("getExpressionNode", node.getExpressionNode(), is((IASNode)null));
+	}
+	
+	@Test
+	public void MXMLNumberNode_negInfinity()
+	{
+		String[] code = new String[]
+		{
+		    "<fx:Number> -Infinity </fx:Number>"
+		};
+		IMXMLNumberNode node = getMXMLNumberNode(code);
+		assertThat("getValue", node.getValue(), is(Double.NEGATIVE_INFINITY));
+		//assertThat("getExpressionNode", node.getExpressionNode(), is((IASNode)null));
+	}
+	
+	@Test
 	public void MXMLNumberNode_with_databinding()
 	{
 		String[] code = new String[]

Modified: flex/falcon/trunk/compiler.tests/unit-tests/org/apache/flex/compiler/internal/tree/mxml/MXMLPropertySpecifierNodeNumberTests.java
URL: http://svn.apache.org/viewvc/flex/falcon/trunk/compiler.tests/unit-tests/org/apache/flex/compiler/internal/tree/mxml/MXMLPropertySpecifierNodeNumberTests.java?rev=1438791&r1=1438790&r2=1438791&view=diff
==============================================================================
--- flex/falcon/trunk/compiler.tests/unit-tests/org/apache/flex/compiler/internal/tree/mxml/MXMLPropertySpecifierNodeNumberTests.java (original)
+++ flex/falcon/trunk/compiler.tests/unit-tests/org/apache/flex/compiler/internal/tree/mxml/MXMLPropertySpecifierNodeNumberTests.java Sat Jan 26 00:29:28 2013
@@ -25,6 +25,7 @@ import static org.hamcrest.core.Is.is;
 import org.apache.flex.compiler.tree.ASTNodeID;
 import org.apache.flex.compiler.tree.mxml.IMXMLNumberNode;
 import org.apache.flex.compiler.tree.mxml.IMXMLPropertySpecifierNode;
+import org.junit.Ignore;
 import org.junit.Test;
 
 /**
@@ -48,37 +49,315 @@ public class MXMLPropertySpecifierNodeNu
 		return node;
 	}
     
+	@Ignore // 1 is causing MXMLIntNode instead of MXMLDoubleNode to get created
 	@Test
-	public void MXMLPropertySpecifierNode_Number_attribute_fractional()
+	public void MXMLPropertySpecifierNode_Number_integer_attribute()
 	{
 		String[] code = new String[]
 		{
-		    "<MyComp p=' -1.5 '>"
+		    "<MyComp p=' 1 '>"
 		};
-		testMXMLPropertySpecifierNode(code, -1.5);
+		testMXMLPropertySpecifierNode(code, 1);
 	}
 	
+	@Ignore
 	@Test
-	public void MXMLPropertySpecifierNode_Number_tag_text_fractional()
+	public void MXMLPropertySpecifierNode_Number_integer_tag_text()
 	{
 		String[] code = new String[]
 		{
 			"<MyComp>",
-			"    <p> -1.5 </p>",
+			"    <p> 1 </p>",
 			"</MyComp>"
 		};
-		testMXMLPropertySpecifierNode(code, -1.5);
+		testMXMLPropertySpecifierNode(code, 1);
 	}
 	
 	@Test
-	public void MXMLPropertySpecifierNode_Number_tag_tag_fractional()
+	public void MXMLPropertySpecifierNode_Number_integer_tag_tag()
 	{
 		String[] code = new String[]
 		{
 			"<MyComp>",
-			"    <p><fx:Number> -1.5 </fx:Number></p>",
+			"    <p><fx:Number> 1 </fx:Number></p>",
 			"</MyComp>"
 		};
-		testMXMLPropertySpecifierNode(code, -1.5);
+		testMXMLPropertySpecifierNode(code, 1);
+	}
+	
+	@Ignore
+	@Test
+	public void MXMLPropertySpecifierNode_Number_hexInteger_upperCase_attribute()
+	{
+		String[] code = new String[]
+		{
+		    "<MyComp p=' 0xABCDEF '>"
+		};
+		testMXMLPropertySpecifierNode(code, (double)0xABCDEF);
+	}
+	
+	@Ignore
+	@Test
+	public void MXMLPropertySpecifierNode_Number_hexInteger_upperCase_tag_text()
+	{
+		String[] code = new String[]
+		{
+			"<MyComp>",
+			"    <p> 0xABCDEF </p>",
+			"</MyComp>"
+		};
+		testMXMLPropertySpecifierNode(code, (double)0xABCDEF);
+	}
+	
+	@Test
+	public void MXMLPropertySpecifierNode_Number_hexInteger_upperCase_tag_tag()
+	{
+		String[] code = new String[]
+		{
+			"<MyComp>",
+			"    <p><fx:Number> 0xABCDEF </fx:Number></p>",
+			"</MyComp>"
+		};
+		testMXMLPropertySpecifierNode(code, (double)0xABCDEF);
+	}
+	
+	@Ignore
+	@Test
+	public void MXMLPropertySpecifierNode_Number_hexInteger_lowerCase_attribute()
+	{
+		String[] code = new String[]
+		{
+		    "<MyComp p=' -0Xabcdef '>"
+		};
+		testMXMLPropertySpecifierNode(code, (double)-0xABCDEF);
+	}
+	
+	@Ignore
+	@Test
+	public void MXMLPropertySpecifierNode_Number_hexInteger_lowerCase_tag_text()
+	{
+		String[] code = new String[]
+		{
+			"<MyComp>",
+			"    <p> -0Xabcdef </p>",
+			"</MyComp>"
+		};
+		testMXMLPropertySpecifierNode(code, (double)-0xABCDEF);
+	}
+	
+	@Test
+	public void MXMLPropertySpecifierNode_Number_hexInteger_lowerCase_tag_tag()
+	{
+		String[] code = new String[]
+		{
+			"<MyComp>",
+			"    <p><fx:Number> -0Xabcdef </fx:Number></p>",
+			"</MyComp>"
+		};
+		testMXMLPropertySpecifierNode(code, (double)-0xABCDEF);
+	}
+	
+	@Test
+	public void MXMLPropertySpecifierNode_Number_fractional_attribute()
+	{
+		String[] code = new String[]
+		{
+		    "<MyComp p=' 0.5 '>"
+		};
+		testMXMLPropertySpecifierNode(code, 0.5);
+	}
+	
+	@Test
+	public void MXMLPropertySpecifierNode_Number_fractional_tag_text()
+	{
+		String[] code = new String[]
+		{
+			"<MyComp>",
+			"    <p> 0.5 </p>",
+			"</MyComp>"
+		};
+		testMXMLPropertySpecifierNode(code, 0.5);
+	}
+	
+	@Test
+	public void MXMLPropertySpecifierNode_Number_fractional_tag_tag()
+	{
+		String[] code = new String[]
+		{
+			"<MyComp>",
+			"    <p><fx:Number> 0.5 </fx:Number></p>",
+			"</MyComp>"
+		};
+		testMXMLPropertySpecifierNode(code, 0.5);
+	}
+	
+	@Test
+	public void MXMLPropertySpecifierNode_Number_scientific_lowerCase_negExp_attribute()
+	{
+		String[] code = new String[]
+		{
+		    "<MyComp p=' -1.5e-10 '>"
+		};
+		testMXMLPropertySpecifierNode(code, -1.5e-10);
+	}
+	
+	@Test
+	public void MXMLPropertySpecifierNode_Number_scientific_lowerCase_negExp_tag_text()
+	{
+		String[] code = new String[]
+		{
+			"<MyComp>",
+			"    <p> -1.5e-10 </p>",
+			"</MyComp>"
+		};
+		testMXMLPropertySpecifierNode(code, -1.5e-10);
+	}
+	
+	@Test
+	public void MXMLPropertySpecifierNode_Number_scientific_lowerCase_negExp_tag_tag()
+	{
+		String[] code = new String[]
+		{
+			"<MyComp>",
+			"    <p><fx:Number> -1.5e-10 </fx:Number></p>",
+			"</MyComp>"
+		};
+		testMXMLPropertySpecifierNode(code, -1.5e-10);
+	}
+	
+	@Test
+	public void MXMLPropertySpecifierNode_Number_scientific_upperCase_posExp_attribute()
+	{
+		String[] code = new String[]
+		{
+		    "<MyComp p=' -1.5E+10 '>"
+		};
+		testMXMLPropertySpecifierNode(code, -1.5e10);
+	}
+	
+	@Test
+	public void MXMLPropertySpecifierNode_Number_scientific_upperCase_posExp_tag_text()
+	{
+		String[] code = new String[]
+		{
+			"<MyComp>",
+			"    <p> -1.5E+10 </p>",
+			"</MyComp>"
+		};
+		testMXMLPropertySpecifierNode(code, -1.5e10);
+	}
+	
+	@Test
+	public void MXMLPropertySpecifierNode_Number_scientific_upperCase_posExp_tag_tag()
+	{
+		String[] code = new String[]
+		{
+			"<MyComp>",
+			"    <p><fx:Number> -1.5E+10 </fx:Number></p>",
+			"</MyComp>"
+		};
+		testMXMLPropertySpecifierNode(code, -1.5e10);
+	}
+	
+	@Test
+	public void MXMLPropertySpecifierNode_Number_NaN_attribute()
+	{
+		String[] code = new String[]
+		{
+		    "<MyComp p=' NaN '>"
+		};
+		testMXMLPropertySpecifierNode(code, Double.NaN);
+	}
+	
+	@Test
+	public void MXMLPropertySpecifierNode_Number_NaN_tag_text()
+	{
+		String[] code = new String[]
+		{
+			"<MyComp>",
+			"    <p> NaN </p>",
+			"</MyComp>"
+		};
+		testMXMLPropertySpecifierNode(code, Double.NaN);
+	}
+	
+	@Test
+	public void MXMLPropertySpecifierNode_Number_NaN_tag_tag()
+	{
+		String[] code = new String[]
+		{
+			"<MyComp>",
+			"    <p><fx:Number> NaN </fx:Number></p>",
+			"</MyComp>"
+		};
+		testMXMLPropertySpecifierNode(code, Double.NaN);
+	}
+	
+	@Test
+	public void MXMLPropertySpecifierNode_Number_posInfinity_attribute()
+	{
+		String[] code = new String[]
+		{
+		    "<MyComp p=' Infinity '>"
+		};
+		testMXMLPropertySpecifierNode(code, Double.POSITIVE_INFINITY);
+	}
+	
+	@Test
+	public void MXMLPropertySpecifierNode_Number_posInfinity_tag_text()
+	{
+		String[] code = new String[]
+		{
+			"<MyComp>",
+			"    <p> Infinity </p>",
+			"</MyComp>"
+		};
+		testMXMLPropertySpecifierNode(code, Double.POSITIVE_INFINITY);
+	}
+	
+	@Test
+	public void MXMLPropertySpecifierNode_Number_posInfinity_tag_tag()
+	{
+		String[] code = new String[]
+		{
+			"<MyComp>",
+			"    <p><fx:Number> Infinity </fx:Number></p>",
+			"</MyComp>"
+		};
+		testMXMLPropertySpecifierNode(code, Double.POSITIVE_INFINITY);
+	}
+	
+	@Test
+	public void MXMLPropertySpecifierNode_Number_negInfinity_attribute()
+	{
+		String[] code = new String[]
+		{
+		    "<MyComp p=' -Infinity '>"
+		};
+		testMXMLPropertySpecifierNode(code, Double.NEGATIVE_INFINITY);
+	}
+	
+	@Test
+	public void MXMLPropertySpecifierNode_Number_negInfinity_tag_text()
+	{
+		String[] code = new String[]
+		{
+			"<MyComp>",
+			"    <p> -Infinity </p>",
+			"</MyComp>"
+		};
+		testMXMLPropertySpecifierNode(code, Double.NEGATIVE_INFINITY);
+	}
+	
+	@Test
+	public void MXMLPropertySpecifierNode_Number_negInfinity_tag_tag()
+	{
+		String[] code = new String[]
+		{
+			"<MyComp>",
+			"    <p><fx:Number> -Infinity </fx:Number></p>",
+			"</MyComp>"
+		};
+		testMXMLPropertySpecifierNode(code, Double.NEGATIVE_INFINITY);
 	}
 }