17
17
import SwiftXCTest
18
18
#endif
19
19
20
+ private func assertEqual( _ lhs: PersonNameComponents ,
21
+ _ rhs: PersonNameComponents ,
22
+ file: StaticString = #file,
23
+ line: UInt = #line) {
24
+ assert ( equal: true , lhs, rhs, file: file, line: line)
25
+ }
26
+
27
+ private func assertNotEqual( _ lhs: PersonNameComponents ,
28
+ _ rhs: PersonNameComponents ,
29
+ file: StaticString = #file,
30
+ line: UInt = #line) {
31
+ assert ( equal: false , lhs, rhs, file: file, line: line)
32
+ }
20
33
34
+ private func assert( equal: Bool ,
35
+ _ lhs: PersonNameComponents ,
36
+ _ rhs: PersonNameComponents ,
37
+ file: StaticString = #file,
38
+ line: UInt = #line) {
39
+ if equal {
40
+ XCTAssertEqual ( lhs, rhs, file: file, line: line)
41
+ XCTAssertEqual ( lhs. _bridgeToObjectiveC ( ) , rhs. _bridgeToObjectiveC ( ) , file: file, line: line)
42
+ XCTAssertTrue ( lhs. _bridgeToObjectiveC ( ) . isEqual ( rhs) , file: file, line: line)
43
+ } else {
44
+ XCTAssertNotEqual ( lhs, rhs, file: file, line: line)
45
+ XCTAssertNotEqual ( lhs. _bridgeToObjectiveC ( ) , rhs. _bridgeToObjectiveC ( ) , file: file, line: line)
46
+ XCTAssertFalse ( lhs. _bridgeToObjectiveC ( ) . isEqual ( rhs) , file: file, line: line)
47
+ }
48
+ }
21
49
22
50
class TestNSPersonNameComponents : XCTestCase {
23
51
24
52
static var allTests : [ ( String , ( TestNSPersonNameComponents ) -> ( ) throws -> Void ) ] {
25
53
return [
26
54
( " testCopy " , testCopy) ,
55
+ ( " testEquality " , testEquality) ,
27
56
]
28
57
}
29
58
@@ -39,6 +68,78 @@ class TestNSPersonNameComponents : XCTestCase {
39
68
XCTAssertEqual ( original. phoneticRepresentation!. givenName, copy. phoneticRepresentation!. givenName)
40
69
XCTAssertNil ( copy. phoneticRepresentation!. phoneticRepresentation)
41
70
}
71
+
72
+ func testEquality( ) {
73
+ do {
74
+ let lhs = PersonNameComponents ( )
75
+ let rhs = PersonNameComponents ( )
76
+ assertEqual ( lhs, rhs)
77
+ }
78
+
79
+ let lhs = self . makePersonNameComponentsWithTestValues ( )
80
+ do {
81
+ let rhs = self . makePersonNameComponentsWithTestValues ( )
82
+ assertEqual ( lhs, rhs)
83
+ }
84
+ do {
85
+ var rhs = self . makePersonNameComponentsWithTestValues ( )
86
+ rhs. namePrefix = " differentValue "
87
+ assertNotEqual ( lhs, rhs)
88
+ }
89
+ do {
90
+ var rhs = self . makePersonNameComponentsWithTestValues ( )
91
+ rhs. givenName = " differentValue "
92
+ assertNotEqual ( lhs, rhs)
93
+ }
94
+ do {
95
+ var rhs = self . makePersonNameComponentsWithTestValues ( )
96
+ rhs. middleName = " differentValue "
97
+ assertNotEqual ( lhs, rhs)
98
+ }
99
+ do {
100
+ var rhs = self . makePersonNameComponentsWithTestValues ( )
101
+ rhs. familyName = " differentValue "
102
+ assertNotEqual ( lhs, rhs)
103
+ }
104
+ do {
105
+ var rhs = self . makePersonNameComponentsWithTestValues ( )
106
+ rhs. nameSuffix = " differentValue "
107
+ assertNotEqual ( lhs, rhs)
108
+ }
109
+ do {
110
+ var rhs = self . makePersonNameComponentsWithTestValues ( )
111
+ rhs. nickname = " differentValue "
112
+ assertNotEqual ( lhs, rhs)
113
+ }
114
+ do {
115
+ var rhs = self . makePersonNameComponentsWithTestValues ( )
116
+ rhs. phoneticRepresentation? . namePrefix = " differentValue "
117
+ assertNotEqual ( lhs, rhs)
118
+ }
119
+ }
120
+
121
+ // MARK: - Helpers
122
+
123
+ private func makePersonNameComponentsWithTestValues( ) -> PersonNameComponents {
124
+ var components = PersonNameComponents ( )
125
+ components. namePrefix = " namePrefix "
126
+ components. givenName = " givenName "
127
+ components. middleName = " middleName "
128
+ components. familyName = " familyName "
129
+ components. nameSuffix = " nameSuffix "
130
+ components. nickname = " nickname "
131
+ components. phoneticRepresentation = {
132
+ var components = PersonNameComponents ( )
133
+ components. namePrefix = " phonetic_namePrefix "
134
+ components. givenName = " phonetic_givenName "
135
+ components. middleName = " phonetic_middleName "
136
+ components. familyName = " phonetic_familyName "
137
+ components. nameSuffix = " phonetic_nameSuffix "
138
+ components. nickname = " phonetic_nickname "
139
+ return components
140
+ } ( )
141
+ return components
142
+ }
42
143
}
43
144
44
145
0 commit comments