File: SeqWrappers.m

package info (click to toggle)
golang-golang-x-mobile 0.0~git20250520.a1d9079%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,784 kB
  • sloc: objc: 1,512; java: 1,489; ansic: 1,159; xml: 365; asm: 34; sh: 14; makefile: 5
file content (98 lines) | stat: -rw-r--r-- 2,598 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
// 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