You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by gr...@apache.org on 2020/03/06 07:33:02 UTC
[royale-asjs] branch develop updated: Oops. files got removed and
then not added back in git.
This is an automated email from the ASF dual-hosted git repository.
gregdove pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
The following commit(s) were added to refs/heads/develop by this push:
new 260b48f Oops. files got removed and then not added back in git.
260b48f is described below
commit 260b48f0bc9a4b804436ee4958cdb82af154a278
Author: greg-dove <gr...@gmail.com>
AuthorDate: Fri Mar 6 20:32:38 2020 +1300
Oops. files got removed and then not added back in git.
---
.../flexUnitTests/binding/support/IBindingTest.as | 28 +++
.../BaseWithAccesorVariantsBindableClass.as | 93 ++++++++++
.../bindables/BaseWithBindableAndUnbindableVars.as | 29 ++++
.../support/bindables/BaseWithBindableClass.as | 27 +++
.../support/bindables/BaseWithBindableGetter.as | 69 ++++++++
.../support/bindables/BaseWithBindableVar.as | 28 +++
.../bindables/BaseWithGetterBindableClass.as | 42 +++++
.../binding/support/bindables/BindableMxmlTest.as | 33 ++++
.../binding/support/bindables/BindableSetterVO.as | 38 +++++
.../binding/support/bindables/BindableSubVO1.as | 33 ++++
.../binding/support/bindables/BindableSubVO2.as | 33 ++++
.../binding/support/bindables/BindableSubVO3.as | 33 ++++
.../bindables/BindableWithConstructorInit.as | 46 +++++
.../binding/support/bindables/UnbindableBase.as | 31 ++++
.../support/bindables/UnbindableIntermediateVO.as | 31 ++++
.../support/bindings/bindables/OneLayerBindable.as | 40 +++++
.../support/bindings/bindables/TwoLayerBindable.as | 29 ++++
.../binding/utils/BindableTestUtil.as | 190 +++++++++++++++++++++
.../flexUnitTests/binding/utils/BindingTestUtil.as | 84 +++++++++
19 files changed, 937 insertions(+)
diff --git a/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/IBindingTest.as b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/IBindingTest.as
new file mode 100644
index 0000000..26dd829
--- /dev/null
+++ b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/IBindingTest.as
@@ -0,0 +1,28 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.binding.support {
+ public interface IBindingTest {
+
+ function get testName():String;
+ function get internalTestCount():uint;
+ function setInboundValue(value:*, internalTestNum:uint=0):void
+ function getBindingResultValue(internalTestNum:uint=0):*;
+
+ }
+}
\ No newline at end of file
diff --git a/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BaseWithAccesorVariantsBindableClass.as b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BaseWithAccesorVariantsBindableClass.as
new file mode 100644
index 0000000..46bcba3
--- /dev/null
+++ b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BaseWithAccesorVariantsBindableClass.as
@@ -0,0 +1,93 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.binding.support.bindables
+{
+ import flexUnitTests.binding.utils.BindableTestUtil;
+ import org.apache.royale.events.Event;
+ import org.apache.royale.events.IEventDispatcher;
+
+ [Bindable]
+ public class BaseWithAccesorVariantsBindableClass
+ {
+ private var _accessorOfBaseWithAccesorVariantsBindableClass:String = "BaseWithAccessorVariantsBindableClass_value";
+ private var _alternate:String = 'alternate_value';
+
+ public function get accessorOfBaseWithAccesorVariantsBindableClass():String
+ {
+ BindableTestUtil.instance.addHistoryItem('accessing value from original getter', _accessorOfBaseWithAccesorVariantsBindableClass);
+ return _accessorOfBaseWithAccesorVariantsBindableClass;
+ }
+
+ public function set accessorOfBaseWithAccesorVariantsBindableClass(value:String):void
+ {
+ BindableTestUtil.instance.addHistoryItem('assigning value in original setter', value);
+ _accessorOfBaseWithAccesorVariantsBindableClass = value;
+ }
+
+ private var _setterOnly:String;
+ public function set setterOnly(value:String):void{
+ BindableTestUtil.instance.addHistoryItem('setting non bindable setterOnly', value);
+ _setterOnly = value;
+ }
+
+
+ public function get getterOnly():String{
+ BindableTestUtil.instance.addHistoryItem('getting non bindable getterOnly', 'getterOnly');
+ return 'getterOnly';
+ }
+
+ [Bindable('alternateChanged')]
+ public function get alternate():String{
+ BindableTestUtil.instance.addHistoryItem('getting alternate value with explicit Bindable event', _alternate);
+ return _alternate
+ }
+
+ public function set alternate(value:String):void{
+ BindableTestUtil.instance.addHistoryItem('setting alternate value with explicit Bindable event', value);
+ var dispatch:Boolean = value != _alternate;
+ _alternate = value;
+ if (dispatch) {
+ (this as IEventDispatcher).dispatchEvent(new Event('alternateChanged'));
+ }
+ }
+
+
+ private var _alternate2:String = 'alternate2_value';
+ [Bindable]
+ public function get alternate2():String{
+ BindableTestUtil.instance.addHistoryItem('getting alternate2 value with both types of Bindable event', _alternate2);
+ return _alternate2
+ }
+
+ [Bindable('alternate2Changed')]
+ public function set alternate2(value:String):void{
+ BindableTestUtil.instance.addHistoryItem('setting alternate2 value with both types of Bindable event', value);
+ var dispatch:Boolean = value != _alternate2;
+ _alternate2 = value;
+ if (dispatch) {
+ (this as IEventDispatcher).dispatchEvent(new Event('alternate2Changed'));
+ }
+ }
+
+ //this should get normal [Bindable] treatment from the class [Bindable] meta (because it is a variable):
+ [Bindable('somethingChanged')]
+ public var something:String;
+
+ }
+}
diff --git a/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BaseWithBindableAndUnbindableVars.as b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BaseWithBindableAndUnbindableVars.as
new file mode 100644
index 0000000..f3b5066
--- /dev/null
+++ b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BaseWithBindableAndUnbindableVars.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.binding.support.bindables
+{
+
+ public class BaseWithBindableAndUnbindableVars
+ {
+ [Bindable]
+ public var bindableVarOfBaseWithBindableAndUnbindableVars:String = "bindableVarOfBaseWithBindableAndUnbindableVars_value";
+
+ public var unbindableVarOfBaseWithBindableAndUnbindableVars:String = "unbindableVarOfBaseWithBindableAndUnbindableVars_value";
+ }
+}
diff --git a/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BaseWithBindableClass.as b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BaseWithBindableClass.as
new file mode 100644
index 0000000..4ebb202
--- /dev/null
+++ b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BaseWithBindableClass.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.binding.support.bindables
+{
+
+ [Bindable]
+ public class BaseWithBindableClass
+ {
+ public var varOfBaseWithBindableClass:String = "varOfBaseWithBindableClass_value";
+ }
+}
diff --git a/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BaseWithBindableGetter.as b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BaseWithBindableGetter.as
new file mode 100644
index 0000000..bd4bc1b
--- /dev/null
+++ b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BaseWithBindableGetter.as
@@ -0,0 +1,69 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.binding.support.bindables
+{
+ import flexUnitTests.binding.utils.BindableTestUtil;
+
+ import org.apache.royale.events.Event;
+ import org.apache.royale.events.IEventDispatcher;
+
+ public class BaseWithBindableGetter
+ {
+ private var _accessorOfBaseWithBindableGetter:String = "accessorOfBaseWithBindableGetter_value";
+
+ [Bindable]
+ public function get accessorOfBaseWithBindableGetter():String
+ {
+ BindableTestUtil.instance.addHistoryItem('accessing value from original getter', _accessorOfBaseWithBindableGetter);
+ return _accessorOfBaseWithBindableGetter;
+ }
+
+ public function set accessorOfBaseWithBindableGetter(value:String):void
+ {
+ BindableTestUtil.instance.addHistoryItem('assigning value in original setter', value);
+ _accessorOfBaseWithBindableGetter = value;
+ }
+
+ private var _accessorOfBaseWithBindableGetter2:String = '_accessorOfBaseWithBindableGetter2_value';
+
+ //this has at least one [Bindable] so should code-gen Bindable code
+ [Bindable]
+ [Bindable(event='testEvent')]
+ public function get accessorOfBaseWithBindableGetter2():String
+ {
+ BindableTestUtil.instance.addHistoryItem('accessing value from original getter', _accessorOfBaseWithBindableGetter2);
+ return _accessorOfBaseWithBindableGetter2;
+ }
+
+ public function set accessorOfBaseWithBindableGetter2(value:String):void
+ {
+ BindableTestUtil.instance.addHistoryItem('assigning value in original setter', value);
+ if (value != _accessorOfBaseWithBindableGetter2) {
+ _accessorOfBaseWithBindableGetter2 = value;
+ IEventDispatcher(this).dispatchEvent(new Event('testEvent'));
+ }
+
+ }
+
+ //this should be ignored, because this class itself is not marked [Bindable]
+ [Bindable('somethingChanged')]
+ public var something:String;
+
+ }
+}
diff --git a/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BaseWithBindableVar.as b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BaseWithBindableVar.as
new file mode 100644
index 0000000..ad7823b
--- /dev/null
+++ b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BaseWithBindableVar.as
@@ -0,0 +1,28 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.binding.support.bindables
+{
+
+ public class BaseWithBindableVar
+ {
+ [Bindable]
+ public var bindableVarOfBaseWithBindableVar:String = "bindableVarOfBaseWithBindableVar_value";
+
+ }
+}
diff --git a/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BaseWithGetterBindableClass.as b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BaseWithGetterBindableClass.as
new file mode 100644
index 0000000..a692780
--- /dev/null
+++ b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BaseWithGetterBindableClass.as
@@ -0,0 +1,42 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.binding.support.bindables
+{
+import flexUnitTests.binding.utils.BindableTestUtil;
+
+[Bindable]
+ public class BaseWithGetterBindableClass
+ {
+ private var _accessorOfBaseWithGetterBindableClass:String = "accessorOfBaseWithGetterBindableClass_value";
+
+
+ public function get accessorOfBaseWithGetterBindableClass():String
+ {
+ BindableTestUtil.instance.addHistoryItem('accessing value from original getter', _accessorOfBaseWithGetterBindableClass);
+ return _accessorOfBaseWithGetterBindableClass;
+ }
+
+ public function set accessorOfBaseWithGetterBindableClass(value:String):void
+ {
+ BindableTestUtil.instance.addHistoryItem('assigning value in original setter', value);
+ _accessorOfBaseWithGetterBindableClass = value;
+ }
+
+ }
+}
diff --git a/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BindableMxmlTest.as b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BindableMxmlTest.as
new file mode 100644
index 0000000..d2e24b7
--- /dev/null
+++ b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BindableMxmlTest.as
@@ -0,0 +1,33 @@
+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.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests.binding.support.bindables
+{
+
+ public class BindableMxmlTest
+ {
+
+
+
+ [Bindable]
+ public var fieldofBindableMxmlTest:String = "fieldofBindableMxmlTest_value";
+
+
+
+ }
+}
diff --git a/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BindableSetterVO.as b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BindableSetterVO.as
new file mode 100644
index 0000000..f931a77
--- /dev/null
+++ b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BindableSetterVO.as
@@ -0,0 +1,38 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.binding.support.bindables
+{
+
+ public class BindableSetterVO
+ {
+ private var _fieldOfBindableSetterVO:String = "fieldOfBindableSetterVO_value";
+
+ public function get fieldOfBindableSetterVO():String
+ {
+ return _fieldOfBindableSetterVO;
+ }
+
+ [Bindable]
+ public function set fieldOfBindableSetterVO(value:String):void
+ {
+ _fieldOfBindableSetterVO = value;
+ }
+
+ }
+}
diff --git a/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BindableSubVO1.as b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BindableSubVO1.as
new file mode 100644
index 0000000..d289fd1
--- /dev/null
+++ b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BindableSubVO1.as
@@ -0,0 +1,33 @@
+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.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests.binding.support.bindables
+{
+
+ public class BindableSubVO1 extends BaseWithBindableVar
+ {
+
+
+
+ [Bindable]
+ public var fieldOfBindableSubVO1:String = "fieldOfBindableSubVO1_value";
+
+
+
+ }
+}
diff --git a/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BindableSubVO2.as b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BindableSubVO2.as
new file mode 100644
index 0000000..4ba6685
--- /dev/null
+++ b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BindableSubVO2.as
@@ -0,0 +1,33 @@
+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.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests.binding.support.bindables
+{
+
+ public class BindableSubVO2 extends UnbindableBase
+ {
+
+
+
+ [Bindable]
+ public var fieldofBindableSubVO2:String = "fieldofBindableSubVO2_value";
+
+
+
+ }
+}
diff --git a/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BindableSubVO3.as b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BindableSubVO3.as
new file mode 100644
index 0000000..13db540
--- /dev/null
+++ b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BindableSubVO3.as
@@ -0,0 +1,33 @@
+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.
+//
+////////////////////////////////////////////////////////////////////////////////
+package flexUnitTests.binding.support.bindables
+{
+
+ public class BindableSubVO3 extends UnbindableIntermediateVO
+ {
+
+
+
+ [Bindable]
+ public var fieldofBindableSubVO3:String = "fieldofBindableSubVO3_value";
+
+ [Bindable]
+ public var rangeEnd:Object;
+ }
+}
diff --git a/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BindableWithConstructorInit.as b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BindableWithConstructorInit.as
new file mode 100644
index 0000000..2438b20
--- /dev/null
+++ b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/BindableWithConstructorInit.as
@@ -0,0 +1,46 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.binding.support.bindables
+{
+
+
+ [Bindable]
+ public class BindableWithConstructorInit
+ {
+
+ public static const STATIC_INIT:BindableWithConstructorInit = new BindableWithConstructorInit( "STATIC_INIT" ,-1 );
+
+ public var ordinal:int;
+ public var value:String;
+
+ public function BindableWithConstructorInit (value:String, ordinal:int )
+ {
+ this.value = value;
+ this.ordinal = ordinal;
+ }
+
+
+
+ public function equals( other:BindableWithConstructorInit ):Boolean
+ {
+ return ( this.ordinal == other.ordinal && this.value == other.value );
+ }
+ }
+
+}
diff --git a/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/UnbindableBase.as b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/UnbindableBase.as
new file mode 100644
index 0000000..be38204
--- /dev/null
+++ b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/UnbindableBase.as
@@ -0,0 +1,31 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.binding.support.bindables
+{
+
+ public class UnbindableBase
+ {
+
+
+
+ public var fieldOfUnbindableBaseVO:String = "fieldOfUnbindableBaseVO_value";
+
+
+ }
+}
diff --git a/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/UnbindableIntermediateVO.as b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/UnbindableIntermediateVO.as
new file mode 100644
index 0000000..33e13e6
--- /dev/null
+++ b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindables/UnbindableIntermediateVO.as
@@ -0,0 +1,31 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.binding.support.bindables
+{
+
+ public class UnbindableIntermediateVO extends BaseWithBindableVar
+ {
+
+
+
+ public var fieldOfUnbindableIntermediateVO:String = "fieldOfUnbindableIntermediateVO_value";
+
+
+ }
+}
diff --git a/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindings/bindables/OneLayerBindable.as b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindings/bindables/OneLayerBindable.as
new file mode 100644
index 0000000..2812fb4
--- /dev/null
+++ b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindings/bindables/OneLayerBindable.as
@@ -0,0 +1,40 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.binding.support.bindings.bindables
+{
+
+[Bindable]
+public class OneLayerBindable
+{
+ public var bindableString:String;
+
+ public var bindableNumber:Number;
+
+ public var bindableBoolean:Boolean;
+
+ public function getSomething():String{
+ return bindableBoolean ? 'Internally true' : 'Internally false';
+ }
+
+ public function getSomethingBasedOn(something:Boolean):String{
+ return bindableBoolean && something ? "Both are true" : (bindableBoolean ? "Local only" : "Inbound only");
+ }
+
+}
+}
\ No newline at end of file
diff --git a/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindings/bindables/TwoLayerBindable.as b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindings/bindables/TwoLayerBindable.as
new file mode 100644
index 0000000..ab7ee35
--- /dev/null
+++ b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/support/bindings/bindables/TwoLayerBindable.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.binding.support.bindings.bindables
+{
+
+[Bindable]
+public class TwoLayerBindable
+{
+ public var bindableOne:OneLayerBindable;
+
+ public var toggle:Boolean;
+}
+}
\ No newline at end of file
diff --git a/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/utils/BindableTestUtil.as b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/utils/BindableTestUtil.as
new file mode 100644
index 0000000..5d2abcb
--- /dev/null
+++ b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/utils/BindableTestUtil.as
@@ -0,0 +1,190 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.binding.utils {
+import testshim.RoyaleUnitTestRunner;
+
+
+COMPILE::Flex{
+ import flash.events.Event;
+ import flash.events.IEventDispatcher;
+ import mx.events.PropertyChangeEvent;
+ import flash.utils.getQualifiedClassName;
+}
+COMPILE::Royale{
+ import org.apache.royale.events.Event;
+ import org.apache.royale.events.IEventDispatcher;
+ import org.apache.royale.events.ValueChangeEvent;
+ import org.apache.royale.reflection.getQualifiedClassName;
+}
+
+public class BindableTestUtil {
+
+ COMPILE::Flex
+ public static const VALUE_CHANGE_EVENT:String = "propertyChange";
+
+ COMPILE::Royale
+ public static const VALUE_CHANGE_EVENT:String = "valueChange";
+
+
+ private static function getBaseEventName(event:Event):String{
+ var name:String = getQualifiedClassName(event);
+ name = name.split('::').join('.'); //in flex
+ name = name.split('.').pop();
+ return name;
+ }
+
+ private static function getValueChangeDescription(event:Event):String{
+ var desc:String;
+ COMPILE::Flex{
+ var vce:PropertyChangeEvent = PropertyChangeEvent(event);
+ desc = 'ValueChangeEvent::property('+ vce.property+'), oldVal:('+ vce.oldValue+ "), newValue:("+ vce.newValue+")";
+ }
+ COMPILE::Royale{
+ var vce:ValueChangeEvent = ValueChangeEvent(event);
+ desc = 'ValueChangeEvent::property('+ vce.propertyName+'), oldVal:('+ vce.oldValue+ "), newValue:("+ vce.newValue+")";
+ }
+ return desc;
+ }
+
+ COMPILE::Flex
+ private static const VALUECHANGE_EVENT_CLASS:Class = PropertyChangeEvent;
+ COMPILE::Royale
+ private static const VALUECHANGE_EVENT_CLASS:Class = ValueChangeEvent;
+
+ public static var deactivated:Boolean;
+
+ private static var _unlocked:Boolean;
+ private static var _instance:BindableTestUtil;
+ public static function get instance():BindableTestUtil{
+ if (!_instance) {
+ _unlocked = true;
+ _instance = new BindableTestUtil();
+ _unlocked = false;
+ }
+ return _instance;
+ }
+
+ private var _history:Array= [];
+
+
+ public function BindableTestUtil() {
+ if (!_unlocked) throw new Error("Singleton only, access view BindableTestUtil.instance");
+ }
+
+
+ public function reset():void{
+ _history= [];
+ for (var eventType:String in listening) {
+ var arr:Array = listening[eventType];
+ for (var i:int=0; i<arr.length; i++) {
+ var dispatcher:IEventDispatcher = arr[i];
+ dispatcher.removeEventListener(eventType, addEventItem);
+ }
+ }
+ listening = {};
+ }
+
+ public function getContents():Array{
+ return _history.slice();
+ }
+
+ public function getSequenceString():String{
+ var temp:Array = _history.slice();
+ temp = temp.map(function(val:*, index:int, arr:Array):*{
+ return index + ":" + val;
+ });
+ return temp.join("\n");
+ }
+
+ public function addHistoryItem(...rest):void{
+ if (deactivated) return;
+ var contents:Array = rest;
+ contents = contents.map(
+ function(value:*, index:int, arr:Array):*{
+ if (value === null) return 'null';
+ if (value === undefined) return 'undefined';
+ return (value.toString());
+ }
+ );
+ _history.push("history:" + contents.join(' , '));
+ }
+
+ COMPILE::Royale
+ private function getRoyaleStackTrace(e:Error):String{
+ COMPILE::SWF{
+ return e.getStackTrace();
+ }
+ COMPILE::JS{
+ return e.stack;
+ }
+ }
+
+ public function addStacktrace():void{
+ if (deactivated) return;
+ var stack:String;
+ COMPILE::Flex{
+ stack = new Error().getStackTrace();
+ }
+ COMPILE::Royale{
+ stack = getRoyaleStackTrace(new Error())
+ }
+
+ //remove the first line
+ var contents:Array = stack.split('\n').slice(1);
+ contents[0] = "Execution stack: [";
+ contents.push("]");
+ _history.push(contents.join('\n'));
+ }
+
+ public function addEventItem(event:Event):void{
+ if (deactivated) return;
+ if (event is VALUECHANGE_EVENT_CLASS) {
+ _history.push(getValueChangeDescription(event));
+ } else {
+
+ _history.push(getBaseEventName(event)+'(type="'+event.type+'", bubbles='+event.bubbles+', cancelable='+event.cancelable+')');
+ }
+ }
+
+ private var listening:Object = {};
+ public function listenTo(object:Object, eventType:String):void{
+ if (object is IEventDispatcher) {
+ IEventDispatcher(object).addEventListener(eventType,addEventItem);
+ var listeners:Array = listening[eventType] || (listening[eventType] = []);
+ listeners.push(object);
+ } else {
+ throw new Error("Cannot listen to a non-IEventDispatcher");
+ }
+ }
+
+ public function unListenTo(object:Object, eventType:String):void{
+ if (object is IEventDispatcher) {
+ IEventDispatcher(object).removeEventListener(eventType,addEventItem);
+ var listeners:Array = listening[eventType] || (listening[eventType] = []);
+ var idx:int = listeners.indexOf(object);
+ if (idx != -1) {
+ listeners.splice(idx,1);
+ }
+ } else {
+ throw new Error("Cannot unListen to a non-IEventDispatcher");
+ }
+ }
+
+}
+}
diff --git a/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/utils/BindingTestUtil.as b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/utils/BindingTestUtil.as
new file mode 100644
index 0000000..9a2a065
--- /dev/null
+++ b/frameworks/projects/Binding/src/test/royale/flexUnitTests/binding/utils/BindingTestUtil.as
@@ -0,0 +1,84 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.binding.utils
+{
+
+ COMPILE::Flex{
+ import mx.core.IVisualElementContainer;
+ import mx.core.IVisualElement;
+ }
+
+ COMPILE::Royale{
+ import IVisualElementContainer=org.apache.royale.core.IParent;
+ import IVisualElement=org.apache.royale.core.IChild;
+ }
+
+ /**
+ * @royalesuppresspublicvarwarning
+ */
+ public class BindingTestUtil
+ {
+ private static var _testParent:IVisualElementContainer;
+ private static var _testClasses:Array = [];
+ private static var _testInstances:Array = [];
+
+ public static function setTestParent(testParent:IVisualElementContainer):void{
+ _testParent = testParent;
+ }
+
+ public static function createAndAddInstance(instanceClass:Class):IVisualElement{
+ var inst:IVisualElement;
+ if (!_testParent) throw new Error('setTestParent must set a parent before calling createAndAddInstance')
+ if (instanceClass) {
+ if (_testClasses.indexOf(instanceClass) == -1) {
+ _testClasses.push(instanceClass);
+ }
+ inst = new instanceClass() as IVisualElement;
+ if (!inst) {
+ throw new Error('bad mxml instance class');
+ }
+ _testInstances.push(inst);
+ _testParent.addElement(inst);
+ } else {
+ throw new Error('instanceClass must not be null');
+ }
+
+ return inst;
+ }
+
+ public static function removeInstance(instance:Object):void{
+ if (instance is IVisualElement){
+ if (IVisualElement(instance).parent) {
+ IVisualElementContainer(instance.parent).removeElement(instance as IVisualElement);
+ }
+ }
+ if (_testInstances.indexOf(instance) != -1) {
+ _testInstances.splice(_testInstances.indexOf(instance), 1);
+ }
+ }
+
+ public static function reset():void{
+ _testClasses = [];
+ while (_testInstances.length) {
+ removeInstance(_testInstances.pop())
+ }
+ }
+
+ }
+}