@@ -238,7 +238,7 @@ public func XCTAssertFalse(_ expression: @autoclosure () throws -> Boolean, _ me
238
238
}
239
239
}
240
240
241
- public func XCTAssertEqual< T : Equatable > ( _ expression1: @autoclosure ( ) throws -> T ? , _ expression2: @autoclosure ( ) throws -> T ? , _ message: @autoclosure ( ) -> String = " " , file: StaticString = #file, line: UInt = #line) -> Void {
241
+ public func XCTAssertEqual< T : Equatable > ( _ expression1: @autoclosure ( ) throws -> T , _ expression2: @autoclosure ( ) throws -> T , _ message: @autoclosure ( ) -> String = " " , file: StaticString = #file, line: UInt = #line) -> Void {
242
242
let assertionType = _XCTAssertionType. equal
243
243
244
244
// evaluate each expression exactly once
@@ -252,12 +252,15 @@ public func XCTAssertEqual<T : Equatable>(_ expression1: @autoclosure () throws
252
252
253
253
switch result {
254
254
case . success:
255
- if expressionValue1Optional != expressionValue2Optional {
255
+ let expressionValue1 : T = expressionValue1Optional!
256
+ let expressionValue2 : T = expressionValue2Optional!
257
+
258
+ if expressionValue1 != expressionValue2 {
256
259
// TODO: @auto_string expression1
257
260
// TODO: @auto_string expression2
258
261
259
- let expressionValueStr1 = " \( expressionValue1Optional ) "
260
- let expressionValueStr2 = " \( expressionValue2Optional ) "
262
+ let expressionValueStr1 = " \( expressionValue1 ) "
263
+ let expressionValueStr2 = " \( expressionValue2 ) "
261
264
262
265
_XCTRegisterFailure ( true , _XCTFailureDescription ( assertionType, 0 , expressionValueStr1 as NSString , expressionValueStr2 as NSString ) , message, file, line)
263
266
}
@@ -273,6 +276,41 @@ public func XCTAssertEqual<T : Equatable>(_ expression1: @autoclosure () throws
273
276
}
274
277
}
275
278
279
+ public func XCTAssertEqual< T : Equatable > ( _ expression1: @autoclosure ( ) throws -> T ? , _ expression2: @autoclosure ( ) throws -> T ? , _ message: @autoclosure ( ) -> String = " " , file: StaticString = #file, line: UInt = #line) -> Void {
280
+ let assertionType = _XCTAssertionType. equal
281
+
282
+ // evaluate each expression exactly once
283
+ var expressionValue1Optional : T ?
284
+ var expressionValue2Optional : T ?
285
+
286
+ let result = _XCTRunThrowableBlock {
287
+ expressionValue1Optional = try expression1 ( )
288
+ expressionValue2Optional = try expression2 ( )
289
+ }
290
+
291
+ switch result {
292
+ case . success:
293
+ if expressionValue1Optional != expressionValue2Optional {
294
+ // TODO: @auto_string expression1
295
+ // TODO: @auto_string expression2
296
+
297
+ let expressionValueStr1 = " \( expressionValue1Optional) "
298
+ let expressionValueStr2 = " \( expressionValue2Optional) "
299
+
300
+ _XCTRegisterFailure ( true , _XCTFailureDescription ( assertionType, 0 , expressionValueStr1 as NSString , expressionValueStr2 as NSString ) , message, file, line)
301
+ }
302
+
303
+ case . failedWithError( let error) :
304
+ _XCTRegisterFailure ( false , " XCTAssertEqual failed: threw error \" \( error) \" " , message, file, line)
305
+
306
+ case . failedWithException( _, _, let reason) :
307
+ _XCTRegisterFailure ( false , _XCTFailureDescription ( assertionType, 1 , reason as NSString ) , message, file, line)
308
+
309
+ case . failedWithUnknownException:
310
+ _XCTRegisterFailure ( true , _XCTFailureDescription ( assertionType, 2 ) , message, file, line)
311
+ }
312
+ }
313
+
276
314
// FIXME: Due to <rdar://problem/16768059> we need overrides of XCTAssertEqual for:
277
315
// ContiguousArray<T>
278
316
// ArraySlice<T>
@@ -431,7 +469,7 @@ public func XCTAssertEqual<T, U : Equatable>(_ expression1: @autoclosure () thro
431
469
}
432
470
}
433
471
434
- public func XCTAssertNotEqual< T : Equatable > ( _ expression1: @autoclosure ( ) throws -> T ? , _ expression2: @autoclosure ( ) throws -> T ? , _ message: @autoclosure ( ) -> String = " " , file: StaticString = #file, line: UInt = #line) -> Void {
472
+ public func XCTAssertNotEqual< T : Equatable > ( _ expression1: @autoclosure ( ) throws -> T , _ expression2: @autoclosure ( ) throws -> T , _ message: @autoclosure ( ) -> String = " " , file: StaticString = #file, line: UInt = #line) -> Void {
435
473
let assertionType = _XCTAssertionType. notEqual
436
474
437
475
// evaluate each expression exactly once
@@ -445,12 +483,15 @@ public func XCTAssertNotEqual<T : Equatable>(_ expression1: @autoclosure () thro
445
483
446
484
switch result {
447
485
case . success:
448
- if expressionValue1Optional == expressionValue2Optional {
486
+ let expressionValue1 : T = expressionValue1Optional!
487
+ let expressionValue2 : T = expressionValue2Optional!
488
+
489
+ if expressionValue1 == expressionValue2 {
449
490
// TODO: @auto_string expression1
450
491
// TODO: @auto_string expression2
451
492
452
- let expressionValueStr1 = " \( expressionValue1Optional ) "
453
- let expressionValueStr2 = " \( expressionValue2Optional ) "
493
+ let expressionValueStr1 = " \( expressionValue1 ) "
494
+ let expressionValueStr2 = " \( expressionValue2 ) "
454
495
455
496
_XCTRegisterFailure ( true , _XCTFailureDescription ( assertionType, 0 , expressionValueStr1 as NSString , expressionValueStr2 as NSString ) , message, file, line)
456
497
}
@@ -466,6 +507,41 @@ public func XCTAssertNotEqual<T : Equatable>(_ expression1: @autoclosure () thro
466
507
}
467
508
}
468
509
510
+ public func XCTAssertNotEqual< T : Equatable > ( _ expression1: @autoclosure ( ) throws -> T ? , _ expression2: @autoclosure ( ) throws -> T ? , _ message: @autoclosure ( ) -> String = " " , file: StaticString = #file, line: UInt = #line) -> Void {
511
+ let assertionType = _XCTAssertionType. notEqual
512
+
513
+ // evaluate each expression exactly once
514
+ var expressionValue1Optional : T ?
515
+ var expressionValue2Optional : T ?
516
+
517
+ let result = _XCTRunThrowableBlock {
518
+ expressionValue1Optional = try expression1 ( )
519
+ expressionValue2Optional = try expression2 ( )
520
+ }
521
+
522
+ switch result {
523
+ case . success:
524
+ if expressionValue1Optional == expressionValue2Optional {
525
+ // TODO: @auto_string expression1
526
+ // TODO: @auto_string expression2
527
+
528
+ let expressionValueStr1 = " \( expressionValue1Optional) "
529
+ let expressionValueStr2 = " \( expressionValue2Optional) "
530
+
531
+ _XCTRegisterFailure ( true , _XCTFailureDescription ( assertionType, 0 , expressionValueStr1 as NSString , expressionValueStr2 as NSString ) , message, file, line)
532
+ }
533
+
534
+ case . failedWithError( let error) :
535
+ _XCTRegisterFailure ( false , " XCTAssertNotEqual failed: threw error \" \( error) \" " , message, file, line)
536
+
537
+ case . failedWithException( _, _, let reason) :
538
+ _XCTRegisterFailure ( false , _XCTFailureDescription ( assertionType, 1 , reason as NSString ) , message, file, line)
539
+
540
+ case . failedWithUnknownException:
541
+ _XCTRegisterFailure ( true , _XCTFailureDescription ( assertionType, 2 ) , message, file, line)
542
+ }
543
+ }
544
+
469
545
// FIXME: Due to <rdar://problem/16768059> we need overrides of XCTAssertNotEqual for:
470
546
// ContiguousArray<T>
471
547
// ArraySlice<T>
0 commit comments