1*89a1d03eSRichard// RUN: %check_clang_tidy %s objc-assert-equals %t -- -- -I %S/Inputs/assert 2*89a1d03eSRichard#include "XCTestAssertions.h" 3*89a1d03eSRichard// Can't reference NSString directly so we use this getStr() instead. 4*89a1d03eSRichard__typeof(@"abc") getStr(void) { 5*89a1d03eSRichard return @"abc"; 6*89a1d03eSRichard} 7*89a1d03eSRichardvoid foo(void) { 8*89a1d03eSRichard XCTAssertEqual(getStr(), @"abc"); 9*89a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use XCTAssertEqualObjects for comparing objects 10*89a1d03eSRichard // CHECK-FIXES: XCTAssertEqualObjects(getStr(), @"abc"); 11*89a1d03eSRichard XCTAssertEqual(@"abc", @"abc"); 12*89a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use XCTAssertEqualObjects for comparing objects 13*89a1d03eSRichard // CHECK-FIXES: XCTAssertEqualObjects(@"abc", @"abc"); 14*89a1d03eSRichard XCTAssertEqual(@"abc", getStr()); 15*89a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use XCTAssertEqualObjects for comparing objects 16*89a1d03eSRichard // CHECK-FIXES: XCTAssertEqualObjects(@"abc", getStr()); 17*89a1d03eSRichard XCTAssertEqual(getStr(), getStr()); 18*89a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use XCTAssertEqualObjects for comparing objects 19*89a1d03eSRichard // CHECK-FIXES: XCTAssertEqualObjects(getStr(), getStr()); 20*89a1d03eSRichard // Primitive types should be ok 21*89a1d03eSRichard XCTAssertEqual(123, 123); 22*89a1d03eSRichard XCTAssertEqual(123.0, 123.45); 23*89a1d03eSRichard // FIXME: This is the case where we don't diagnose properly. 24*89a1d03eSRichard // XCTAssertEqual(@"abc" != @"abc", @"xyz" != @"xyz") 25*89a1d03eSRichard} 26