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);
        }
 }


Reply via email to