@@ -26,6 +26,9 @@ class TestNSOrderedSet : XCTestCase {
26
26
( " test_BasicConstruction " , test_BasicConstruction) ,
27
27
( " test_Enumeration " , test_Enumeration) ,
28
28
( " test_Uniqueness " , test_Uniqueness) ,
29
+ ( " test_reversedEnumeration " , test_reversedEnumeration) ,
30
+ ( " test_reversedOrderedSet " , test_reversedOrderedSet) ,
31
+ ( " test_reversedEmpty " , test_reversedEmpty) ,
29
32
( " test_ObjectAtIndex " , test_ObjectAtIndex) ,
30
33
( " test_ObjectsAtIndexes " , test_ObjectsAtIndexes) ,
31
34
( " test_GetObjects " , test_GetObjects) ,
@@ -49,6 +52,8 @@ class TestNSOrderedSet : XCTestCase {
49
52
( " test_Union " , test_Union) ,
50
53
( " test_Initializers " , test_Initializers) ,
51
54
( " test_Sorting " , test_Sorting) ,
55
+ ( " test_reversedEnumerationMutable " , test_reversedEnumerationMutable) ,
56
+ ( " test_reversedOrderedSetMutable " , test_reversedOrderedSetMutable) ,
52
57
]
53
58
}
54
59
@@ -76,6 +81,36 @@ class TestNSOrderedSet : XCTestCase {
76
81
XCTAssertEqual ( set. objectAtIndex ( 1 ) as? NSString , " bar " )
77
82
}
78
83
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
+
79
114
func test_ObjectAtIndex( ) {
80
115
let set = NSOrderedSet ( array: [ " foo " , " bar " , " baz " ] . bridge ( ) . bridge ( ) )
81
116
XCTAssertEqual ( set. objectAtIndex ( 0 ) as? NSString , " foo " )
@@ -330,4 +365,43 @@ class TestNSOrderedSet : XCTestCase {
330
365
XCTAssertEqual( set [ 2 ] as? NSString , " b " )
331
366
XCTAssertEqual( set [ 3 ] as? NSString , " d " )
332
367
}
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
+
333
407
}
0 commit comments