Repository: flex-falcon
Updated Branches:
  refs/heads/develop 2531a9c4c -> a89c2d7cc


add test for XML output


Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/84a6f63f
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/84a6f63f
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/84a6f63f

Branch: refs/heads/develop
Commit: 84a6f63f9903cdf7e58b5dbba699fa1666f3b051
Parents: 2531a9c
Author: Alex Harui <[email protected]>
Authored: Mon Jan 23 13:42:42 2017 -0800
Committer: Alex Harui <[email protected]>
Committed: Mon Jan 23 13:42:42 2017 -0800

----------------------------------------------------------------------
 .../mxml/flexjs/TestFlexJSMXMLApplication.java  | 117 +++++++++++++++++++
 .../flex/compiler/internal/test/TestBase.java   |  13 +++
 2 files changed, 130 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/84a6f63f/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/TestFlexJSMXMLApplication.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/TestFlexJSMXMLApplication.java
 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/TestFlexJSMXMLApplication.java
index e740b6e..8cb54be 100644
--- 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/TestFlexJSMXMLApplication.java
+++ 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/TestFlexJSMXMLApplication.java
@@ -670,6 +670,123 @@ public class TestFlexJSMXMLApplication extends 
FlexJSTestBase
         assertOutWithMetadata(outTemplate.replaceAll("AppName", appName));
     }
 
+    @Test
+    public void testXMLUsage()
+    {
+        String code = "<basic:Application 
xmlns:fx=\"http://ns.adobe.com/mxml/2009\"; 
xmlns:basic=\"library://ns.apache.org/flexjs/basic\">"
+                       + "<fx:Script><![CDATA["
+                       + "    public var xml:XML = new XML();\n"
+                + "]]></fx:Script><basic:initialView><basic:Label text=\"Hello 
World\"/></basic:initialView></basic:Application>";
+
+        IMXMLDocumentNode dnode = (IMXMLDocumentNode) getNode(code,
+                       IMXMLDocumentNode.class, 
FlexJSTestBase.WRAP_LEVEL_NONE);
+
+        
((JSFlexJSEmitter)(mxmlBlockWalker.getASEmitter())).getModel().setCurrentClass(dnode.getDefinition());
+        mxmlBlockWalker.visitDocument(dnode);
+        String appName = dnode.getQualifiedName();
+        String outTemplate = "/**\n" +
+                       " * AppName\n" +
+                       " *\n" +
+                       " * @fileoverview\n" +
+                       " *\n" +
+                       " * @suppress {checkTypes|accessControls}\n" +
+                       " */\n" +
+                       "\n" +
+                       "goog.provide('AppName');\n" +
+                       "\n" +
+                       "goog.require('org.apache.flex.core.Application');\n" +
+                       "goog.require('org.apache.flex.html.Label');\n" +
+                       "goog.require('XML');\n" +
+                       "goog.require('XML');\n" +
+                       "\n" +
+                       "\n" +
+                       "\n" +
+                       "/**\n" +
+                       " * @constructor\n" +
+                       " * @extends {org.apache.flex.core.Application}\n" +
+                       " */\n" +
+                       "AppName = function() {\n" +
+                       "  AppName.base(this, 'constructor');\n" +
+                       "  \n" +
+                       "  this.xml = new XML();\n" +
+                       "  /**\n" +
+                       "   * @private\n" +
+                       "   * @type {org.apache.flex.html.Label}\n" +
+                       "   */\n" +
+                       "  this.$ID0_;\n" +
+                       "  \n" +
+                       "  /**\n" +
+                       "   * @private\n" +
+                       "   * @type {Array}\n" +
+                       "   */\n" +
+                       "  this.mxmldd;\n" +
+                       "  \n" +
+                       "  /**\n" +
+                       "   * @private\n" +
+                       "   * @type {Array}\n" +
+                       "   */\n" +
+                       "  this.mxmldp;\n" +
+                       "\n" +
+                       "  this.generateMXMLAttributes\n" +
+                       "  ([1,\n" +
+                       "'initialView',\n" +
+                       "false,\n" +
+                       "[org.apache.flex.html.Label, 2, '_id', true, '$ID0', 
'text', true, 'Hello World', 0, 0, null],\n" +
+                       "0,\n" +
+                       "0\n" +
+                       "  ]);\n" +
+                       "  \n" +
+                       "};\n" +
+                       "goog.inherits(AppName, 
org.apache.flex.core.Application);\n" +
+                       "\n" +
+                       "\n" +
+                               "\n" +
+                       "/**\n" +
+                       " * @export\n" +
+                       " * @type {XML}\n" +
+                       " */\n" +
+                       "AppName.prototype.xml;\n" +
+                       "\n" +
+                               "\n" +
+                       "/**\n" +
+                       " * Metadata\n" +
+                       " *\n" +
+                       " * @type {Object.<string, Array.<Object>>}\n" +
+                       " */\n" +
+                       "AppName.prototype.FLEXJS_CLASS_INFO = { names: [{ 
name: 'AppName', qName: 'AppName', kind: 'class'  }] };\n" +
+                       "\n" +
+                       "\n" +
+                       "/**\n" +
+                       " * Prevent renaming of class. Needed for 
reflection.\n" +
+                       " */\n" +
+                       "goog.exportSymbol('AppName', AppName);\n" +
+                       "\n" +
+                       "\n" +
+                       "\n" +
+                       "/**\n" +
+                       " * Reflection\n" +
+                       " *\n" +
+                       " * @return {Object.<string, Function>}\n" +
+                       " */\n" +
+                       "AppName.prototype.FLEXJS_REFLECTION_INFO = function () 
{\n" +
+                       "  return {\n" +
+                       "    variables: function () {\n" +
+                       "      return {\n" +
+                       "        'xml': { type: 'XML'}\n" +
+                       "      };\n" +
+                       "    },\n" +
+                               "    accessors: function () {return {};},\n" +
+                       "    methods: function () {\n" +
+                       "      return {\n" +
+                               "        'AppName': { type: '', declaredBy: 
'AppName'}\n"+
+                       "      };\n" +
+                       "    }\n" +
+                       "  };\n" +
+                       "};";
+
+        assertOutMXMLPostProcess(outTemplate.replaceAll("AppName", appName), 
true);
+    }
+
     @Override
     protected void addSourcePaths(List<File> sourcePaths)
     {

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/84a6f63f/compiler-jx/src/test/java/org/apache/flex/compiler/internal/test/TestBase.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/test/TestBase.java
 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/test/TestBase.java
index 056a078..ab18cbd 100644
--- 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/test/TestBase.java
+++ 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/test/TestBase.java
@@ -242,6 +242,19 @@ public class TestBase implements ITestBase
         assertThat(mCode, is(code));
     }
     
+    protected void assertOutMXMLPostProcess(String code, boolean keepMetadata)
+    {
+       mCode = 
removeGeneratedString(mxmlEmitter.postProcess(writer.toString()));
+       if (!keepMetadata)
+               mCode = removeMetadata(mCode);
+        //System.out.println(mCode);
+        /*if (!code.equals(mCode)) {
+            System.out.println("mCode:\n"+mCode);
+            System.out.println("code:\n"+code);
+        }*/
+        assertThat(mCode, is(code));
+    }
+    
     protected void assertOut(String code)
     {
         assertOut(code, false);

Reply via email to