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/06/07 18:10:06 UTC

[7/8] git commit: [flex-sdk] [refs/heads/develop] - FLEX-34852 Added more unit tests to check for edge cases, and for Sort.unique variations. Also replaced the last inline sort field value retrieval in SortField (in initializeDefaultCompareFunction()).

FLEX-34852
Added more unit tests to check for edge cases, and for Sort.unique variations.
Also replaced the last inline sort field value retrieval in SortField (in initializeDefaultCompareFunction()).


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/8dae0daa
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/8dae0daa
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/8dae0daa

Branch: refs/heads/develop
Commit: 8dae0daab1d779ee17a23477159bef33524d4cb3
Parents: c4f20ee
Author: Mihai Chira <mi...@apache.org>
Authored: Sun Jun 7 14:57:22 2015 +0200
Committer: Mihai Chira <mi...@apache.org>
Committed: Sun Jun 7 14:57:22 2015 +0200

----------------------------------------------------------------------
 .../framework/src/mx/collections/Sort.as        |  3 +-
 .../framework/src/mx/collections/SortField.as   |  8 +--
 .../framework/tests/FLEX_34852_Tests.as         | 76 ++++++++++++++++++++
 3 files changed, 78 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/8dae0daa/frameworks/projects/framework/src/mx/collections/Sort.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/framework/src/mx/collections/Sort.as b/frameworks/projects/framework/src/mx/collections/Sort.as
index db0f704..14f1d64 100644
--- a/frameworks/projects/framework/src/mx/collections/Sort.as
+++ b/frameworks/projects/framework/src/mx/collections/Sort.as
@@ -672,8 +672,7 @@ public class Sort extends EventDispatcher implements ISort
                     }
                     else
                     {
-                        uniqueRet2 = items.sort(internalCompare,
-                                                Array.UNIQUESORT);
+                        uniqueRet2 = items.sort(internalCompare, Array.UNIQUESORT);
                     }
                     if (uniqueRet2 == 0)
                     {

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/8dae0daa/frameworks/projects/framework/src/mx/collections/SortField.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/framework/src/mx/collections/SortField.as b/frameworks/projects/framework/src/mx/collections/SortField.as
index 270bea5..d8780f1 100644
--- a/frameworks/projects/framework/src/mx/collections/SortField.as
+++ b/frameworks/projects/framework/src/mx/collections/SortField.as
@@ -520,13 +520,7 @@ public class SortField extends EventDispatcher implements ISortField
                 var value:Object;
                 if (_name)
                 {
-                    try
-                    {
-                        value = obj[_name];
-                    }
-                    catch(error:Error)
-                    {
-                    }
+                    value = getSortFieldValue(obj);
                 }
                 //this needs to be an == null check because !value will return true
                 //where value == 0 or value == false

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/8dae0daa/frameworks/projects/framework/tests/FLEX_34852_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/framework/tests/FLEX_34852_Tests.as b/frameworks/projects/framework/tests/FLEX_34852_Tests.as
index 50836b9..dcb1bc9 100644
--- a/frameworks/projects/framework/tests/FLEX_34852_Tests.as
+++ b/frameworks/projects/framework/tests/FLEX_34852_Tests.as
@@ -26,6 +26,7 @@ package {
     import mx.collections.SortFieldCompareTypes;
 
     import org.flexunit.asserts.assertEquals;
+    import org.flexunit.asserts.assertTrue;
 
     public class FLEX_34852_Tests {
         private var _sut:ListCollectionView;
@@ -79,6 +80,42 @@ package {
         }
 
         [Test]
+        public function test_simple_ascending_sort_by_complex_string_fields_with_unique_field():void
+        {
+            //given
+            var from4To0:IList = generateVOs(5, true);
+            _sut.addAll(from4To0); //values["address.street"]: Street4, Street3, Street2, Street1, Street0
+
+            const sortByStreetAscending:Sort = new Sort();
+            sortByStreetAscending.fields = [new ComplexSortField("address.street", false, false, false)];
+            sortByStreetAscending.unique = true;
+            _sut.sort = sortByStreetAscending;
+
+            //when
+            _sut.refresh(); //should be: Street0, Street1, Street2, Street3, Street4
+
+            //then
+            assertIndexesAre([0, 1, 2, 3, 4]);
+        }
+
+        [Test(expects="Error")]
+        public function test_simple_ascending_sort_by_complex_string_fields_with_unique_flag_and_duplicating_field_throws_error():void
+        {
+            //given
+            var from4To0:IList = generateVOs(5, true);
+            _sut.addAll(from4To0); //values["address.street"]: Street4, Street3, Street2, Street1, Street0
+            FLEX_34852_VO(_sut.getItemAt(0)).address.street = "Street0"; //making sure there's a duplicate
+
+            const sortByStreetAscending:Sort = new Sort();
+            sortByStreetAscending.fields = [new ComplexSortField("address.street", false, false, false)];
+            sortByStreetAscending.unique = true;
+            _sut.sort = sortByStreetAscending;
+
+            //when
+            _sut.refresh(); //should throw an error about there being a duplicate value
+        }
+
+        [Test]
         public function test_simple_ascending_sort_by_complex_date_fields():void
         {
             //given
@@ -154,6 +191,45 @@ package {
             assertIndexesAre([4, 3, 2, 1, 0]);
         }
 
+        [Test]
+        public function test_simple_ascending_sort_with_empty_field_name_should_not_throw_error():void
+        {
+            //given
+            var from4To0:IList = generateVOs(5, true);
+            _sut.addAll(from4To0); //values["index"]: 4, 3, 2, 1, 0
+
+            const sortByNothingAscending:Sort = new Sort();
+            sortByNothingAscending.fields = [new ComplexSortField("", false, false)];
+            _sut.sort = sortByNothingAscending;
+
+            //when
+            _sut.refresh(); //just make sure it doesn't throw an error.
+
+            //then - we cannot guarantee the order of the items because SortField.nullCompare returns 0 in this
+            // situation, so we just make sure there's no error
+            assertTrue(true);
+        }
+
+        [Test]
+        public function test_simple_ascending_sort_with_erroneous_field_name_should_not_throw_error():void
+        {
+            //given
+            var from4To0:IList = generateVOs(5, true);
+            _sut.addAll(from4To0); //values["index"]: 4, 3, 2, 1, 0
+
+            const sortByNothingAscending:Sort = new Sort();
+            sortByNothingAscending.fields = [new ComplexSortField("aFieldThatDoesntExist", false, false)];
+            _sut.sort = sortByNothingAscending;
+
+            //when
+            _sut.refresh(); //just make sure it doesn't throw an error.
+
+            //then - we cannot guarantee the order of the items because SortField.nullCompare returns 0 in this
+            // situation, so we just make sure there's no error
+            assertTrue(true);
+        }
+
+
 
 
         private function assertIndexesAre(indexes:Array):void