Hi Mihai, We have seen mustella test failures that appear to be related to your changes. Can you take a look?
[java] ===================================================== [java] Failed: [java] ===================================================== [java] LangPacks/Japanese/tests/runtimeErrorTests JA_RTE_Sort_FindCondition Failed AssertMethodValue%20%28method%20cannot%20be%20shown%29%28body%3Astep%201%29 %20%20method%20returned%20Error%20%231063%3A%20Argument%20count%20mismatch% 20on%20runtimeErrorTests/cmpFn%28%29.%20Expected%202%2C%20got%203.%2C%20exp ected%20%u691C%u7D22%u57FA%u6E96%u306B%u306F%u3001%27field1%27%20%u306B%u30 44%u305F%u308B%u3059%u3079%u3066%u306E%u30BD%u30FC%u30C8%u30D5%u30A3%u30FC% u30EB%u30C9%u304C%u542B%u307E%u308C%u3066%u3044%u308B%u5FC5%u8981%u304C%u30 42%u308A%u307E%u3059%u3002 [java] LangPacks/Japanese/tests/runtimeErrorTests JA_RTE_Sort_FindRestriction Failed AssertMethodValue%20%28method%20cannot%20be%20shown%29%28body%3Astep%201%29 %20%20method%20returned%20Error%20%231063%3A%20Argument%20count%20mismatch% 20on%20runtimeErrorTests/cmpFn%28%29.%20Expected%202%2C%20got%203.%2C%20exp ected%20%u691C%u7D22%u6761%u4EF6%u306B%u306F%u3001%u6700%u4F4E%201%20%u3064 %u306E%u30BD%u30FC%u30C8%u30D5%u30A3%u30FC%u30EB%u30C9%u5024%u304C%u542B%u3 07E%u308C%u3066%u3044%u308B%u5FC5%u8981%u304C%u3042%u308A%u307E%u3059 [java] gumbo/components/DataGrid/Integrations/DataGrid_layout_test001 listCollection_getItemIndex_afterSort Failed AssertMethodValue (method cannot be shown)(body:step 2) method returned 3, expected -1 [java] resources/ResourceManager/Methods/ResourceManager_Methods_loadResourceModul e RTL_Method_loadResourceModule_SameLocaleSameBundle Failed AssertMethodValue (method cannot be shown)(body:step 11) method returned null, expected Shut down [java] spark/collections/Sort/Other/SF_module_sparkButtonBar_global_tester SortField_module_sparkButtonBar_localeStyle_global_test1 Failed SetProperty, propertyName = globalLocal(setup:step 3) Timeout waiting for change from NVModule.child.globalSort [java] spark/collections/Sort/Other/SF_module_sparkButtonBar_tester SortField_module_sparkButtonBar_localeStyle_classSelector_test22 Failed AssertStyleValue(body:step 1) NVModule.child.classSort.locale ru-RU != ja-JP [java] spark/collections/Sort/Other/SF_module_sparkButtonBar_tester SortField_module_sparkButtonBar_localeStyle_IDSelector_test23 Failed AssertStyleValue(body:step 1) NVModule.child.idSortField.locale ru-RU != fr-CA [java] spark/collections/Sort/Methods/SF_sort_findItem_tester SortField_findItem_field_error_test21 Failed AssertMethodValue (method cannot be shown)(body:step 2) method returned noError, expected Error: Find criteria must contain all sort fields leading up to age . [java] spark/collections/Sort/Methods/SF_sort_findItem_tester SortField_findItem_field_error_script_test22 Failed AssertMethodValue (method cannot be shown)(body:step 2) method returned noError, expected Error: Find criteria must contain all sort fields leading up to age . Thanks, -Alex On 7/16/15, 11:38 AM, "mih...@apache.org" <mih...@apache.org> wrote: >Repository: flex-sdk >Updated Branches: > refs/heads/develop ece249f87 -> f14f5f8ae > > >FLEX-34854 FLEX-34884 >Adding unit test to make sure that the changes in FLEX-34854 haven't >changed anything about findItem. > > >Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo >Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/f14f5f8a >Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/f14f5f8a >Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/f14f5f8a > >Branch: refs/heads/develop >Commit: f14f5f8aeef8d916dd3e5b25c06bedf69779a24a >Parents: ece249f >Author: Mihai Chira <mih...@apache.org> >Authored: Thu Jul 16 20:37:02 2015 +0200 >Committer: Mihai Chira <mih...@apache.org> >Committed: Thu Jul 16 20:37:02 2015 +0200 > >---------------------------------------------------------------------- > .../framework/tests/FLEX_34854_Tests.as | 9 - > .../framework/tests/FLEX_34884_Tests.as | 394 +++++++++++++++++++ > 2 files changed, 394 insertions(+), 9 deletions(-) >---------------------------------------------------------------------- > > >http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/f14f5f8a/frameworks/p >rojects/framework/tests/FLEX_34854_Tests.as >---------------------------------------------------------------------- >diff --git a/frameworks/projects/framework/tests/FLEX_34854_Tests.as >b/frameworks/projects/framework/tests/FLEX_34854_Tests.as >index 2eec5f6..803e8ab 100644 >--- a/frameworks/projects/framework/tests/FLEX_34854_Tests.as >+++ b/frameworks/projects/framework/tests/FLEX_34854_Tests.as >@@ -220,15 +220,6 @@ package { > assertEquals("the new item should have been moved to the end >of the list", _sut.length - 1, _sut.getItemIndex(newItem)); > } > >- private function assertIndexesAre(indexes:Array):void >- { >- assertEquals(indexes.length, _sut.length); >- >- for(var i:int = 0; i < _sut.length; i++) >- { >- >assertEquals(ListCollectionView_FLEX_34854_VO(_sut.getItemAt(i)).index, >indexes[i]); >- } >- } > > > private static function generateVOs(no:int, reverse:Boolean = >false):IList > >http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/f14f5f8a/frameworks/p >rojects/framework/tests/FLEX_34884_Tests.as >---------------------------------------------------------------------- >diff --git a/frameworks/projects/framework/tests/FLEX_34884_Tests.as >b/frameworks/projects/framework/tests/FLEX_34884_Tests.as >new file mode 100644 >index 0000000..7bfe80c >--- /dev/null >+++ b/frameworks/projects/framework/tests/FLEX_34884_Tests.as >@@ -0,0 +1,394 @@ >+///////////////////////////////////////////////////////////////////////// >/////// >+// >+// 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.ComplexFieldChangeWatcher; >+ import mx.collections.ComplexSortField; >+ import mx.collections.IList; >+ import mx.collections.ListCollectionView; >+ import mx.collections.Sort; >+ import mx.collections.SortField; >+ >+ import org.flexunit.assertThat; >+ >+ import org.flexunit.asserts.assertEquals; >+ >+ public class FLEX_34884_Tests { >+ private var _sut:ListCollectionView; >+ >+ private static const MILLISECONDS_IN_A_SECOND:Number = 1000; >+ private static const MILLISECONDS_IN_A_MINUTE:Number = >MILLISECONDS_IN_A_SECOND * 60; >+ private static const MILLISECONDS_IN_AN_HOUR:Number = >MILLISECONDS_IN_A_MINUTE * 60; >+ private static const MILLISECONDS_IN_A_DAY:Number = >MILLISECONDS_IN_AN_HOUR * 24; >+ >+ [Before] >+ public function setUp():void >+ { >+ _sut = new ListCollectionView(new ArrayList()); >+ } >+ >+ [After] >+ public function tearDown():void >+ { >+ _sut = null; >+ } >+ >+ [Test] >+ public function >getItemIndex_finds_first_item_in_simple_sorted_non_filtered_list():void >+ { >+ //given >+ var from0To4:IList = generateVOs(5); >+ _sut.addAll(from0To4); //values: Object0, Object1, Object2, >Object3, Object4 >+ >+ const sortByIndexAscending:Sort = new Sort(); >+ sortByIndexAscending.fields = [new SortField("index", false, >false, true)]; >+ _sut.sort = sortByIndexAscending; >+ _sut.refresh(); //values (unchanged): Object0, Object1, >Object2, Object3, Object4 >+ >+ //when >+ var item0:FLEX_34884_VO = from0To4.getItemAt(0) as >FLEX_34884_VO; >+ var item0Index:int = _sut.getItemIndex(item0); >+ >+ //then >+ assertEquals(0, item0Index); >+ } >+ >+ [Test] >+ public function >getItemIndex_finds_last_item_in_simple_descending_sorted_non_filtered_list >():void >+ { >+ //given >+ var from0To4:IList = generateVOs(5); >+ _sut.addAll(from0To4); //values: Object0, Object1, Object2, >Object3, Object4 >+ >+ const sortByIndexDescending:Sort = new Sort(); >+ sortByIndexDescending.fields = [new SortField("index", >false, true, true)]; >+ _sut.sort = sortByIndexDescending; >+ _sut.refresh(); //values: Object4, Object3, Object2, >Object1, Object0 >+ >+ //when >+ var item0:FLEX_34884_VO = from0To4.getItemAt(0) as >FLEX_34884_VO; >+ var item0Index:int = _sut.getItemIndex(item0); >+ >+ //then >+ assertEquals(_sut.length - 1, item0Index); >+ } >+ >+ [Test] >+ public function >getItemIndex_finds_second_to_last_item_in_simple_descending_sorted_non_fil >tered_list():void >+ { >+ //given >+ var from0To4:IList = generateVOs(5); >+ _sut.addAll(from0To4); //values: Object0, Object1, Object2, >Object3, Object4 >+ >+ const sortByIndexDescending:Sort = new Sort(); >+ sortByIndexDescending.fields = [new SortField("index", >false, true, true)]; >+ _sut.sort = sortByIndexDescending; >+ _sut.refresh(); //values: Object4, Object3, Object2, >Object1, Object0 >+ >+ //when >+ var item1:FLEX_34884_VO = from0To4.getItemAt(1) as >FLEX_34884_VO; >+ var item1Index:int = _sut.getItemIndex(item1); >+ >+ //then >+ assertEquals(_sut.length - 2, item1Index); >+ } >+ >+ [Test] >+ public function >getItemIndex_finds_second_to_last_item_in_simple_no_fields_non_unique_sort >ed_list():void >+ { >+ //given >+ var from0To4:IList = generateVOs(5); >+ _sut.addAll(from0To4); //values: Object0, Object1, Object2, >Object3, Object4 >+ >+ const emptySort:Sort = new Sort(null, null, false); >+ _sut.sort = emptySort; >+ _sut.refresh(); //values should be unchanged >+ >+ //when >+ var item1:FLEX_34884_VO = from0To4.getItemAt(1) as >FLEX_34884_VO; >+ >+ //then >+ var item1Index:int = _sut.getItemIndex(item1); >+ assertEquals(1, item1Index); >+ } >+ >+ [Test] >+ public function >getItemIndex_finds_second_to_last_item_in_simple_no_fields_unique_sorted_l >ist():void >+ { >+ //given >+ var from0To4:IList = generateVOs(5); >+ _sut.addAll(from0To4); //values: Object0, Object1, Object2, >Object3, Object4 >+ >+ const emptySort:Sort = new Sort(null, null, true); >+ _sut.sort = emptySort; >+ _sut.refresh(); //values should be unchanged >+ >+ //when >+ var item1:FLEX_34884_VO = from0To4.getItemAt(1) as >FLEX_34884_VO; >+ >+ //then >+ var item1Index:int = _sut.getItemIndex(item1); >+ assertEquals(1, item1Index); >+ } >+ >+ [Test] >+ public function >getItemIndex_finds_second_to_last_date_in_simple_no_fields_unique_sorted_l >ist_of_dates():void >+ { >+ //given >+ var yesterday:Date = new Date(); >+ yesterday.setTime(yesterday.getTime() - >MILLISECONDS_IN_A_DAY); >+ >+ var today:Date = new Date(); >+ >+ var tomorrow:Date = new Date(); >+ tomorrow.setTime(tomorrow.getTime() + MILLISECONDS_IN_A_DAY); >+ >+ _sut.addItem(tomorrow); >+ _sut.addItem(today); >+ _sut.addItem(yesterday); >+ >+ //when >+ const emptySort:Sort = new Sort(null, null, true); >+ _sut.sort = emptySort; >+ _sut.refresh(); //values: yesterday, today, tomorrow >+ >+ //then >+ assertEquals(0, _sut.getItemIndex(yesterday)); >+ assertEquals(1, _sut.getItemIndex(today)); >+ assertEquals(2, _sut.getItemIndex(tomorrow)); >+ } >+ >+ [Test] >+ public function >getItemIndex_finds_second_to_last_date_in_simple_no_fields_non_unique_sort >ed_list_of_dates():void >+ { >+ //given >+ var yesterday:Date = new Date(); >+ yesterday.setTime(yesterday.getTime() - >MILLISECONDS_IN_A_DAY); >+ >+ var today:Date = new Date(); >+ >+ var tomorrow:Date = new Date(); >+ tomorrow.setTime(tomorrow.getTime() + MILLISECONDS_IN_A_DAY); >+ >+ _sut.addItem(tomorrow); >+ _sut.addItem(today); >+ _sut.addItem(yesterday); >+ _sut.addItem(today); >+ >+ //when >+ const emptySort:Sort = new Sort(null, null, true); >+ _sut.sort = emptySort; >+ _sut.refresh(); //values: yesterday, today, today, tomorrow >+ >+ //then >+ assertEquals(0, _sut.getItemIndex(yesterday)); >+ var todayIndex:int = _sut.getItemIndex(today); >+ assertThat(todayIndex == 1 || todayIndex == 2); >+ assertEquals(3, _sut.getItemIndex(tomorrow)); >+ } >+ >+ [Test] >+ public function >getItemIndex_finds_first_item_in_complex_sorted_non_filtered_list():void >+ { >+ //given >+ var from0To4:IList = generateVOs(5); >+ _sut.addAll(from0To4); //values[address.street]: Street0, >Street1, Street2, Street3, Street4 >+ >+ const sortByIndexAscending:Sort = new Sort(); >+ sortByIndexAscending.fields = [new >ComplexSortField("address.street", false, false, false)]; >+ _sut.sort = sortByIndexAscending; >+ _sut.refresh(); //values[address.street] (unchanged): >Street0, Street1, Street2, Street3, Street4 >+ >+ //when >+ var item0:FLEX_34884_VO = from0To4.getItemAt(0) as >FLEX_34884_VO; >+ var item0Index:int = _sut.getItemIndex(item0); >+ >+ //then >+ assertEquals(0, item0Index); >+ } >+ >+ [Test] >+ public function >getItemIndex_finds_last_item_in_complex_descending_sorted_non_filtered_lis >t():void >+ { >+ //given >+ var from0To4:IList = generateVOs(5); >+ _sut.addAll(from0To4); //values[address.street]: Street0, >Street1, Street2, Street3, Street4 >+ >+ const sortByIndexDescending:Sort = new Sort(); >+ sortByIndexDescending.fields = [new >ComplexSortField("address.street", false, true, false)]; >+ _sut.sort = sortByIndexDescending; >+ _sut.refresh(); //values: Street4, Street3, Street2, >Street1, Street0 >+ >+ //when >+ var item0:FLEX_34884_VO = from0To4.getItemAt(0) as >FLEX_34884_VO; >+ var item0Index:int = _sut.getItemIndex(item0); >+ >+ //then >+ assertEquals(_sut.length - 1, item0Index); >+ } >+ >+ [Test] >+ public function >getItemIndex_finds_item_in_complex_descending_sorted_list_after_its_reposi >tioned_due_to_its_sort_field_changing():void >+ { >+ //given >+ var from0To4:IList = generateVOs(5); >+ _sut.addAll(from0To4); //values[address.street]: Street0, >Street1, Street2, Street3, Street4 >+ >+ const sortByIndexDescending:Sort = new Sort(); >+ sortByIndexDescending.fields = [new >ComplexSortField("address.street", false, true, false)]; >+ _sut.sort = sortByIndexDescending; >+ _sut.refresh(); //values: Street4, Street3, Street2, >Street1, Street0 >+ >+ _sut.complexFieldWatcher = new ComplexFieldChangeWatcher(); >+ >+ //when >+ var item0:FLEX_34884_VO = from0To4.getItemAt(0) as >FLEX_34884_VO; >+ var item999:FLEX_34884_VO = item0; >+ item999.address.street = "Street999"; >+ >+ //then >+ var item999Index:int = _sut.getItemIndex(item0); >+ assertEquals(0, item999Index); >+ } >+ >+ [Test] >+ public function >getItemIndex_finds_item_in_complex_descending_sorted_list_after_its_reposi >tioned_in_middle_due_to_its_sort_field_changing():void >+ { >+ //given >+ var from0To4:IList = generateVOs(5); >+ _sut.addAll(from0To4); //values[address.street]: Street0, >Street1, Street2, Street3, Street4 >+ >+ const sortByIndexDescending:Sort = new Sort(); >+ sortByIndexDescending.fields = [new >ComplexSortField("address.street", false, true, false)]; >+ _sut.sort = sortByIndexDescending; >+ _sut.refresh(); //values[address.street]: Street4, Street3, >Street2, Street1, Street0 >+ >+ _sut.complexFieldWatcher = new ComplexFieldChangeWatcher(); >+ >+ //when >+ var item2:FLEX_34884_VO = from0To4.getItemAt(2) as >FLEX_34884_VO; >+ item2.address.street = "Street9"; //values[address.street]: >Street9, Street4, Street3, Street1, Street0 >+ >+ var item0:FLEX_34884_VO = from0To4.getItemAt(0) as >FLEX_34884_VO; >+ item0.address.street = "Street2"; //values[address.street]: >Street9, Street4, Street3, Street2, Street1 >+ >+ //then >+ var street2Index:int = _sut.getItemIndex(item0); >+ assertEquals(3, street2Index); >+ } >+ >+ [Test] >+ public function >getItemIndex_finds_newly_inserted_item_in_complex_descending_sorted_list() >:void >+ { >+ //given >+ var from0To4:IList = generateVOs(5); >+ _sut.addAll(from0To4); //values[address.street]: Street0, >Street1, Street2, Street3, Street4 >+ >+ const sortByIndexDescending:Sort = new Sort(); >+ sortByIndexDescending.fields = [new >ComplexSortField("address.street", false, true, false)]; >+ _sut.sort = sortByIndexDescending; >+ _sut.refresh(); //values[address.street]: Street4, Street3, >Street2, Street1, Street0 >+ >+ _sut.complexFieldWatcher = new ComplexFieldChangeWatcher(); >+ >+ //when >+ var newItem:FLEX_34884_VO = generateOneObject(9); >+ _sut.addItemAt(newItem, _sut.length - 1); >//values[address.street]: Street9, Street4, Street3, Street2, Street1, >Street0 >+ >+ //then >+ assertEquals(0, _sut.getItemIndex(newItem)); >+ } >+ >+ [Test] >+ public function >getItemIndex_finds_newly_inserted_item_in_complex_descending_sorted_list_a >fter_its_sort_field_changes():void >+ { >+ //given >+ var from0To4:IList = generateVOs(5); >+ _sut.addAll(from0To4); //values[address.street]: Street0, >Street1, Street2, Street3, Street4 >+ >+ const sortByIndexDescending:Sort = new Sort(); >+ sortByIndexDescending.fields = [new >ComplexSortField("address.street", false, true, false)]; >+ _sut.sort = sortByIndexDescending; >+ _sut.refresh(); //values[address.street]: Street4, Street3, >Street2, Street1, Street0 >+ >+ _sut.complexFieldWatcher = new ComplexFieldChangeWatcher(); >+ >+ //when >+ var newItem:FLEX_34884_VO = generateOneObject(1); >+ _sut.addItemAt(newItem, _sut.length - 1); >//values[address.street]: Street4, Street3, Street2, Street1, Street1, >Street0 >+ >+ newItem.address.street = "Street3"; >//values[address.street]: Street4, Street3, Street3, Street2, Street1, >Street1, Street0 >+ >+ //then >+ var newItemIndex:int = _sut.getItemIndex(newItem); >+ assertThat(newItemIndex == 1 || newItemIndex == 2); >+ } >+ >+ private static function generateVOs(no:int, reverse:Boolean = >false):IList >+ { >+ return generateObjects(no, reverse, generateOneObject); >+ } >+ >+ private static function generateObjects(no:int, reverse:Boolean, >generator:Function):IList >+ { >+ var result:Array = []; >+ for(var i:int = 0; i < no; i++) >+ { >+ result.push(generator(i)); >+ } >+ >+ if(reverse) >+ result.reverse(); >+ >+ return new ArrayList(result); >+ } >+ >+ private static function generateOneObject(i:Number):FLEX_34884_VO >+ { >+ return new FLEX_34884_VO(i, "Object", "Street"); >+ } >+ } >+} >+ >+[Bindable] >+class FLEX_34884_VO >+{ >+ public var name:String; >+ public var address:FLEX_34884_AddressVO; >+ public var index:Number; >+ >+ public function FLEX_34884_VO(index:Number, namePrefix:String, >streetPrefix:String) >+ { >+ this.index = index; >+ this.name = namePrefix + index; >+ this.address = new FLEX_34884_AddressVO(streetPrefix + index); >+ } >+} >+ >+[Bindable] >+class FLEX_34884_AddressVO >+{ >+ public var street:String; >+ >+ public function FLEX_34884_AddressVO(street:String) >+ { >+ this.street = street; >+ } >+} >\ No newline at end of file >