flex-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mihai Chira <mih...@apache.org>
Subject Re: git commit: [flex-sdk] [refs/heads/develop] - FLEX-34854 FLEX-34885 While trying to figure out whether ComplexFieldChangeWatcher should handle CollectionEventKind.UPDATE events, I stumbled on this bug. This is the unit test which demonstrates it (current
Date Tue, 09 Jun 2015 08:25:26 GMT
Just want to make sure that everyone thinks this is a bug? I think it
is because in mx.collections.ListCollectionView.handlePropertyChangeEvents
it explicitly decides to call moveItemInView() if, among others,
updateInfo.property is null or empty. But then it fails to remove the
old item from the localIndex. If no one disagrees, I'll proceed to
solve it.

On 9 June 2015 at 10:21,  <mihaic@apache.org> wrote:
> Repository: flex-sdk
> Updated Branches:
>   refs/heads/develop 97e625a80 -> 2779ea9f3
>
>
> FLEX-34854 FLEX-34885
> While trying to figure out whether ComplexFieldChangeWatcher should handle CollectionEventKind.UPDATE
events, I stumbled on this bug. This is the unit test which demonstrates it (currently fails,
since the bug is still there).
>
>
> Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
> Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/2779ea9f
> Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/2779ea9f
> Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/2779ea9f
>
> Branch: refs/heads/develop
> Commit: 2779ea9f32e8053edd3bc2620ccfbc37f52c3eba
> Parents: 97e625a
> Author: Mihai Chira <mihaic@apache.org>
> Authored: Tue Jun 9 10:21:18 2015 +0200
> Committer: Mihai Chira <mihaic@apache.org>
> Committed: Tue Jun 9 10:21:18 2015 +0200
>
> ----------------------------------------------------------------------
>  .../tests/ListCollectionView_Sort_Tests.as      | 39 +++++++++++++++++---
>  1 file changed, 33 insertions(+), 6 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/2779ea9f/frameworks/projects/framework/tests/ListCollectionView_Sort_Tests.as
> ----------------------------------------------------------------------
> diff --git a/frameworks/projects/framework/tests/ListCollectionView_Sort_Tests.as b/frameworks/projects/framework/tests/ListCollectionView_Sort_Tests.as
> index 7024626..f21310e 100644
> --- a/frameworks/projects/framework/tests/ListCollectionView_Sort_Tests.as
> +++ b/frameworks/projects/framework/tests/ListCollectionView_Sort_Tests.as
> @@ -360,6 +360,37 @@ package {
>              assertRemoveAll();
>          }
>
> +        [Test]
> +        public function test_marking_entire_item_as_updated_gets_the_old_object_out_of_the_list():void
> +        {
> +            //given
> +            var from0To4:IList = generateVOs(5);
> +            _sut.addAll(from0To4);
> +
> +            const sortByNameAscending:Sort = new Sort();
> +            sortByNameAscending.fields = [new SortField("name", false, false, false)];
> +            _sut.sort = sortByNameAscending;
> +            _sut.refresh(); //values["name"]: Object0, Object1, Object2, Object3, Object4
> +
> +            //when
> +            const removedItem:ListCollectionView_Sort_VO = _sut.getItemAt(0) as ListCollectionView_Sort_VO;
> +            const newItem:ListCollectionView_Sort_VO = generateOneObject(0);
> +            (_sut.list as ArrayList).source[0] = newItem;
> +            _sut.itemUpdated(newItem, null, removedItem, newItem);
> +
> +            removedItem.name = "Object7"; //should make no difference
> +            newItem.name = "Object9"; //should place it at the end of the list
> +
> +            //then
> +            const indexOfRemovedItem:int = _sut.getItemIndex(removedItem);
> +            assertEquals("the item should have been removed from the list", -1, indexOfRemovedItem);
> +            for(var i:int = 0; i < _sut.length; i++)
> +            {
> +                assertThat(_sut.getItemAt(i) != removedItem);
> +            }
> +            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
>          {
>              assertFieldValuesAre("index", indexes);
> @@ -442,15 +473,11 @@ package {
>      }
>  }
>
> +[Bindable]
>  dynamic class ListCollectionView_Sort_VO
>  {
> -    [Bindable]
>      public var name:String;
> -
> -    [Bindable]
>      public var address:ListCollectionView_Sort_AddressVO;
> -
> -    [Bindable]
>      public var index:Number;
>
>      public function ListCollectionView_Sort_VO(index:Number, namePrefix:String, streetPrefix:String)
> @@ -461,9 +488,9 @@ dynamic class ListCollectionView_Sort_VO
>      }
>  }
>
> +[Bindable]
>  class ListCollectionView_Sort_AddressVO
>  {
> -    [Bindable]
>      public var street:String;
>
>      public function ListCollectionView_Sort_AddressVO(street:String)
>

Mime
View raw message