// Copyright 2015 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. //go:build ignore // +build ignore @import ObjectiveC.message; @import Foundation; @import XCTest; @import Objcpkg; @interface TestNSObject : NSObject - (NSString *)description; - (NSString *)super_description; @end @implementation TestNSObject - (NSString *)description { return @"hej"; } - (NSString *)super_description { return [super description]; } @end @interface wrappers : XCTestCase @end @implementation wrappers - (void)setUp { [super setUp]; // Put setup code here. This method is called before the invocation of each test method in the class. } - (void)tearDown { // Put teardown code here. This method is called after the invocation of each test method in the class. [super tearDown]; } - (void)testFunction { ObjcpkgFunc(); } - (void)testMethod { ObjcpkgMethod(); } - (void)testNew { ObjcpkgNew(); } - (void)testError { ObjcpkgError(); } - (void)testClass { ObjcpkgGoNSDate *d = [[ObjcpkgGoNSDate alloc] init]; NSString *desc = [d description]; XCTAssertEqual(d, [d getSelf], "GoNSDate self not identical"); XCTAssertEqual(ObjcpkgHash, [d hash], "GoNSDate hash not identical"); XCTAssertTrue([desc isEqualToString:ObjcpkgDescriptionStr], "GoNSDate description mismatch: %@", desc); ObjcpkgGoUIResponder *resp = [[ObjcpkgGoUIResponder alloc] init]; [resp pressesBegan:nil withEvent:nil]; XCTAssertTrue([resp called], "GoUIResponder.pressesBegan not called"); } - (void)testSuper { ObjcpkgGoNSObject *o = [[ObjcpkgGoNSObject alloc] init]; struct objc_super _super = { .receiver = o, .super_class = [NSObject class], }; NSString *superDesc = ((NSString *(*)(struct objc_super*, SEL))objc_msgSendSuper)(&_super, @selector(description)); XCTAssertTrue([superDesc isEqualToString:[o description]], "GoNSObject description mismatch"); [o setUseSelf:TRUE]; XCTAssertTrue([ObjcpkgDescriptionStr isEqualToString:[o description]], "GoNSObject description mismatch"); } - (void)testIdentity { NSDate *d = [[NSDate alloc] init]; NSDate *d2 = ObjcpkgDupNSDate(d); XCTAssertEqual(d, d2, @"ObjcpkgDupNSDate failed to duplicate ObjC instance"); ObjcpkgGoNSDate *gd = [[ObjcpkgGoNSDate alloc] init]; NSDate *gd2 = ObjcpkgDupNSDate(gd); XCTAssertEqual(gd, gd2, @"ObjcpkgDupNSDate failed to duplicate Go instance"); NSDate *gd3 = ObjcpkgNewGoNSDate(); NSDate *gd4 = ObjcpkgDupNSDate(gd3); XCTAssertEqual(gd4, gd3, @"ObjcpkgDupNSDate failed to duplicate instance created in Go"); } @end