You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by mi...@apache.org on 2015/05/13 17:32:06 UTC
[2/2] git commit: [flex-sdk] [refs/heads/develop] - FLEX-34837 Added
a unit test to reproduce the bug.
FLEX-34837 Added a unit test to reproduce the bug.
Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/24c9ab6b
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/24c9ab6b
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/24c9ab6b
Branch: refs/heads/develop
Commit: 24c9ab6ba0d9e2bf20406b5ff57afaaa512d5350
Parents: bb600fd
Author: Mihai Chira <mi...@apache.org>
Authored: Wed May 13 17:31:24 2015 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Wed May 13 17:31:24 2015 +0200
----------------------------------------------------------------------
.../ListCollectionView_FLEX_34837_Tests.as | 134 +++++++++++++++++++
1 file changed, 134 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/24c9ab6b/frameworks/projects/framework/tests/ListCollectionView_FLEX_34837_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/framework/tests/ListCollectionView_FLEX_34837_Tests.as b/frameworks/projects/framework/tests/ListCollectionView_FLEX_34837_Tests.as
new file mode 100644
index 0000000..c0ee9fb
--- /dev/null
+++ b/frameworks/projects/framework/tests/ListCollectionView_FLEX_34837_Tests.as
@@ -0,0 +1,134 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 {
+ import mx.collections.ArrayList;
+ import mx.collections.IList;
+ import mx.collections.ListCollectionView;
+
+ import org.flexunit.asserts.assertEquals;
+
+ import spark.collections.Sort;
+ import spark.collections.SortField;
+
+ public class ListCollectionView_FLEX_34837_Tests {
+ private var _sut:ListCollectionView;
+
+ [Before]
+ public function setUp():void
+ {
+ _sut = new ListCollectionView(new ArrayList());
+ }
+
+ [After]
+ public function tearDown():void
+ {
+ _sut = null;
+ }
+
+ [Test]
+ public function test_changing_sort_field_value_places_it_correctly_according_to_collection_sort():void
+ {
+ //given
+ var from1To4:IList = generateObjects(5);
+ from1To4.removeItemAt(0);
+ _sut.addAll(from1To4);
+
+ const sortByNameAscending:Sort = new Sort();
+ sortByNameAscending.fields = [new SortField("name", false, false)];
+ _sut.sort = sortByNameAscending;
+ _sut.refresh(); //values: Object1, Object2, Object3, Object4
+
+ //when
+ const newItem:ListCollectionViewTestVO = generateOneObject(5);
+ _sut.addItem(newItem); //values: Object1, Object2, Object3, Object4, Object5
+ newItem.name = "Object0"; //this should immediately place the newItem at position 0
+
+ //then
+ const newItemIndex:int = _sut.getItemIndex(newItem);
+ assertEquals("the new item should have been placed at the beginning of the list as soon as its name was changed", 0, newItemIndex);
+ }
+
+ [Test]
+ public function test_changing_complex_sort_field_value_places_it_correctly_according_to_collection_sort():void
+ {
+ //given
+ var from1To4:IList = generateObjects(5);
+ from1To4.removeItemAt(0);
+ _sut.addAll(from1To4);
+
+ const sortByNameAscending:Sort = new Sort();
+ sortByNameAscending.fields = [new SortField("address.street", false, false)];
+ _sut.sort = sortByNameAscending;
+ _sut.refresh(); //values: Object1, Object2, Object3, Object4
+
+ //when
+ const newItem:ListCollectionViewTestVO = generateOneObject(5);
+ _sut.addItem(newItem); //values: Object1, Object2, Object3, Object4, Object5
+ newItem.address.street = "Street0"; //this should immediately place the newItem at position 0
+
+ //then
+ const newItemIndex:int = _sut.getItemIndex(newItem);
+ assertEquals("the new item should have been placed at the beginning of the list as soon as its name was changed", 0, newItemIndex);
+ _sut.removeItemAt(_sut.getItemIndex(newItem)); //if the bug is present, this will throw an RTE
+ }
+
+ private function generateObjects(no:int):IList
+ {
+ var result:ArrayList = new ArrayList();
+ for(var i:int = 0; i < no; i++)
+ {
+ result.addItem(generateOneObject(i));
+ }
+
+ return result;
+ }
+
+ private static function generateOneObject(i:int):ListCollectionViewTestVO
+ {
+ return new ListCollectionViewTestVO("Object"+i, "Street"+i);
+ }
+ }
+}
+
+class ListCollectionViewTestVO
+{
+ [Bindable]
+ public var name:String;
+
+ [Bindable]
+ public var address:ListCollectionViewTestAddressVO;
+
+ public function ListCollectionViewTestVO(name:String, street:String)
+ {
+ this.name = name;
+ this.address = new ListCollectionViewTestAddressVO(street);
+ }
+}
+
+class ListCollectionViewTestAddressVO
+{
+ [Bindable]
+ public var street:String;
+
+ public function ListCollectionViewTestAddressVO(street:String)
+ {
+ this.street = street;
+ }
+}
\ No newline at end of file