FLEX-34852 Added unit tests for numeric and date types.
Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/c4f20ee2 Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/c4f20ee2 Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/c4f20ee2 Branch: refs/heads/develop Commit: c4f20ee28d40f79274c3a2413847a7462cd5b59f Parents: 5a27cc8 Author: Mihai Chira <[email protected]> Authored: Sun Jun 7 14:14:43 2015 +0200 Committer: Mihai Chira <[email protected]> Committed: Sun Jun 7 14:14:43 2015 +0200 ---------------------------------------------------------------------- .../framework/tests/FLEX_34852_Tests.as | 117 +++++++++++++++++-- 1 file changed, 110 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/c4f20ee2/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 4a9b1ee..50836b9 100644 --- a/frameworks/projects/framework/tests/FLEX_34852_Tests.as +++ b/frameworks/projects/framework/tests/FLEX_34852_Tests.as @@ -23,6 +23,7 @@ package { import mx.collections.IList; import mx.collections.ListCollectionView; import mx.collections.Sort; + import mx.collections.SortFieldCompareTypes; import org.flexunit.asserts.assertEquals; @@ -42,15 +43,15 @@ package { } [Test] - public function test_simple_ascending_sort_by_complex_fields():void + public function test_simple_ascending_sort_by_complex_string_fields():void { //given var from4To0:IList = generateVOs(5, true); _sut.addAll(from4To0); //values["address.street"]: Street4, Street3, Street2, Street1, Street0 - const sortByIndexAscending:Sort = new Sort(); - sortByIndexAscending.fields = [new ComplexSortField("address.street", false, false, false)]; - _sut.sort = sortByIndexAscending; + const sortByStreetAscending:Sort = new Sort(); + sortByStreetAscending.fields = [new ComplexSortField("address.street", false, false, false)]; + _sut.sort = sortByStreetAscending; //when _sut.refresh(); //should be: Street0, Street1, Street2, Street3, Street4 @@ -59,6 +60,100 @@ package { assertIndexesAre([0, 1, 2, 3, 4]); } + [Test] + public function test_simple_descending_sort_by_complex_string_fields():void + { + //given + var from0To4:IList = generateVOs(5); + _sut.addAll(from0To4); //values["address.street"]: Street0, Street1, Street2, Street3, Street4 + + const sortByStreetDescending:Sort = new Sort(); + sortByStreetDescending.fields = [new ComplexSortField("address.street", false, true, false)]; + _sut.sort = sortByStreetDescending; + + //when + _sut.refresh(); //should be: Street4, Street3, Street2, Street1, Street0 + + //then + assertIndexesAre([4, 3, 2, 1, 0]); + } + + [Test] + public function test_simple_ascending_sort_by_complex_date_fields():void + { + //given + var from2004To2000:IList = generateVOs(5, true); + _sut.addAll(from2004To2000); //values["address.dateMovedIn"].getYear(): 2004, 2003, 2002, 2001, 2000 + + const sortByDateMovedInAscending:Sort = new Sort(); + var complexSortField:ComplexSortField = new ComplexSortField("address.dateMovedIn", false, false, false); + complexSortField.sortCompareType = SortFieldCompareTypes.DATE; + sortByDateMovedInAscending.fields = [complexSortField]; + _sut.sort = sortByDateMovedInAscending; + + //when + _sut.refresh(); //should be: 2000, 2001, 2002, 2003, 2004 + + //then + assertIndexesAre([0, 1, 2, 3, 4]); + } + + [Test] + public function test_simple_descending_sort_by_complex_date_fields():void + { + //given + var from2000To2004:IList = generateVOs(5); + _sut.addAll(from2000To2004); //values["address.dateMovedIn"].getYear(): 2000, 2001, 2002, 2003, 2004 + + const sortByDateMovedInDescending:Sort = new Sort(); + var complexSortField:ComplexSortField = new ComplexSortField("address.dateMovedIn", false, true, false); + complexSortField.sortCompareType = SortFieldCompareTypes.DATE; + sortByDateMovedInDescending.fields = [complexSortField]; + _sut.sort = sortByDateMovedInDescending; + + //when + _sut.refresh(); //should be: 2004, 2003, 2002, 2001, 2000 + + //then + assertIndexesAre([4, 3, 2, 1, 0]); + } + + [Test] + public function test_simple_ascending_sort_by_complex_number_fields():void + { + //given + var from4To0:IList = generateVOs(5, true); + _sut.addAll(from4To0); //values["address.houseNumber"]: 4, 3, 2, 1, 0 + + const sortByHouseNumberAscending:Sort = new Sort(); + sortByHouseNumberAscending.fields = [new ComplexSortField("address.houseNumber", false, false, true)]; + _sut.sort = sortByHouseNumberAscending; + + //when + _sut.refresh(); //should be: 0, 1, 2, 3, 4 + + //then + assertIndexesAre([0, 1, 2, 3, 4]); + } + + [Test] + public function test_simple_descending_sort_by_complex_number_fields():void + { + //given + var from4To0:IList = generateVOs(5); + _sut.addAll(from4To0); //values["address.houseNumber"]: 0, 1, 2, 3, 4 + + const sortByHouseNumberDescending:Sort = new Sort(); + sortByHouseNumberDescending.fields = [new ComplexSortField("address.houseNumber", false, true, true)]; + _sut.sort = sortByHouseNumberDescending; + + //when + _sut.refresh(); //should be: 4, 3, 2, 1, 0 + + //then + assertIndexesAre([4, 3, 2, 1, 0]); + } + private function assertIndexesAre(indexes:Array):void @@ -93,7 +188,7 @@ package { private static function generateOneObject(i:Number):FLEX_34852_VO { - return new FLEX_34852_VO(i, "Object"+i, "Street"+i); + return new FLEX_34852_VO(i, "Object", "Street"); } } } @@ -113,7 +208,7 @@ class FLEX_34852_VO { this.index = index; this.name = namePrefix + index; - this.address = new FLEX_34852_AddressVO(streetPrefix + index); + this.address = new FLEX_34852_AddressVO(streetPrefix + index, Math.floor(index), new Date(2000 + Math.floor(index), 0, 0, 0, 0, 0, 1)); } } @@ -122,8 +217,16 @@ class FLEX_34852_AddressVO [Bindable] public var street:String; - public function FLEX_34852_AddressVO(street:String) + [Bindable] + public var houseNumber:int; + + [Bindable] + public var dateMovedIn:Date; + + public function FLEX_34852_AddressVO(street:String, houseNumber:int, dateMovedIn:Date) { this.street = street; + this.houseNumber = houseNumber; + this.dateMovedIn = dateMovedIn; } } \ No newline at end of file
