@@ -59,7 +59,7 @@ class IMClientTestCase: RTMBaseTestCase {
5959 delay ( )
6060 XCTAssertNil ( wClient)
6161 }
62-
62+
6363 func testOpenAndClose( ) {
6464 let client : IMClient = try ! IMClient ( ID: uuid, options: [ ] )
6565
@@ -109,10 +109,10 @@ class IMClientTestCase: RTMBaseTestCase {
109109 XCTAssertTrue ( user. signUp ( ) . isSuccess)
110110
111111 guard let objectID = user. objectId? . value,
112- let sessionToken = user. sessionToken? . value else {
113- XCTFail ( )
114- return
115- }
112+ let sessionToken = user. sessionToken? . value else {
113+ XCTFail ( )
114+ return
115+ }
116116
117117 var clientFromUser : IMClient ! = try ! IMClient (
118118 user: user,
@@ -158,7 +158,7 @@ class IMClientTestCase: RTMBaseTestCase {
158158 delegator. clientEvent = { c, e in
159159 XCTAssertTrue ( Thread . isMainThread)
160160 if c === client,
161- case . sessionDidPause( error: _) = e {
161+ case . sessionDidPause( error: _) = e {
162162 XCTAssertEqual ( client. sessionState, . paused)
163163 pauseExp. fulfill ( )
164164 }
@@ -190,7 +190,7 @@ class IMClientTestCase: RTMBaseTestCase {
190190
191191 func testSessionConflict( ) {
192192 if let fileURL = LCApplication . default. currentInstallationFileURL,
193- FileManager . default. fileExists ( atPath: fileURL. path) {
193+ FileManager . default. fileExists ( atPath: fileURL. path) {
194194 try ! FileManager . default. removeItem ( at: fileURL)
195195 }
196196
@@ -286,7 +286,7 @@ class IMClientTestCase: RTMBaseTestCase {
286286 }
287287
288288 if let fileURL = LCApplication . default. currentInstallationFileURL,
289- FileManager . default. fileExists ( atPath: fileURL. path) {
289+ FileManager . default. fileExists ( atPath: fileURL. path) {
290290 try ! FileManager . default. removeItem ( at: fileURL)
291291 }
292292 }
@@ -337,6 +337,7 @@ class IMClientTestCase: RTMBaseTestCase {
337337 client. sessionToken = self . uuid
338338 client. sessionTokenExpiration = Date ( timeIntervalSinceNow: 36000 )
339339
340+ var ob : NSObjectProtocol ?
340341 expecting (
341342 description: " Pause -> Resume -> First-Reopen Then session token expired, Final Second-Reopen success " ,
342343 count: 4 )
@@ -354,7 +355,7 @@ class IMClientTestCase: RTMBaseTestCase {
354355 XCTFail ( )
355356 }
356357 }
357- let _ = NotificationCenter . default. addObserver (
358+ ob = NotificationCenter . default. addObserver (
358359 forName: IMClient . TestSessionTokenExpiredNotification,
359360 object: client,
360361 queue: . main
@@ -367,6 +368,9 @@ class IMClientTestCase: RTMBaseTestCase {
367368 client. connection. disconnect ( )
368369 client. connection. connect ( )
369370 }
371+ if let ob = ob {
372+ NotificationCenter . default. removeObserver ( ob)
373+ }
370374 }
371375
372376 func testReportDeviceToken( ) {
@@ -379,7 +383,7 @@ class IMClientTestCase: RTMBaseTestCase {
379383 let exp = expectation ( description: " client report device token success " )
380384 exp. expectedFulfillmentCount = 2
381385 let otherDeviceToken : String = uuid
382- let _ = NotificationCenter . default. addObserver ( forName: IMClient . TestReportDeviceTokenNotification, object: client, queue: OperationQueue . main) { ( notification) in
386+ let ob = NotificationCenter . default. addObserver ( forName: IMClient . TestReportDeviceTokenNotification, object: client, queue: OperationQueue . main) { ( notification) in
383387 let result = notification. userInfo ? [ " result " ] as? RTMConnection . CommandCallback . Result
384388 XCTAssertEqual ( result? . command? . cmd, . report)
385389 XCTAssertEqual ( result? . command? . op, . uploaded)
@@ -392,6 +396,7 @@ class IMClientTestCase: RTMBaseTestCase {
392396 }
393397 wait ( for: [ exp] , timeout: timeout)
394398 XCTAssertEqual ( otherDeviceToken, client. currentDeviceToken)
399+ NotificationCenter . default. removeObserver ( ob)
395400 }
396401
397402 func testSessionQuery( ) {
@@ -452,7 +457,7 @@ class IMClientTestCase: RTMBaseTestCase {
452457 wait ( for: [ queryExp2] , timeout: timeout)
453458 }
454459
455- #if canImport(GRDB)
460+ #if canImport(GRDB)
456461 func testPrepareLocalStorage( ) {
457462 expecting { ( exp) in
458463 let notUseLocalStorageClient = try ! IMClient ( ID: uuid, options: [ ] )
@@ -589,7 +594,7 @@ class IMClientTestCase: RTMBaseTestCase {
589594 } )
590595 }
591596 }
592-
597+
593598 checker ( . lastMessageSentTimestamp( descending: true ) )
594599 checker ( . lastMessageSentTimestamp( descending: false ) )
595600 checker ( . updatedTimestamp( descending: true ) )
@@ -599,7 +604,7 @@ class IMClientTestCase: RTMBaseTestCase {
599604
600605 XCTAssertEqual ( client. convCollection. count, 2 )
601606 }
602- #endif
607+ #endif
603608}
604609
605610extension IMClientTestCase {
@@ -651,14 +656,14 @@ extension IMClientTestCase {
651656 parameters: [ " session_token " : sessionToken] )
652657 { ( response) in
653658 guard let value = response. value as? [ String : Any ] ,
654- let client_id = value [ " client_id " ] as? String ,
655- client_id == client. ID,
656- let signature = value [ " signature " ] as? String ,
657- let timestamp = value [ " timestamp " ] as? Int64 ,
658- let nonce = value [ " nonce " ] as? String else {
659- XCTFail ( )
660- return
661- }
659+ let client_id = value [ " client_id " ] as? String ,
660+ client_id == client. ID,
661+ let signature = value [ " signature " ] as? String ,
662+ let timestamp = value [ " timestamp " ] as? Int64 ,
663+ let nonce = value [ " nonce " ] as? String else {
664+ XCTFail ( )
665+ return
666+ }
662667 completion ( IMSignature (
663668 signature: signature,
664669 timestamp: timestamp,
0 commit comments