Setup for side-by-side Unit test view of swf and js, with flexuint shim, added 
Reflection tests


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/438cb014
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/438cb014
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/438cb014

Branch: refs/heads/refactor-sprite
Commit: 438cb01497695389f9f0fa661fa1f2f6c909b6c2
Parents: 92c0a8b
Author: greg-dove <[email protected]>
Authored: Tue Sep 27 19:15:26 2016 +1300
Committer: greg-dove <[email protected]>
Committed: Tue Sep 27 19:53:06 2016 +1300

----------------------------------------------------------------------
 manualtests/GenericTests/build.xml              |  74 +++
 manualtests/GenericTests/src/GenericTests.mxml  |  39 ++
 manualtests/GenericTests/src/MyInitialView.mxml | 193 +++++++
 manualtests/GenericTests/src/README.txt         |  61 ++
 manualtests/GenericTests/src/TestClasses.as     |  37 ++
 .../src/flexUnitTests/CoreTester.as             |  30 +
 .../src/flexUnitTests/JiraIssuesTester.as       |  29 +
 .../src/flexUnitTests/ObservedBugsTester.as     |  29 +
 .../src/flexUnitTests/ReflectionTester.as       |  29 +
 .../flexUnitTests/core/BinaryDataTesterTest.as  | 567 +++++++++++++++++++
 .../src/flexUnitTests/core/StrandTesterTest.as  |  55 ++
 .../src/flexUnitTests/jira/JiraTesterTest.as    |  73 +++
 .../observedbugs/ObservedBugTests.as            |  86 +++
 .../reflection/ReflectionTesterTest.as          | 368 ++++++++++++
 .../reflection/support/ITestInterface.as        |  27 +
 .../reflection/support/ITestInterface2.as       |  29 +
 .../reflection/support/ITestInterface3.as       |  27 +
 .../reflection/support/ITestInterface4.as       |  29 +
 .../reflection/support/TestClass1.as            |  91 +++
 .../reflection/support/TestClass2.as            | 103 ++++
 .../reflection/support/TestClass3.as            |  39 ++
 .../reflection/support/TestClass4.as            |  95 ++++
 .../src/flexunit/framework/Assert.as            | 305 ++++++++++
 .../flexunit/framework/AssertionFailedError.as  |  39 ++
 .../src/testshim/FlexJSUnitTestRunner.as        | 186 ++++++
 .../GenericTests/src/testshim/TestResult.as     |  56 ++
 .../GenericTests/testsview/image/Flex.png       | Bin 0 -> 3526 bytes
 manualtests/GenericTests/testsview/index.html   | 112 ++++
 .../testsview/src/GenericTestsContainer.mxml    |  32 ++
 .../testsview/src/MyInitialView.mxml            |  96 ++++
 .../testsview/src/controllers/MyController.as   |  52 ++
 .../testsview/src/models/MyModel.as             | 125 ++++
 .../testsview/src/models/TestResultsModel.as    |  40 ++
 33 files changed, 3153 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/438cb014/manualtests/GenericTests/build.xml
----------------------------------------------------------------------
diff --git a/manualtests/GenericTests/build.xml 
b/manualtests/GenericTests/build.xml
new file mode 100644
index 0000000..092bd36
--- /dev/null
+++ b/manualtests/GenericTests/build.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+
+
+<project name="GenericTests" default="main" basedir=".">
+    <property name="FLEXJS_HOME" location="../.."/>
+    <property name="example" value="GenericTests" />
+    
+
+    <!-- adding flexuint style meta collection, and additional testing meta 
tags (Event,Bindable,TestMeta)-->
+    <property name="theme_arg" 
value="-keep-as3-metadata+=Test,BeforeClass,AfterClass,Before,After,TestVariance,Event,Bindable,TestMeta"
 />
+    <property file="${FLEXJS_HOME}/env.properties"/>
+    <property environment="env"/>
+    <property file="${FLEXJS_HOME}/build.properties"/>
+    <property name="FLEX_HOME" value="${FLEXJS_HOME}"/>
+    <available file="${env.FALCON_HOME}/lib/falcon-mxmlc.jar"
+    type="file"
+    property="FALCON_HOME"
+    value="${env.FALCON_HOME}"/>
+    
+    <available 
file="${FLEXJS_HOME}/../flex-falcon/compiler/generated/dist/sdk/lib/falcon-mxmlc.jar"
+    type="file"
+    property="FALCON_HOME"
+    value="${FLEXJS_HOME}/../flex-falcon/compiler/generated/dist/sdk"/>
+    
+    <available file="${env.FALCONJX_HOME}/lib/jsc.jar"
+    type="file"
+    property="FALCONJX_HOME"
+    value="${env.FALCONJX_HOME}"/>
+    
+    <available file="${FLEXJS_HOME}/../flex-falcon/compiler-jx/lib/jsc.jar"
+    type="file"
+    property="FALCONJX_HOME"
+    value="${FLEXJS_HOME}/../flex-falcon/compiler-jx"/>
+    
+    <available file="${env.GOOG_HOME}/closure/goog/base.js"
+    type="file"
+    property="GOOG_HOME"
+    value="${env.GOOG_HOME}"/>
+    
+    <available 
file="${FLEXJS_HOME}/js/lib/google/closure-library/closure/goog/base.js"
+    type="file"
+    property="GOOG_HOME"
+    value="${FLEXJS_HOME}/js/lib/google/closure-library"/>
+    
+    <include file="${basedir}/../build_example.xml" />
+
+    <target name="main" 
depends="clean,build_example.compile,build_example.compilejs" 
description="Clean build of GenericTests">
+    </target>
+    
+    <target name="clean">
+        <delete dir="${basedir}/bin" failonerror="false" />
+        <delete dir="${basedir}/bin-debug" failonerror="false" />
+        <delete dir="${basedir}/bin-release" failonerror="false" />
+    </target>
+
+</project>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/438cb014/manualtests/GenericTests/src/GenericTests.mxml
----------------------------------------------------------------------
diff --git a/manualtests/GenericTests/src/GenericTests.mxml 
b/manualtests/GenericTests/src/GenericTests.mxml
new file mode 100644
index 0000000..0db0af9
--- /dev/null
+++ b/manualtests/GenericTests/src/GenericTests.mxml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!---
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+-->
+<js:Application xmlns:fx="http://ns.adobe.com/mxml/2009";
+                                  xmlns:local="*"
+                                  xmlns:models="models.*"
+                   xmlns:controllers="controllers.*"
+                                  
xmlns:js="library://ns.apache.org/flexjs/basic"                 
+                                  >
+       <fx:Style>
+               @namespace js "library://ns.apache.org/flexjs/basic";
+               js|Application {
+                       background-color:#ffffff ;
+               }
+       </fx:Style>
+       <js:valuesImpl>
+               <js:SimpleCSSValuesImpl />
+       </js:valuesImpl>
+       <js:initialView>
+               <local:MyInitialView />
+       </js:initialView>
+</js:Application>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/438cb014/manualtests/GenericTests/src/MyInitialView.mxml
----------------------------------------------------------------------
diff --git a/manualtests/GenericTests/src/MyInitialView.mxml 
b/manualtests/GenericTests/src/MyInitialView.mxml
new file mode 100644
index 0000000..2c8c966
--- /dev/null
+++ b/manualtests/GenericTests/src/MyInitialView.mxml
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<js:View xmlns:fx="http://ns.adobe.com/mxml/2009";
+                xmlns:js="library://ns.apache.org/flexjs/basic"
+                xmlns:local="*"
+                xmlns:acc="org.apache.flex.html.accessories.*"
+                initComplete="runTests()"
+>
+
+       <fx:Style>
+               .title {
+                       font-size: 14pt;
+                       font-weight: bold;
+               }
+               .body {
+                       left:10px;
+                       right:10px;
+               }
+       </fx:Style>
+
+       <fx:Script>
+               <![CDATA[
+               import org.apache.flex.html.Label;
+               import org.apache.flex.reflection.VariableDefinition;
+               import org.apache.flex.reflection.getDefinitionByName;
+               import org.apache.flex.reflection.describeType;
+               import org.apache.flex.reflection.TypeDefinition;
+
+               import testshim.FlexJSUnitTestRunner;
+               import testshim.TestResult;
+
+
+
+               private var _tests:Array;
+
+               public function runTests():void {
+                       var label:Label;
+                       var groups:Array = TestClasses.testClasses;
+                       var spaces:String = PLATFORM == "JS" ? 
"&nbsp;&nbsp;&nbsp;" : "   ";
+                       while (groups.length) {
+                               var testGroupClass:Class = groups.shift() as 
Class;
+                               var td:TypeDefinition = 
describeType(testGroupClass);
+                               label = new Label();
+                               label.text = "Running " + td.name + " Tests";
+                               output.addElement(label);
+                               var testClasses:Array = td.variables;
+                               testClasses.sortOn("name");
+                               var i:uint = 0, l:uint = testClasses.length;
+                               if (l == 0) {
+                                       label = new Label();
+                                       label.text = spaces+ "[Zero tests 
detected]";
+                                       output.addElement(label);
+                                       continue;
+                               }
+                               for (; i < l; i++) {
+                                       var varDef:VariableDefinition = 
testClasses[i];
+
+                                       var testClass:Class = 
getDefinitionByName(varDef.type.qualifiedName) as Class;
+                                       fails = [];
+                                       passes = [];
+                                       variances = [];
+                                       warnings = [];
+                                       var runner:FlexJSUnitTestRunner = new 
FlexJSUnitTestRunner(testClass, onTestResult);
+                                       runner.runTests();
+                                       label = new Label();
+
+                                       label.text = "TEST: " + 
runner.testingName + spaces + "Passed:" + runner.successCount + ", Failed:" + 
runner.failCount + ", assertions made:" + runner.successfulAssertions;
+                                       label.style = {color: runner.failCount 
== 0 ? "green" : "red"};
+                                       output.addElement(label);
+                                       if (runner.failCount > 0 || 
fails.length) {
+                                               //show any failing test details
+                                               appendTestResults(fails);
+                                       }
+                                       if (variances.length) {
+                                               appendTestResults(variances);
+                                       }
+                                       if (warnings.length) {
+                                               appendTestResults(warnings);
+                                       }
+                               }
+                       }
+
+               }
+
+
+               private var fails:Array;
+               private var passes:Array;
+               private var variances:Array;
+               private var warnings:Array;
+               public function onTestResult(result:TestResult):void {
+                       if (result.pass) passes.push(result);
+                       else fails.push(result);
+
+                       if (result.hasVariance && result.pass) {
+                               if (result.varianceTarget.indexOf(PLATFORM) != 
-1) {
+                                       //variance applies to this target
+                                       variances.push(result);
+                               }
+                       }
+
+                       if (result.warning!=null && result.pass && 
!result.hasVariance) {
+                               // a test result that would otherwise indicate 
a pass, but has a warning
+                               warnings.push(result);
+                       }
+               }
+
+               public function appendTestResults(array:Array):void {
+                       array = array.slice();
+                       var spaces:String = "   ";
+                       var newline:String = "\n" ;
+                       while (array.length) {
+                               var result:TestResult = array.shift();
+                               var label:Label = new Label();
+                               //label.x=10; <- fails in js, using 'spaces' 
below instead
+                               var message:String = spaces + 
result.toString(newline +spaces);
+
+                               if (result.hasVariance)
+                                       message = spaces + "VARIANCE:" + 
result.varianceDescription + newline + message ;
+                               if (result.warning != null) {
+                                       message =  spaces + result.warning 
+newline +message;
+                               }
+                               if (PLATFORM == "JS") {
+                                       message = escapeForHtml(message);
+                                       var jsSpaces:String = spaces.split(" 
").join("&nbsp;");
+                                       message = 
message.split(spaces).join(jsSpaces);
+                               }
+
+                               label.text = message;
+
+                               if (result.pass) {
+                                       var showOrange:Boolean = false;
+                                       if (result.hasVariance || 
result.warning!=null) showOrange = true;
+                                       label.style = {color: showOrange ? 
0xFFA500 : "green"};
+                               } else label.style = {color: "red"};
+                               output.addElement(label);
+                       }
+               }
+
+               private static function escapeForHtml( string : String ) : 
String {
+                       return  
string.split("<").join("&lt;").split(">").join("&gt;").split("\n").join("<br/>");
+               }
+
+
+               private static function getPlatform():String {
+                       try {
+                               var check:* = 
getDefinitionByName("flash.system.Capabilities");
+                       } catch (e:Error) {
+                               return "JS";
+                       }
+                       //if this next reference to 'check' is not included, 
then the above try/catch code
+                       // appears to be optimized away in js-release mode
+                       //[this issue was added to ObservedBugs Tests]
+                       if (check == null) {
+                               return "JS";
+                       }
+                       return "SWF";
+               }
+
+               public static const PLATFORM:String = getPlatform();
+               ]]>
+       </fx:Script>
+       <js:beads>
+               <js:ViewDataBinding/>
+       </js:beads>
+       <js:Container id="cont" height="50" className="body">
+               <js:beads>
+                       <js:VerticalLayout />
+               </js:beads>
+               <js:Label text="{PLATFORM} Cross-compiled Unit Tests" 
className="title" />
+       </js:Container>
+       <js:Container id="output" height="700" y="50" className="body">
+               <js:beads>
+                       <js:VerticalLayout />
+               </js:beads>
+       </js:Container>
+</js:View>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/438cb014/manualtests/GenericTests/src/README.txt
----------------------------------------------------------------------
diff --git a/manualtests/GenericTests/src/README.txt 
b/manualtests/GenericTests/src/README.txt
new file mode 100644
index 0000000..4ef6e3f
--- /dev/null
+++ b/manualtests/GenericTests/src/README.txt
@@ -0,0 +1,61 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+DESCRIPTION
+
+The GenericTests application is a very basic form of unit testing primarily
+intended for FlexJS framework developers. It is a 'lite' version of a small 
portion of 
+Flexunit code to support basic assertion tests.
+
+This Flex application may be run as a Flash SWF or cross-compiled (using 
Falcon JX)
+into JavaScript and HTML and run without Flash.
+
+There is a convenience html page for hosting the tests side-by-side that 
permits developers
+to refresh the test builds simultaneously and compare results in the browser, 
including the 
+ability to toggle between JS-Debug and JS-Release builds.
+While this is primarily intended for framework developers, it may be useful as 
a starting point
+for cross-compiled unit testing (during development only) in regular FlexJS 
projects.
+
+FRAMEWORK DEVELOPER NOTES
+To add new tests, follow the examples inside the flexUnitTests package, and 
add any new Test
+group or category level class (the classes directly inside flexUnitTests 
package) into the top 
+level TestClasses.as file. This should be all that is necessary to add new 
tests.
+
+MetaData
+[BeforeClass] -same as flexunit (typical: 'setupBeforClass')- runs a static 
method before the test class is instantiated
+[AfterClass] -same as flexunit (typical: 'tearDownAfterClass')- runs a static 
method after the test class has been processed
+[Before] -same as flexunit (typical: 'setup') - runs an instance method before 
the test class' test methods are processed
+[After] -same as flexunit (typical: 'tearDown') - runs an instance method 
after the test class' test methods are processed
+[Test] -same as flexunit (typical: 'testXXXX') - denotes a test method. No 
assumption about order of test methods being called should be made
+
+[TestVariance(variance="JS",description="Reason for variation in JS expected 
results")]
+The above is specific to this test app, and permits annotation of test methods 
where the expected results are different between compiler targets.
+The variance key in the meta data should be either "SWF" or "JS". This is the 
compiler target with the result that is considered to be different
+to what it ideally 'should be', but correct as per the current implementation 
of the framework. Usually this will be "JS". It indicates a known
+but currently acceptable difference between compiler targets.
+
+
+GENERAL NOTES
+
+In its first working version this app only supports synchronous simple 
assertions and 
+is intended to use test classes that are compatible with the flexunit tests 
that are 
+used in the full framework build. Future versions may include more advanced 
features.
+
+The cross-compilation to JavaScript often results in non-fatal warnings. Some 
of these warnings
+should be addressed in future releases of the Falcon JX compiler.

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/438cb014/manualtests/GenericTests/src/TestClasses.as
----------------------------------------------------------------------
diff --git a/manualtests/GenericTests/src/TestClasses.as 
b/manualtests/GenericTests/src/TestClasses.as
new file mode 100644
index 0000000..f7273c0
--- /dev/null
+++ b/manualtests/GenericTests/src/TestClasses.as
@@ -0,0 +1,37 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package
+{
+       //test groups
+       import flexUnitTests.*;
+
+
+       public class TestClasses 
+       {
+               
+               public static function get testClasses():Array {
+                       return [
+                                               CoreTester,
+                                               ReflectionTester,
+                                               ObservedBugsTester,
+                                               JiraIssuesTester
+                                       ];
+               }
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/438cb014/manualtests/GenericTests/src/flexUnitTests/CoreTester.as
----------------------------------------------------------------------
diff --git a/manualtests/GenericTests/src/flexUnitTests/CoreTester.as 
b/manualtests/GenericTests/src/flexUnitTests/CoreTester.as
new file mode 100644
index 0000000..56531d0
--- /dev/null
+++ b/manualtests/GenericTests/src/flexUnitTests/CoreTester.as
@@ -0,0 +1,30 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests
+{
+       import flexUnitTests.core.*
+
+    [Suite]
+    [RunWith("org.flexunit.runners.Suite")]
+    public class CoreTester
+    {
+        public var strandTesterTest:StrandTesterTest;
+               public var binaryDataTesterTest:BinaryDataTesterTest;
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/438cb014/manualtests/GenericTests/src/flexUnitTests/JiraIssuesTester.as
----------------------------------------------------------------------
diff --git a/manualtests/GenericTests/src/flexUnitTests/JiraIssuesTester.as 
b/manualtests/GenericTests/src/flexUnitTests/JiraIssuesTester.as
new file mode 100644
index 0000000..fc37533
--- /dev/null
+++ b/manualtests/GenericTests/src/flexUnitTests/JiraIssuesTester.as
@@ -0,0 +1,29 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests
+{
+       import flexUnitTests.jira.*
+       
+    [Suite]
+    [RunWith("org.flexunit.runners.Suite")]
+    public class JiraIssuesTester
+    {
+        
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/438cb014/manualtests/GenericTests/src/flexUnitTests/ObservedBugsTester.as
----------------------------------------------------------------------
diff --git a/manualtests/GenericTests/src/flexUnitTests/ObservedBugsTester.as 
b/manualtests/GenericTests/src/flexUnitTests/ObservedBugsTester.as
new file mode 100644
index 0000000..e01b7c2
--- /dev/null
+++ b/manualtests/GenericTests/src/flexUnitTests/ObservedBugsTester.as
@@ -0,0 +1,29 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests
+{
+       import flexUnitTests.observedbugs.*
+       
+    [Suite]
+    [RunWith("org.flexunit.runners.Suite")]
+    public class ObservedBugsTester
+    {
+        public var observedBugsTest1:ObservedBugTests;
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/438cb014/manualtests/GenericTests/src/flexUnitTests/ReflectionTester.as
----------------------------------------------------------------------
diff --git a/manualtests/GenericTests/src/flexUnitTests/ReflectionTester.as 
b/manualtests/GenericTests/src/flexUnitTests/ReflectionTester.as
new file mode 100644
index 0000000..2feaa14
--- /dev/null
+++ b/manualtests/GenericTests/src/flexUnitTests/ReflectionTester.as
@@ -0,0 +1,29 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests
+{
+       import flexUnitTests.reflection.*;
+       
+    [Suite]
+    [RunWith("org.flexunit.runners.Suite")]
+    public class ReflectionTester
+    {
+        public var reflectionTesterTest:ReflectionTesterTest;
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/438cb014/manualtests/GenericTests/src/flexUnitTests/core/BinaryDataTesterTest.as
----------------------------------------------------------------------
diff --git 
a/manualtests/GenericTests/src/flexUnitTests/core/BinaryDataTesterTest.as 
b/manualtests/GenericTests/src/flexUnitTests/core/BinaryDataTesterTest.as
new file mode 100644
index 0000000..b10d18c
--- /dev/null
+++ b/manualtests/GenericTests/src/flexUnitTests/core/BinaryDataTesterTest.as
@@ -0,0 +1,567 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests.core
+{
+
+
+    import org.apache.flex.utils.Endian;
+    import flexunit.framework.Assert;
+    import org.apache.flex.utils.BinaryData
+
+
+    public class BinaryDataTesterTest 
+       {
+
+               [Before]
+               public function setUp():void {
+               }
+
+               [After]
+               public function tearDown():void {
+               }
+
+               [BeforeClass]
+               public static function setUpBeforeClass():void {
+               }
+
+               [AfterClass]
+               public static function tearDownAfterClass():void {
+               }
+
+
+               //util check functions
+               private static function 
bytesMatchExpectedData(bd:BinaryData,expected:Array,offset:int=0):Boolean{
+                       var len:uint = expected.length;
+                       var end:uint=offset+len;
+                       for (var i:int=offset;i<end;i++) {
+                               var check:uint = bd.readByteAt(i);
+                               if (expected[i-offset]!=check) {
+                                       // trace('failed at 
',i,expected[i-offset],check);
+                                       return false;
+                               }
+                       }
+                       return true;
+               }
+
+               private static function 
reversedBytesMatch(bd1:BinaryData,bd2:BinaryData,len:uint,offset:int=0):Boolean{
+                       var end:uint=offset+len;
+                       for (var i:int=offset;i<end;i++) {
+                               if (bd1.readByteAt(i) != 
bd2.readByteAt(end-1-i)) return false;
+                       }
+                       return true;
+
+               }
+
+
+               [Test]
+               public function testBasicPositionAndLength():void
+               {
+                       var ba:BinaryData = new BinaryData();
+
+                       Assert.assertEquals("new Instance, position", 0, 
ba.position);
+                       Assert.assertEquals("new Instance, length", 0, 
ba.length);
+
+                       ba.position=100;
+                       Assert.assertEquals("position change, position", 100, 
ba.position);
+                       Assert.assertEquals("position change, length", 0, 
ba.length);
+                       Assert.assertEquals("position change, length", 0, 
ba.bytesAvailable);
+
+                       ba.length=100;
+                       Assert.assertEquals("length change, position", 100, 
ba.position);
+                       Assert.assertEquals("length change, length", 100, 
ba.length);
+
+                       ba.length=50;
+                       Assert.assertEquals("length change, position", 50, 
ba.position);
+                       Assert.assertEquals("length change, length", 50, 
ba.length);
+
+
+               }
+
+               [Test]
+               public function testAdvancedPositionAndLength():void
+               {
+                       var ba:BinaryData = new BinaryData();
+
+                       ba.position=100;
+                       ba.length=100;
+
+                       ba.writeByteAt(49,255);
+                       Assert.assertEquals("writeByteAt does not affect 
position",100, ba.position);
+                       Assert.assertEquals("writeByteAt (internal) does not 
affect length",100, ba.length);
+
+                       ba.readByteAt(48);
+                       Assert.assertEquals("readByteAt does not affect 
position",100, ba.position);
+                       Assert.assertEquals("readByteAt does not affect 
length",100, ba.length);
+
+                       ba.writeByteAt(199,255);
+                       Assert.assertEquals("writeByteAt (beyond length) does 
affect length",200, ba.length);
+                       Assert.assertEquals("writeByteAt (beyond length) does 
not affect position",100, ba.position);
+
+                       Assert.assertStrictlyEquals("out of range byte read 
request",0 ,ba.readByteAt(205));
+
+               }
+
+
+               [Test]
+               public function testUTFWritePosition():void
+               {
+                       var ba:BinaryData = new BinaryData();
+                       ba.writeUTF('This is a test');
+                       //writeUTF
+                       Assert.assertEquals("basic post-writeUTF position", 16, 
ba.position);
+                       ba=new BinaryData();
+                       ba.writeUTFBytes('This is a test');
+                       //writeUTFBytes
+                       Assert.assertEquals("basic post-writeUTFBytes 
position", 14, ba.position);
+
+                       //overlapping
+                       ba.position=5;
+                       ba.writeUTFBytes('This is a test');
+                       Assert.assertEquals("Advanced post-writeUTFBytes 
position (overlap)", 19, ba.position);
+
+               }
+
+               [Test]
+               public function testBooleanRoundTripping():void
+               {
+                       var ba:BinaryData = new BinaryData();
+                       ba.writeBoolean(true);
+                       ba.writeBoolean(false);
+                       ba.position = 0;
+                       Assert.assertTrue(ba.readBoolean());
+                       Assert.assertFalse(ba.readBoolean());
+               }
+
+               [Test]
+               public function testByteRoundTripping():void
+               {
+                       var ba:BinaryData = new BinaryData();
+                       ba.writeByte(255);
+                       ba.writeByte(256);
+                       ba.writeByte(-256);
+                       ba.writeByte(-257);
+                       ba.writeByte(-128);
+                       ba.writeByte(128);
+                       ba.writeByte(127);
+                       ba.writeByte(-50);
+                       ba.writeByte(50);
+                       ba.position = 0;
+
+
+                       Assert.assertEquals("Error testing post 
writeByte/readByte round-tripping", -1, ba.readByte());
+                       Assert.assertEquals("Error testing post 
writeByte/readByte round-tripping", 0, ba.readByte());
+                       Assert.assertEquals("Error testing post 
writeByte/readByte round-tripping", 0, ba.readByte());
+                       Assert.assertEquals("Error testing post 
writeByte/readByte round-tripping", -1, ba.readByte());
+                       Assert.assertEquals("Error testing post 
writeByte/readByte round-tripping", -128, ba.readByte());
+                       Assert.assertEquals("Error testing post 
writeByte/readByte round-tripping", -128, ba.readByte());
+                       Assert.assertEquals("Error testing post 
writeByte/readByte round-tripping", 127, ba.readByte());
+                       Assert.assertEquals("Error testing post 
writeByte/readByte round-tripping", -50, ba.readByte());
+                       Assert.assertEquals("Error testing post 
writeByte/readByte round-tripping", 50, ba.readByte());
+               }
+
+
+               [Test]
+               public function testUnsignedByteRoundTripping():void
+               {
+                       var ba:BinaryData = new BinaryData();
+                       ba.writeByte(255);
+                       ba.writeByte(256);
+                       ba.writeByte(-256);
+                       ba.writeByte(-257);
+                       ba.writeByte(-128);
+                       ba.writeByte(128);
+                       ba.writeByte(127);
+                       ba.writeByte(-50);
+                       ba.writeByte(50);
+                       ba.position = 0;
+                       //check read values
+
+                       Assert.assertEquals("Error testing post 
writeByte/readUnsignedByte round-tripping", 255, ba.readUnsignedByte());
+                       Assert.assertEquals("Error testing post 
writeByte/readUnsignedByte round-tripping", 0, ba.readUnsignedByte());
+                       Assert.assertEquals("Error testing post 
writeByte/readUnsignedByte round-tripping", 0, ba.readUnsignedByte());
+                       Assert.assertEquals("Error testing post 
writeByte/readUnsignedByte round-tripping", 255, ba.readUnsignedByte());
+                       Assert.assertEquals("Error testing post 
writeByte/readUnsignedByte round-tripping", 128, ba.readUnsignedByte());
+                       Assert.assertEquals("Error testing post 
writeByte/readUnsignedByte round-tripping", 128, ba.readUnsignedByte());
+                       Assert.assertEquals("Error testing post 
writeByte/readUnsignedByte round-tripping", 127, ba.readUnsignedByte());
+                       Assert.assertEquals("Error testing post 
writeByte/readUnsignedByte round-tripping", 206, ba.readUnsignedByte());
+                       Assert.assertEquals("Error testing post 
writeByte/readUnsignedByte round-tripping", 50, ba.readUnsignedByte());
+               }
+
+
+               [Test]
+               public function testBasicEndian():void
+               {
+
+                       var systemEndian:String = Endian.systemEndian;
+                       //check we have a decisive systemEndian detection
+                       Assert.assertNotNull(systemEndian );
+
+
+                       var ba:BinaryData = new BinaryData();
+                       var defaultEndian:String = ba.endian;
+
+                       var alternateEndian:String = (defaultEndian == 
Endian.BIG_ENDIAN) ? Endian.LITTLE_ENDIAN : Endian.BIG_ENDIAN;
+                       var expected:Object ={};
+                       expected[Endian.BIG_ENDIAN] = 218038271;
+                       expected[Endian.LITTLE_ENDIAN] = 4294966796;
+                       var bytes:Array = [12, 254, 255, 255];
+                       for each(var byte:uint in bytes) ba.writeByte(byte);
+                       ba.position = 0;
+
+                       Assert.assertEquals("testing endian:"+defaultEndian, 
expected[defaultEndian] , ba.readUnsignedInt());
+
+                       ba.position = 0;
+                       ba.endian = alternateEndian;
+                       var result:uint =  ba.readUnsignedInt();
+
+                       Assert.assertEquals("testing endian:"+alternateEndian, 
expected[alternateEndian], result);
+
+                       ba.position = 0;
+                       ba.endian = defaultEndian;
+                       Assert.assertEquals("testing endian:"+defaultEndian, 
int(expected[defaultEndian]), ba.readInt());
+
+                       ba.position = 0;
+                       ba.endian = alternateEndian;
+                       Assert.assertEquals("testing endian:"+alternateEndian, 
int(expected[alternateEndian]), ba.readInt());
+
+                       var leBA:BinaryData = new BinaryData();
+                       leBA.endian = Endian.LITTLE_ENDIAN;
+                       var beBA:BinaryData = new BinaryData();
+                       beBA.endian = Endian.BIG_ENDIAN;
+                       //int writing
+                       beBA.writeInt(-500);
+                       leBA.writeInt(-500);
+                       //check they represent reversed byte sequence
+                       Assert.assertTrue(reversedBytesMatch(beBA,leBA,4));
+                       beBA.position=0;
+                       leBA.position=0;
+                       //check they each read back to the same uint value
+                       Assert.assertEquals('big 
endian',4294966796,beBA.readUnsignedInt());
+                       Assert.assertEquals('little 
endian',4294966796,leBA.readUnsignedInt());
+
+                       beBA.position=0;
+                       leBA.position=0;
+                       //uint writing
+                       beBA.writeUnsignedInt(4294966796);
+                       leBA.writeUnsignedInt(4294966796);
+                       //check they represent reversed byte sequence
+                       Assert.assertTrue(reversedBytesMatch(beBA,leBA,4));
+                       beBA.position=0;
+                       leBA.position=0;
+                       //check they each read back to the same uint value
+                       Assert.assertEquals('big 
endian',4294966796,beBA.readUnsignedInt());
+                       Assert.assertEquals('little 
endian',4294966796,leBA.readUnsignedInt());
+
+
+                       beBA.position=0;
+                       leBA.position=0;
+
+                       //check they each read back to the same int value
+                       Assert.assertEquals('big endian',-500,beBA.readInt());
+                       Assert.assertEquals('little 
endian',-500,leBA.readInt());
+
+
+                       beBA.position=0;
+                       leBA.position=0;
+
+                       //short writing
+                       beBA.writeShort(-500);
+                       leBA.writeShort(-500);
+                       //check they represent reversed byte sequence
+                       Assert.assertTrue(reversedBytesMatch(beBA,leBA,2));
+                       beBA.position=0;
+                       leBA.position=0;
+                       //check they each read back to the same uint value
+                       Assert.assertEquals('big 
endian',65036,beBA.readUnsignedShort());
+                       Assert.assertEquals('little 
endian',65036,leBA.readUnsignedShort());
+
+
+                       beBA.position=0;
+                       leBA.position=0;
+
+                       //check they each read back to the same int value
+                       Assert.assertEquals('big endian',-500,beBA.readShort());
+                       Assert.assertEquals('little 
endian',-500,leBA.readShort());
+
+               }
+
+
+               [Test]
+               public function testUTFRoundtripping():void
+               {
+
+                       //test big-endian round-tripping
+                       var ba:BinaryData = new BinaryData();
+                       ba.endian = Endian.BIG_ENDIAN;
+                       ba.writeUTF('This is a test');
+                       //writeUTF
+                       Assert.assertEquals("basic post-writeUTF position", 16, 
ba.position);
+                       ba.position = 0;
+                       Assert.assertEquals("utf big endian round-tripping", 
'This is a test', ba.readUTF());
+
+                       ba = new BinaryData();
+                       //test little-endian round-tripping
+                       ba.endian = Endian.LITTLE_ENDIAN;
+                       ba.writeUTF('This is a test');
+                       //writeUTF
+                       Assert.assertEquals("basic post-writeUTF position", 16, 
ba.position);
+                       ba.position = 0;
+                       Assert.assertEquals("utf big endian round-tripping", 
'This is a test', ba.readUTF());
+
+               }
+
+
+               [Test]
+               public function testShortRoundTripping():void
+               {
+                       var ba:BinaryData = new BinaryData();
+                       //test LITTLE_ENDIAN round-tripping
+                       ba.endian = Endian.LITTLE_ENDIAN;
+                       ba.writeShort(255);
+                       ba.writeShort(-50);
+                       ba.writeShort(50);
+                       ba.position = 0;
+
+                       Assert.assertEquals("Error testing post 
writeShort/readShort round-tripping", 6, ba.length);
+                       Assert.assertEquals("Error testing post 
writeShort/readShort round-tripping", 255, ba.readShort());
+                       Assert.assertEquals("Error testing post 
writeShort/readShort round-tripping", -50, ba.readShort());
+                       Assert.assertEquals("Error testing post 
writeShort/readShort round-tripping", 50, ba.readShort());
+
+                       //test BIG_ENDIAN round-tripping
+
+                       ba.position = 0;
+                       ba.endian = Endian.BIG_ENDIAN ;
+                       ba.writeShort(255);
+                       ba.writeShort(-50);
+                       ba.writeShort(50);
+                       ba.position = 0;
+
+                       Assert.assertEquals("Error testing post 
writeShort/readShort round-tripping", 6, ba.length);
+                       Assert.assertEquals("Error testing post 
writeShort/readShort round-tripping", 255, ba.readShort());
+                       Assert.assertEquals("Error testing post 
writeShort/readShort round-tripping", -50, ba.readShort());
+                       Assert.assertEquals("Error testing post 
writeShort/readShort round-tripping", 50, ba.readShort());
+               }
+
+
+               [Test]
+               public function testUnsignedShortRoundTripping():void
+               {
+                       var ba:BinaryData = new BinaryData();
+                       //test LITTLE_ENDIAN round-tripping
+                       ba.endian = Endian.LITTLE_ENDIAN;
+                       ba.writeShort(255);
+                       ba.writeShort(-50);
+                       ba.writeShort(50);
+                       ba.position = 0;
+
+                       Assert.assertEquals("Error testing post unsigned 
writeShort/readShort round-tripping", 6, ba.length);
+                       Assert.assertEquals("Error testing post unsigned 
writeShort/readShort round-tripping", 255, ba.readUnsignedShort());
+                       Assert.assertEquals("Error testing post unsigned 
writeShort/readShort round-tripping", 65486, ba.readUnsignedShort());
+                       Assert.assertEquals("Error testing post unsigned 
writeShort/readShort round-tripping", 50, ba.readUnsignedShort());
+
+                       //test BIG_ENDIAN round-tripping
+
+                       ba.position = 0;
+                       ba.endian = Endian.BIG_ENDIAN ;
+                       ba.writeShort(255);
+                       ba.writeShort(-50);
+                       ba.writeShort(50);
+                       ba.position = 0;
+
+                       Assert.assertEquals("Error testing post unsigned 
writeShort/readShort round-tripping", 6, ba.length);
+                       Assert.assertEquals("Error testing post unsigned 
writeShort/readShort round-tripping", 255, ba.readUnsignedShort());
+                       Assert.assertEquals("Error testing post unsigned 
writeShort/readShort round-tripping", 65486, ba.readUnsignedShort());
+                       Assert.assertEquals("Error testing post unsigned 
writeShort/readShort round-tripping", 50, ba.readUnsignedShort());
+               }
+
+               [Test]
+               public function testIntRoundTripping():void
+               {
+                       var ba:BinaryData = new BinaryData();
+                       //test LITTLE_ENDIAN round-tripping
+                       ba.endian = Endian.LITTLE_ENDIAN;
+                       ba.writeInt(65536);
+                       ba.writeInt(-50);
+                       ba.writeInt(50);
+                       ba.position = 0;
+
+                       Assert.assertEquals("Error testing post 
writeInt/readInt round-tripping", 12, ba.length);
+                       Assert.assertEquals("Error testing post 
writeInt/readInt round-tripping", 65536, ba.readInt());
+                       Assert.assertEquals("Error testing post 
writeInt/readInt round-tripping", -50, ba.readInt());
+                       Assert.assertEquals("Error testing post 
writeInt/readInt round-tripping", 50, ba.readInt());
+
+                       //test BIG_ENDIAN round-tripping
+
+                       ba.position = 0;
+                       ba.endian = Endian.BIG_ENDIAN ;
+                       ba.writeInt(65536);
+                       ba.writeInt(-50);
+                       ba.writeInt(50);
+                       ba.position = 0;
+
+                       Assert.assertEquals("Error testing post 
writeInt/readInt round-tripping", 12, ba.length);
+                       Assert.assertEquals("Error testing post 
writeInt/readInt round-tripping", 65536, ba.readInt());
+                       Assert.assertEquals("Error testing post 
writeInt/readInt round-tripping", -50, ba.readInt());
+                       Assert.assertEquals("Error testing post 
writeInt/readInt round-tripping", 50, ba.readInt());
+               }
+
+
+               [Test]
+               public function testUnsignedIntRoundTripping():void
+               {
+                       var ba:BinaryData = new BinaryData();
+                       //test LITTLE_ENDIAN round-tripping
+                       ba.endian = Endian.LITTLE_ENDIAN;
+                       ba.writeUnsignedInt(65536);
+                       ba.writeUnsignedInt(-50);
+                       ba.writeUnsignedInt(50);
+                       ba.position = 0;
+
+                       Assert.assertEquals("Error testing post 
writeInt/readInt round-tripping", 12, ba.length);
+                       Assert.assertEquals("Error testing post 
writeInt/readInt round-tripping",65536, ba.readUnsignedInt());
+                       Assert.assertEquals("Error testing post 
writeInt/readInt round-tripping", 4294967246, ba.readUnsignedInt());
+                       Assert.assertEquals("Error testing post 
writeInt/readInt round-tripping", 50, ba.readUnsignedInt());
+
+                       //test BIG_ENDIAN round-tripping
+
+                       ba.position = 0;
+                       ba.endian = Endian.BIG_ENDIAN ;
+                       ba.writeUnsignedInt(65536);
+                       ba.writeUnsignedInt(-50);
+                       ba.writeUnsignedInt(50);
+                       ba.position = 0;
+
+                       Assert.assertEquals("Error testing post 
writeInt/readInt round-tripping", 12, ba.length);
+                       Assert.assertEquals("Error testing post 
writeInt/readInt round-tripping",65536, ba.readUnsignedInt());
+                       Assert.assertEquals("Error testing post 
writeInt/readInt round-tripping", 4294967246, ba.readUnsignedInt());
+                       Assert.assertEquals("Error testing post 
writeInt/readInt round-tripping", 50, ba.readUnsignedInt());
+               }
+
+               [Test]
+               public function testFloatRoundTripping():void
+               {
+                       var ble:BinaryData = new BinaryData();
+                       //test LITTLE_ENDIAN round-tripping
+                       ble.endian = Endian.LITTLE_ENDIAN;
+                       ble.writeFloat(86.54);
+
+
+                       Assert.assertEquals("Error testing post 
writeFloat/readFloat round-tripping", 4, ble.length);
+                       Assert.assertEquals("Error testing post 
writeFloat/readFloat round-tripping", 4, ble.position);
+                       //check bytes to account for precision loss between 
double and float comparisons
+                       Assert.assertTrue("Error testing post 
writeFloat/readFloat round-tripping", 
bytesMatchExpectedData(ble,[123,20,173,66]));
+
+                       var bbe:BinaryData = new BinaryData();
+                       //test BIG_ENDIAN round-tripping
+                       bbe.endian = Endian.BIG_ENDIAN;
+                       bbe.writeFloat(86.54);
+
+
+                       Assert.assertEquals("Error testing post 
writeFloat/readFloat round-tripping", 4, bbe.length);
+                       Assert.assertEquals("Error testing post 
writeFloat/readFloat round-tripping", 4, bbe.position);
+                       //check bytes to account for precision loss between 
double and float comparisons
+                       Assert.assertTrue("Error testing post 
writeFloat/readFloat round-tripping", 
bytesMatchExpectedData(bbe,[66,173,20,123]));
+
+
+               }
+
+
+               [Test]
+               public function testDoubleRoundTripping():void
+               {
+
+                       var ble:BinaryData = new BinaryData();
+                       //test LITTLE_ENDIAN round-tripping
+                       ble.endian = Endian.LITTLE_ENDIAN;
+                       ble.writeDouble(86.54);
+
+
+                       Assert.assertEquals("Error testing post 
writeDouble/readDouble round-tripping", 8, ble.length);
+                       Assert.assertEquals("Error testing post 
writeDouble/readDouble round-tripping", 8, ble.position);
+
+                       //check bytes
+                       Assert.assertTrue("Error testing post 
writeDouble/readDouble round-tripping", 
bytesMatchExpectedData(ble,[195,245,40,92,143,162,85,64]));
+
+                       var bbe:BinaryData = new BinaryData();
+                       //test BIG_ENDIAN round-tripping
+                       bbe.endian = Endian.BIG_ENDIAN;
+                       bbe.writeDouble(86.54);
+
+
+                       Assert.assertEquals("Error testing post 
writeDouble/readDouble round-tripping", 8, bbe.length);
+                       Assert.assertEquals("Error testing post 
writeDouble/readDouble round-tripping", 8, bbe.position);
+                       //check bytes
+
+                       Assert.assertTrue("Error testing post 
writeDouble/readDouble round-tripping", 
bytesMatchExpectedData(bbe,[64,85,162,143,92,40,245,195]));
+
+
+                       ble.position = 0;
+                       bbe.position = 0;
+                       Assert.assertEquals("Error testing post 
writeDouble/readDouble round-tripping", 86.54, bbe.readDouble());
+                       Assert.assertEquals("Error testing post 
writeDouble/readDouble round-tripping", 86.54, ble.readDouble());
+
+                       Assert.assertEquals("Error testing post 
writeDouble/readDouble round-tripping", 8, bbe.position);
+                       Assert.assertEquals("Error testing post 
writeDouble/readDouble round-tripping", 8, ble.position);
+
+               }
+
+
+
+               [Test]
+               public function testWriteBytes():void
+               {
+                       var ba:BinaryData = new BinaryData();
+                       for (var i:int=0;i<50;i++) ba.writeByte(i);
+
+
+                       var newBa:BinaryData = new BinaryData();
+                       newBa.writeBytes(ba);
+
+                       Assert.assertEquals("BinaryData writeBytes: length", 
50, newBa.length);
+                       Assert.assertEquals("BinaryData writeBytes: position", 
50, newBa.position);
+
+                       for (i=0;i<50;i++) {
+                               Assert.assertEquals("BinaryData writeBytes: 
content check", i, newBa.array[i]);
+                       }
+
+
+
+               }
+
+               [Test]
+               public function testReadBytes():void
+               {
+                       var ba:BinaryData = new BinaryData();
+                       for (var i:int=0;i<50;i++) ba.writeByte(i);
+                       ba.position=0;
+                       var newBa:BinaryData = new BinaryData();
+
+                       ba.readBytes(newBa,5,10);
+                       Assert.assertEquals("BinaryData readBytes: position", 
10, ba.position);
+                       Assert.assertEquals("BinaryData readBytes: length", 15, 
newBa.length);
+                       Assert.assertEquals("BinaryData readBytes: position", 
0, newBa.position);
+                       var expected:Array = [0,0,0,0,0,0,1,2,3,4,5,6,7,8,9];
+                       for (i=5;i<15;i++) {
+                               Assert.assertEquals("BinaryData readBytes: 
content check", expected[i], newBa.array[i]);
+                       }
+               }
+
+
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/438cb014/manualtests/GenericTests/src/flexUnitTests/core/StrandTesterTest.as
----------------------------------------------------------------------
diff --git 
a/manualtests/GenericTests/src/flexUnitTests/core/StrandTesterTest.as 
b/manualtests/GenericTests/src/flexUnitTests/core/StrandTesterTest.as
new file mode 100644
index 0000000..f6715bb
--- /dev/null
+++ b/manualtests/GenericTests/src/flexUnitTests/core/StrandTesterTest.as
@@ -0,0 +1,55 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests.core
+{
+    import flexunit.framework.Assert;
+    
+    import org.apache.flex.core.Strand;
+    
+    public class StrandTesterTest
+    {          
+        [Before]
+        public function setUp():void
+        {
+        }
+        
+        [After]
+        public function tearDown():void
+        {
+        }
+        
+        [BeforeClass]
+        public static function setUpBeforeClass():void
+        {
+        }
+        
+        [AfterClass]
+        public static function tearDownAfterClass():void
+        {
+        }
+        
+        [Test]
+        public function testIdProperty():void
+        {
+            var strand:Strand = new Strand();
+            strand.id = "foo";
+            Assert.assertEquals("Error testing Srand.id", "foo",strand.id);
+        }        
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/438cb014/manualtests/GenericTests/src/flexUnitTests/jira/JiraTesterTest.as
----------------------------------------------------------------------
diff --git a/manualtests/GenericTests/src/flexUnitTests/jira/JiraTesterTest.as 
b/manualtests/GenericTests/src/flexUnitTests/jira/JiraTesterTest.as
new file mode 100644
index 0000000..c361f39
--- /dev/null
+++ b/manualtests/GenericTests/src/flexUnitTests/jira/JiraTesterTest.as
@@ -0,0 +1,73 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests.jira
+{
+    import flexunit.framework.Assert;
+
+    
+    public class JiraTesterTest
+    {          
+               public static var isJS:Boolean;
+        [BeforeClass]
+        public static function setUpBeforeClass():void
+        {
+            var js:Boolean = false;
+            try {
+                var check:* = getDefinitionByName("flash.system.Capabilities");
+            } catch (e:Error) {
+                js = true;
+            }
+            //if this next reference to 'check' is not included, then the 
above try/catch code
+            // appears to be optimized away in js-release mode
+            //todo: this is inconsistent with swf, need to create simple test 
case for jx compiler/gcc
+            if (check == null) {
+                js = true;
+            }
+            isJS = js;
+        }
+               
+               [AfterClass]
+        public static function tearDownAfterClass():void
+        {
+        }
+       
+       
+        [Before]
+        public function setUp():void
+        {
+        }
+        
+        [After]
+        public function tearDown():void
+        {
+        }
+        
+       
+        /*
+               // TEST METHODS 
+               */
+        
+               //example, postfix the test method with JIRA issue reference:
+        /*[Test]
+        public function testJIRA_FLEX_9999():void
+        {
+
+        }*/    
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/438cb014/manualtests/GenericTests/src/flexUnitTests/observedbugs/ObservedBugTests.as
----------------------------------------------------------------------
diff --git 
a/manualtests/GenericTests/src/flexUnitTests/observedbugs/ObservedBugTests.as 
b/manualtests/GenericTests/src/flexUnitTests/observedbugs/ObservedBugTests.as
new file mode 100644
index 0000000..0a805cc
--- /dev/null
+++ 
b/manualtests/GenericTests/src/flexUnitTests/observedbugs/ObservedBugTests.as
@@ -0,0 +1,86 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests.observedbugs
+{
+    import flexunit.framework.Assert;
+    import org.apache.flex.reflection.*;
+    
+    public class ObservedBugTests
+    {          
+       
+        public static var isJS:Boolean;
+        [BeforeClass]
+        public static function setUpBeforeClass():void
+        {
+            var js:Boolean = false;
+            try {
+                var check:* = getDefinitionByName("flash.system.Capabilities");
+            } catch (e:Error) {
+                js = true;
+            }
+            //if this next reference to 'check' is not included, then the 
above try/catch code
+            // appears to be optimized away in js-release mode
+            //todo: this is inconsistent with swf, need to create simple test 
case for jx compiler/gcc
+            if (check == null) {
+                js = true;
+            }
+            isJS = js;
+        }
+        
+        [AfterClass]
+        public static function tearDownAfterClass():void
+        {
+        }
+               
+                [Before]
+        public function setUp():void
+        {
+        }
+        
+        [After]
+        public function tearDown():void
+        {
+        }
+
+
+        [TestVariance(variance="JS",description="Variance in test, this test 
fails in JS-Release mode only")]
+        [Test]
+        public function testTryCatchJSReleaseModeFail():void
+        {
+            var js:Boolean = false;
+            try {
+                var check:* = getDefinitionByName("flash.system.Capabilities");
+            } catch (e:Error) {
+                js = true;
+            }
+                       
+                       //if this next reference to 'check' variable is not 
included, then the above try/catch code
+            // appears to be optimized away in js-release mode
+            //todo: this is inconsistent with swf
+            /* if (check == null) {
+                js = true;
+            }*/
+            Assert.assertTrue("Unexpected value following 
try/catch",(js==isJS));
+
+
+        }
+               
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/438cb014/manualtests/GenericTests/src/flexUnitTests/reflection/ReflectionTesterTest.as
----------------------------------------------------------------------
diff --git 
a/manualtests/GenericTests/src/flexUnitTests/reflection/ReflectionTesterTest.as 
b/manualtests/GenericTests/src/flexUnitTests/reflection/ReflectionTesterTest.as
new file mode 100644
index 0000000..0ea5126
--- /dev/null
+++ 
b/manualtests/GenericTests/src/flexUnitTests/reflection/ReflectionTesterTest.as
@@ -0,0 +1,368 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests.reflection
+{
+    import flexunit.framework.Assert;
+       import flexUnitTests.reflection.support.*;
+    import org.apache.flex.reflection.*;
+    
+    public class ReflectionTesterTest
+    {          
+       
+        public static var isJS:Boolean;
+        [BeforeClass]
+        public static function setUpBeforeClass():void
+        {
+            var js:Boolean = false;
+            try {
+                var check:* = getDefinitionByName("flash.system.Capabilities");
+            } catch (e:Error) {
+                js = true;
+            }
+            //if this next reference to 'check' is not included, then the 
above try/catch code
+            //appears to be optimized away in js-release mode
+            //a separate test has been created for this
+            if (check == null) {
+                js = true;
+            }
+            isJS = js;
+        }
+        
+        [AfterClass]
+        public static function tearDownAfterClass():void
+        {
+        }
+               
+                [Before]
+        public function setUp():void
+        {
+        }
+        
+        [After]
+        public function tearDown():void
+        {
+        }
+
+        private static function retrieveItemWithName(collection:Array, 
name:String):DefinitionBase {
+            var ret:DefinitionBase;
+            var i:uint=0,l:uint=collection.length;
+            for (;i<l;i++) {
+                if (collection[i].name==name) {
+                    ret = collection[i];
+                    break;
+                }
+            }
+
+            return ret;
+        }
+
+
+        [Test]
+        public function testBasicDescribeTypeClass():void
+        {
+            var def:TypeDefinition = describeType(TestClass2);
+
+            Assert.assertEquals("Unexpected package 
name",def.packageName,"flexUnitTests.reflection.support");
+            Assert.assertEquals("Unexpected type name",def.name,"TestClass2");
+
+            var variables:Array = def.variables;
+            Assert.assertEquals("unexpected variables 
length",1,variables.length);
+
+
+            var methods:Array = def.methods;
+            Assert.assertEquals("unexpected methods length",2,methods.length);
+
+            var accessors:Array = def.accessors;
+            Assert.assertEquals("unexpected accessors 
length",3,accessors.length);
+
+            var constructor:MethodDefinition = def.constructorMethod;
+            Assert.assertEquals("unexpected constructor declaredBy",
+                    "flexUnitTests.reflection.support.TestClass2",
+                    constructor.declaredBy.qualifiedName);
+
+            Assert.assertEquals("unexpected constructor params",
+                    1,
+                    constructor.parameters.length);
+
+            var meta:Array = def.retrieveMetaDataByName("TestMeta");
+            Assert.assertEquals("unexpected class specific meta length",
+                    1,
+                    meta.length);
+
+
+            def = describeType(TestClass4);
+            Assert.assertEquals("Unexpected package 
name",def.packageName,"flexUnitTests.reflection.support");
+            Assert.assertEquals("Unexpected type name",def.name,"TestClass4");
+
+            variables = def.variables;
+            Assert.assertEquals("unexpected variables 
length",2,variables.length);
+
+
+            methods = def.methods;
+            Assert.assertEquals("unexpected methods length",4,methods.length);
+
+            accessors = def.accessors;
+            Assert.assertEquals("unexpected accessors 
length",6,accessors.length);
+
+            constructor = def.constructorMethod;
+            Assert.assertEquals("unexpected constructor declaredBy",
+                    "flexUnitTests.reflection.support.TestClass4",
+                    constructor.declaredBy.qualifiedName);
+
+            Assert.assertEquals("unexpected constructor params",
+                    0,
+                    constructor.parameters.length);
+
+
+
+        }
+
+
+
+
+        [TestVariance(variance="JS",description="Variance in test due to 
current inability for js target to reflect into non-FlexJS base classes or 
typedefs")]
+               [Test]
+        public function testDescribeTypeClass():void
+        {
+            var def:TypeDefinition = describeType(TestClass1);
+            var expected:*;
+            Assert.assertEquals("Unexpected package 
name","flexUnitTests.reflection.support",def.packageName);
+            Assert.assertEquals("Unexpected type name",def.name,"TestClass1");
+
+            var variables:Array = def.variables;
+            Assert.assertEquals("unexpected instance variables 
length",3,variables.length);
+
+            //there is a difference based on the EventDispatcher inheritance 
chain differences between js and swf:
+            expected = isJS ? 3 : 7;
+            var methods:Array = def.methods;
+            Assert.assertEquals("unexpected instance methods 
length",expected,methods.length);
+
+            var accessors:Array = def.accessors;
+            Assert.assertEquals("unexpected instance accessors 
length",4,accessors.length);
+
+            var staticVariables:Array =def.staticVariables;
+            Assert.assertEquals("unexpected static variables 
length",2,staticVariables.length);
+
+            var staticMethods:Array = def.staticMethods;
+            Assert.assertEquals("unexpected static methods 
length",1,staticMethods.length);
+            //there is a difference based on the native inheritance of 
readonly 'prototype' not collected from 'Class' (or Object for js):
+            expected = isJS ? 3 : 4;
+            var staticAccessors:Array = def.staticAccessors;
+            Assert.assertEquals("unexpected static accessors 
length",expected,staticAccessors.length);
+
+                       
+        }
+
+        [TestVariance(variance="JS",description="Variance in test due to 
current inability for js target to reflect into non-FlexJS base classes or 
typedefs")]
+        [Test]
+        public function testDescribeTypeInstance():void
+        {
+            var def:TypeDefinition = describeType(new TestClass1());
+            var expected:*;
+            Assert.assertEquals("Unexpected package 
name","flexUnitTests.reflection.support",def.packageName);
+            Assert.assertEquals("Unexpected type name",def.name,"TestClass1");
+
+            var variables:Array = def.variables;
+            Assert.assertEquals("unexpected instance variables 
length",3,variables.length);
+
+            //there is a difference based on the EventDispatcher inheritance 
chain differences between js and swf:
+            expected = isJS ? 3 : 7;
+            var methods:Array = def.methods;
+            Assert.assertEquals("unexpected instance methods 
length",expected,methods.length);
+
+            var accessors:Array = def.accessors;
+            Assert.assertEquals("unexpected instance accessors 
length",4,accessors.length);
+
+            var staticVariables:Array =def.staticVariables;
+            Assert.assertEquals("unexpected static variables 
length",2,staticVariables.length);
+
+            var staticMethods:Array = def.staticMethods;
+            Assert.assertEquals("unexpected static methods 
length",1,staticMethods.length);
+            //there is a difference based on the native inheritance of 
readonly 'prototype' not collected from 'Class' (or Object for js):
+            expected = isJS ? 3 : 4;
+            var staticAccessors:Array = def.staticAccessors;
+            Assert.assertEquals("unexpected static accessors 
length",expected,staticAccessors.length);
+
+
+        }
+
+        [TestVariance(variance="JS",description="Variance in baseClasses due 
to current inability for js target to reflect into non-FlexJS base classes or 
typedefs")]
+        [Test]
+        public function testBaseClasses():void{
+            var def:TypeDefinition = describeType(TestClass1);
+
+            var baseClasses:Array = def.baseClasses;
+            var expected:uint = isJS ? 1 : 3;
+            Assert.assertEquals("unexpected baseclasses 
length",expected,baseClasses.length);
+        }
+
+
+        [Test]
+        public function testMemberAccess():void{
+            //all of these should succeed without error
+            var inst:TestClass2 = new TestClass2("");
+            var def:TypeDefinition = describeType(inst);
+
+            /** instance variables **/
+
+            var variables:Array = def.variables;
+            var variable:VariableDefinition = variables[0];
+            Assert.assertEquals("unexpected variable 
name","testVar",variable.name);
+            var meta:MetaDataDefinition = 
variable.retrieveMetaDataByName("TestMeta")[0];
+            Assert.assertEquals("unexpected meta name","TestMeta",meta.name);
+
+            var metaArg:MetaDataArgDefinition = meta.getArgsByKey("foo")[0];
+            Assert.assertEquals("unexpected meta arg name","foo",metaArg.name);
+            Assert.assertEquals("unexpected meta arg 
value","instanceVariable",metaArg.value);
+
+            Assert.assertEquals("unexpected reflection initial variable 
value","testVar_val",inst[variable.name]);
+
+            var accessors:Array = def.accessors;
+            var testReadOnly:AccessorDefinition = 
retrieveItemWithName(accessors,"testReadOnly") as AccessorDefinition;
+            meta = testReadOnly.retrieveMetaDataByName("TestMeta")[0];
+            Assert.assertEquals("unexpected meta name","TestMeta",meta.name);
+
+            metaArg = meta.getArgsByKey("foo")[0];
+            Assert.assertEquals("unexpected meta arg name","foo",metaArg.name);
+            Assert.assertEquals("unexpected meta arg 
value","instanceAccessor",metaArg.value);
+
+            /** instance accessors **/
+            var testWriteOnly:AccessorDefinition = 
retrieveItemWithName(accessors,"testWriteOnly") as AccessorDefinition;
+            var testReadWrite:AccessorDefinition = 
retrieveItemWithName(accessors,"testReadWrite") as AccessorDefinition;
+            Assert.assertNotNull(testReadOnly);
+            Assert.assertNotNull(testWriteOnly);
+            Assert.assertNotNull(testReadWrite);
+
+            Assert.assertEquals("unexpected accessor initial 
value","instanceAccessor_initial_value",inst[testReadOnly.name]);
+            Assert.assertEquals("unexpected accessor initial 
value","instanceAccessor_initial_value",inst[testReadWrite.name]);
+
+            inst[testWriteOnly.name] = "test";
+            Assert.assertEquals("unexpected accessor initial 
value","test",inst[testReadOnly.name]);
+            Assert.assertEquals("unexpected accessor initial 
value","test",inst[testReadWrite.name]);
+
+            inst[testReadWrite.name] = "test2";
+            Assert.assertEquals("unexpected accessor initial 
value","test2",inst[testReadOnly.name]);
+            Assert.assertEquals("unexpected accessor initial 
value","test2",inst[testReadWrite.name]);
+
+            /** instance methods **/
+            var methods:Array = def.methods;
+            var testMethod:MethodDefinition = 
retrieveItemWithName(methods,"testMethod") as MethodDefinition;
+            meta = testMethod.retrieveMetaDataByName("TestMeta")[0];
+            Assert.assertEquals("unexpected meta name","TestMeta",meta.name);
+
+            metaArg = meta.getArgsByKey("foo")[0];
+            Assert.assertEquals("unexpected meta arg name","foo",metaArg.name);
+            Assert.assertEquals("unexpected meta arg 
value","instanceMethod",metaArg.value);
+            Assert.assertEquals("unexpected parameter 
count",0,testMethod.parameters.length);
+            inst[testMethod.name]();
+            Assert.assertEquals("unexpected method invocation 
result","testMethod was called",inst[testReadWrite.name]);
+
+            var testMethodWithArgs:MethodDefinition = 
retrieveItemWithName(methods,"testMethodWithArgs") as MethodDefinition;
+            Assert.assertEquals("unexpected parameter 
count",2,testMethodWithArgs.parameters.length);
+            Assert.assertTrue("unexpected method invocation 
result",inst[testMethodWithArgs.name]("test"));
+            Assert.assertFalse("unexpected method invocation 
result",inst[testMethodWithArgs.name]("test", false));
+            Assert.assertEquals("unexpected method invocation 
result","testMethodWithArgs was called",inst[testReadWrite.name]);
+
+
+
+            /** static vars **/
+            variables = def.staticVariables;
+
+            variable = variables[0];
+            Assert.assertEquals("unexpected variable 
name","testStaticVar",variable.name);
+            meta = variable.retrieveMetaDataByName("TestMeta")[0];
+            Assert.assertEquals("unexpected meta name","TestMeta",meta.name);
+
+            metaArg = meta.getArgsByKey("foo")[0];
+            Assert.assertEquals("unexpected meta arg name","foo",metaArg.name);
+            Assert.assertEquals("unexpected meta arg 
value","staticVariable",metaArg.value);
+
+            Assert.assertEquals("unexpected reflection initial variable 
value","testStaticVar_val",TestClass2[variable.name]);
+
+            /** static accessors **/
+
+            accessors = def.staticAccessors;
+            testReadOnly = 
retrieveItemWithName(accessors,"testStaticReadOnly") as AccessorDefinition;
+            meta = testReadOnly.retrieveMetaDataByName("TestMeta")[0];
+            Assert.assertEquals("unexpected meta name","TestMeta",meta.name);
+
+            metaArg = meta.getArgsByKey("foo")[0];
+            Assert.assertEquals("unexpected meta arg name","foo",metaArg.name);
+            Assert.assertEquals("unexpected meta arg 
value","staticAccessor",metaArg.value);
+
+
+            testWriteOnly = 
retrieveItemWithName(accessors,"testStaticWriteOnly") as AccessorDefinition;
+            testReadWrite = 
retrieveItemWithName(accessors,"testStaticReadWrite") as AccessorDefinition;
+            Assert.assertNotNull(testReadOnly);
+            Assert.assertNotNull(testWriteOnly);
+            Assert.assertNotNull(testReadWrite);
+
+            Assert.assertEquals("unexpected accessor initial 
value","staticAccessor_initial_value",TestClass2[testReadOnly.name]);
+            Assert.assertEquals("unexpected accessor initial 
value","staticAccessor_initial_value",TestClass2[testReadWrite.name]);
+
+            TestClass2[testWriteOnly.name] = "test";
+            Assert.assertEquals("unexpected accessor initial 
value","test",TestClass2[testReadOnly.name]);
+            Assert.assertEquals("unexpected accessor initial 
value","test",TestClass2[testReadWrite.name]);
+
+            TestClass2[testReadWrite.name] = "test2";
+            Assert.assertEquals("unexpected accessor initial 
value","test2",TestClass2[testReadOnly.name]);
+            Assert.assertEquals("unexpected accessor initial 
value","test2",TestClass2[testReadWrite.name]);
+
+
+            /** static methods **/
+            methods = def.staticMethods;
+            testMethod = retrieveItemWithName(methods,"testStaticMethod") as 
MethodDefinition;
+            meta = testMethod.retrieveMetaDataByName("TestMeta")[0];
+            Assert.assertEquals("unexpected meta name","TestMeta",meta.name);
+
+            metaArg = meta.getArgsByKey("foo")[0];
+            Assert.assertEquals("unexpected meta arg name","foo",metaArg.name);
+            Assert.assertEquals("unexpected meta arg 
value","staticMethod",metaArg.value);
+            Assert.assertEquals("unexpected parameter 
count",0,testMethod.parameters.length);
+            TestClass2[testMethod.name]();
+            Assert.assertEquals("unexpected method invocation 
result","testStaticMethod was called",TestClass2[testReadWrite.name]);
+
+            testMethodWithArgs = 
retrieveItemWithName(methods,"testStaticMethodWithArgs") as MethodDefinition;
+            Assert.assertEquals("unexpected parameter 
count",2,testMethodWithArgs.parameters.length);
+            Assert.assertTrue("unexpected method invocation 
result",TestClass2[testMethodWithArgs.name]("test"));
+            Assert.assertFalse("unexpected method invocation 
result",TestClass2[testMethodWithArgs.name]("test", false));
+            Assert.assertEquals("unexpected method invocation 
result","testStaticMethodWithArgs was called",TestClass2[testReadWrite.name]);
+
+        }
+
+
+               [Test]
+        public function testIntefaceReflection():void{
+            var def:TypeDefinition = describeType(ITestInterface4);
+            Assert.assertEquals("unexpected kind value","interface",def.kind);
+            Assert.assertEquals("unexpected interfaces 
length",3,def.interfaces.length);
+            Assert.assertEquals("unexpected accessors 
length",1,def.accessors.length);
+            Assert.assertEquals("unexpected methods 
length",1,def.methods.length);
+
+            Assert.assertEquals("unexpected variables 
length",0,def.variables.length);
+            Assert.assertEquals("unexpected staticVariables 
length",0,def.staticVariables.length);
+            Assert.assertEquals("unexpected variables 
length",0,def.staticMethods.length);
+            Assert.assertEquals("unexpected staticVariables 
length",0,def.staticAccessors.length);
+            Assert.assertNull("unexpected constructor Method 
definition",def.constructorMethod);
+        }
+
+
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/438cb014/manualtests/GenericTests/src/flexUnitTests/reflection/support/ITestInterface.as
----------------------------------------------------------------------
diff --git 
a/manualtests/GenericTests/src/flexUnitTests/reflection/support/ITestInterface.as
 
b/manualtests/GenericTests/src/flexUnitTests/reflection/support/ITestInterface.as
new file mode 100644
index 0000000..b5a2249
--- /dev/null
+++ 
b/manualtests/GenericTests/src/flexUnitTests/reflection/support/ITestInterface.as
@@ -0,0 +1,27 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests.reflection.support
+{
+
+       public interface ITestInterface
+       {
+               function someMethod(compulsoryArg:int, 
optArg:String=null):TestClass1;
+
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/438cb014/manualtests/GenericTests/src/flexUnitTests/reflection/support/ITestInterface2.as
----------------------------------------------------------------------
diff --git 
a/manualtests/GenericTests/src/flexUnitTests/reflection/support/ITestInterface2.as
 
b/manualtests/GenericTests/src/flexUnitTests/reflection/support/ITestInterface2.as
new file mode 100644
index 0000000..f69f9b7
--- /dev/null
+++ 
b/manualtests/GenericTests/src/flexUnitTests/reflection/support/ITestInterface2.as
@@ -0,0 +1,29 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests.reflection.support
+{
+
+       public interface ITestInterface2 extends ITestInterface
+       {
+               function someMethod2(compulsoryArg:int, 
optArg:String=null):TestClass1;
+               
+               function get someValue2():Boolean;
+
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/438cb014/manualtests/GenericTests/src/flexUnitTests/reflection/support/ITestInterface3.as
----------------------------------------------------------------------
diff --git 
a/manualtests/GenericTests/src/flexUnitTests/reflection/support/ITestInterface3.as
 
b/manualtests/GenericTests/src/flexUnitTests/reflection/support/ITestInterface3.as
new file mode 100644
index 0000000..83d05ee
--- /dev/null
+++ 
b/manualtests/GenericTests/src/flexUnitTests/reflection/support/ITestInterface3.as
@@ -0,0 +1,27 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests.reflection.support
+{
+
+       public interface ITestInterface3
+       {
+                       //empty
+
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/438cb014/manualtests/GenericTests/src/flexUnitTests/reflection/support/ITestInterface4.as
----------------------------------------------------------------------
diff --git 
a/manualtests/GenericTests/src/flexUnitTests/reflection/support/ITestInterface4.as
 
b/manualtests/GenericTests/src/flexUnitTests/reflection/support/ITestInterface4.as
new file mode 100644
index 0000000..7a032f5
--- /dev/null
+++ 
b/manualtests/GenericTests/src/flexUnitTests/reflection/support/ITestInterface4.as
@@ -0,0 +1,29 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests.reflection.support
+{
+
+       public interface ITestInterface4 extends ITestInterface2, 
ITestInterface3
+       {
+               function someMethod3(compulsoryArg:int, 
optArg:String=null):TestClass1;
+               
+               function get someValue3():Boolean;
+
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/438cb014/manualtests/GenericTests/src/flexUnitTests/reflection/support/TestClass1.as
----------------------------------------------------------------------
diff --git 
a/manualtests/GenericTests/src/flexUnitTests/reflection/support/TestClass1.as 
b/manualtests/GenericTests/src/flexUnitTests/reflection/support/TestClass1.as
new file mode 100644
index 0000000..76ac834
--- /dev/null
+++ 
b/manualtests/GenericTests/src/flexUnitTests/reflection/support/TestClass1.as
@@ -0,0 +1,91 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests.reflection.support
+{
+
+       import org.apache.flex.reflection.TypeDefinition;
+
+       [RemoteClass(alias="TestClass1_alias")]
+       public class TestClass1 implements ITestInterface
+       {
+               public function TestClass1()
+               {
+                       var something:ITestInterface2;
+               }
+               
+               [Bindable]
+               [Event(name="foo", type="org.apache.flex.events.Event")]
+               public var bindableVar:String;
+               [Event(name="foo", type="org.apache.flex.events.Event")]
+               public var temp:Boolean;
+               
+               public static var tempStatic:Boolean;
+               
+               public var typeDef:TypeDefinition;
+               
+               public var testVar:String="testVar_val";
+               
+               public static var staticTestVar:String="statictestVar_val";
+               
+               private var _atestval:String="accessorTest_val";
+               public function get accessorTest():String{
+                       return _atestval;
+               }
+               
+               public function set accessorTest(val:String):void{
+                       _atestval = val;
+               }
+               
+               private static var 
_staticAtestval:String="staticAccessorTest_val";
+               public static function get staticAccessorTest():String{
+                       return _staticAtestval;
+               }
+               
+               public static function set staticAccessorTest(val:String):void{
+                       _staticAtestval = val;
+               }
+               
+               [Bindable]
+               public static var bindableStaticVar:String;
+               
+               [Bindable]
+               public var bindableInstanceVar:String;
+               
+               
+               public function someMethod(compulsoryArg:int, 
optArg:String=null):TestClass1{
+                       return null;
+               }
+               
+               public static function someStaticMethod(compulsoryArg:int, 
optArg:String=null):TestClass1{
+                       return null;
+               }
+               
+               public function get testAccessorType():TypeDefinition {
+                       return null;
+               }
+               
+               public const instanceConstant:String="instanceConstant_val";
+               
+               
+               public static const staticConstant:String="staticConstant_val";
+               
+
+
+       }
+}
\ No newline at end of file

Reply via email to