@@ -26,6 +26,9 @@ class TestNSOrderedSet : XCTestCase {
2626 ( " test_BasicConstruction " , test_BasicConstruction) ,
2727 ( " test_Enumeration " , test_Enumeration) ,
2828 ( " test_Uniqueness " , test_Uniqueness) ,
29+ ( " test_reversedEnumeration " , test_reversedEnumeration) ,
30+ ( " test_reversedOrderedSet " , test_reversedOrderedSet) ,
31+ ( " test_reversedEmpty " , test_reversedEmpty) ,
2932 ( " test_ObjectAtIndex " , test_ObjectAtIndex) ,
3033 ( " test_ObjectsAtIndexes " , test_ObjectsAtIndexes) ,
3134 ( " test_GetObjects " , test_GetObjects) ,
@@ -49,6 +52,8 @@ class TestNSOrderedSet : XCTestCase {
4952 ( " test_Union " , test_Union) ,
5053 ( " test_Initializers " , test_Initializers) ,
5154 ( " test_Sorting " , test_Sorting) ,
55+ ( " test_reversedEnumerationMutable " , test_reversedEnumerationMutable) ,
56+ ( " test_reversedOrderedSetMutable " , test_reversedOrderedSetMutable) ,
5257 ]
5358 }
5459
@@ -76,6 +81,36 @@ class TestNSOrderedSet : XCTestCase {
7681 XCTAssertEqual ( set. objectAtIndex ( 1 ) as? NSString , " bar " )
7782 }
7883
84+ func test_reversedEnumeration( ) {
85+ let arr = [ " foo " , " bar " , " baz " ]
86+ let set = NSOrderedSet ( array: arr. bridge ( ) . bridge ( ) )
87+ var index = set. count - 1
88+ let revSet = set. reverseObjectEnumerator ( )
89+ for item in revSet {
90+ XCTAssertEqual ( set. objectAtIndex ( index) as? NSString , item as? NSString )
91+ index -= 1
92+ }
93+ }
94+
95+ func test_reversedOrderedSet( ) {
96+ let days = [ " monday " , " tuesday " , " wednesday " , " thursday " , " friday " ]
97+ let work = NSOrderedSet ( array: days. bridge ( ) . bridge ( ) )
98+ let krow = work. reversedOrderedSet
99+ var index = work. count - 1
100+ for item in krow {
101+ XCTAssertEqual ( work. objectAtIndex ( index) as? NSString , item as? NSString )
102+ index -= 1
103+ }
104+ }
105+
106+ func test_reversedEmpty( ) {
107+ let set = NSOrderedSet ( array: [ ] )
108+ let reversedEnum = set. reverseObjectEnumerator ( )
109+ XCTAssertNil ( reversedEnum. nextObject ( ) )
110+ let reversedSet = set. reversedOrderedSet
111+ XCTAssertNil ( reversedSet. firstObject)
112+ }
113+
79114 func test_ObjectAtIndex( ) {
80115 let set = NSOrderedSet ( array: [ " foo " , " bar " , " baz " ] . bridge ( ) . bridge ( ) )
81116 XCTAssertEqual ( set. objectAtIndex ( 0 ) as? NSString , " foo " )
@@ -330,4 +365,43 @@ class TestNSOrderedSet : XCTestCase {
330365 XCTAssertEqual( set [ 2 ] as? NSString , " b " )
331366 XCTAssertEqual( set [ 3 ] as? NSString , " d " )
332367 }
368+
369+ func test_reversedEnumerationMutable( ) {
370+ let arr = [ " foo " , " bar " , " baz " ]
371+ let set = NSMutableOrderedSet ( )
372+ set. addObjectsFromArray ( arr. bridge ( ) . bridge ( ) )
373+
374+ set. addObject ( " jazz " . bridge ( ) )
375+ var index = set. count - 1
376+ var revSet = set. reverseObjectEnumerator ( )
377+ for item in revSet {
378+ XCTAssertEqual ( set. objectAtIndex ( index) as? NSString , item as? NSString )
379+ index -= 1
380+ }
381+
382+ set. removeObject ( " jazz " . bridge ( ) )
383+ index = set. count - 1
384+ revSet = set. reverseObjectEnumerator ( )
385+ for item in revSet {
386+ XCTAssertEqual ( set. objectAtIndex ( index) as? NSString , item as? NSString )
387+ index -= 1
388+ }
389+
390+
391+ }
392+
393+ func test_reversedOrderedSetMutable( ) {
394+ let days = [ " monday " , " tuesday " , " wednesday " , " thursday " , " friday " ]
395+ let work = NSMutableOrderedSet ( )
396+ work. addObjectsFromArray ( days. bridge ( ) . bridge ( ) )
397+ var krow = work. reversedOrderedSet
398+ XCTAssertEqual ( work. firstObject as? NSString , krow. lastObject as? NSString )
399+ XCTAssertEqual ( work. lastObject as? NSString , krow. firstObject as? NSString )
400+
401+ work. addObject ( " saturday " . bridge ( ) )
402+ krow = work. reversedOrderedSet
403+ XCTAssertEqual ( work. firstObject as? NSString , krow. lastObject as? NSString )
404+ XCTAssertEqual ( work. lastObject as? NSString , krow. firstObject as? NSString )
405+ }
406+
333407}
0 commit comments