@@ -22,7 +22,12 @@ class TestNSError : XCTestCase {
22
22
( " test_CustomNSError_errorCode " , test_CustomNSError_errorCode) ,
23
23
( " test_CustomNSError_errorCodeRawInt " , test_CustomNSError_errorCodeRawInt) ,
24
24
( " test_CustomNSError_errorCodeRawUInt " , test_CustomNSError_errorCodeRawUInt) ,
25
- ( " test_errorConvenience " , test_errorConvenience)
25
+ ( " test_errorConvenience " , test_errorConvenience) ,
26
+ ( " test_ConvertErrorToNSError_domain " , test_ConvertErrorToNSError_domain) ,
27
+ ( " test_ConvertErrorToNSError_errorCode " , test_ConvertErrorToNSError_errorCode) ,
28
+ ( " test_ConvertErrorToNSError_errorCodeRawInt " , test_ConvertErrorToNSError_errorCodeRawInt) ,
29
+ ( " test_ConvertErrorToNSError_errorCodeRawUInt " , test_ConvertErrorToNSError_errorCodeRawUInt) ,
30
+ ( " test_ConvertErrorToNSError_errorCodeWithAssosiatedValue " , test_ConvertErrorToNSError_errorCodeWithAssosiatedValue) ,
26
31
]
27
32
}
28
33
@@ -106,6 +111,60 @@ class TestNSError : XCTestCase {
106
111
XCTFail ( )
107
112
}
108
113
}
114
+
115
+ func test_ConvertErrorToNSError_domain( ) {
116
+ struct CustomSwiftError : Error {
117
+ }
118
+ XCTAssertTrue ( ( CustomSwiftError ( ) as NSError ) . domain. contains ( " CustomSwiftError " ) )
119
+ }
120
+
121
+ func test_ConvertErrorToNSError_errorCode( ) {
122
+ enum SwiftError : Error {
123
+ case zero
124
+ case one
125
+ case two
126
+ }
127
+
128
+ XCTAssertEqual ( ( SwiftError . zero as NSError ) . code, 0 )
129
+ XCTAssertEqual ( ( SwiftError . one as NSError ) . code, 1 )
130
+ XCTAssertEqual ( ( SwiftError . two as NSError ) . code, 2 )
131
+ }
132
+
133
+ func test_ConvertErrorToNSError_errorCodeRawInt( ) {
134
+ enum SwiftError : Int , Error {
135
+ case minusOne = - 1
136
+ case fortyTwo = 42
137
+ }
138
+
139
+ XCTAssertEqual ( ( SwiftError . minusOne as NSError ) . code, - 1 )
140
+ XCTAssertEqual ( ( SwiftError . fortyTwo as NSError ) . code, 42 )
141
+ }
142
+
143
+ func test_ConvertErrorToNSError_errorCodeRawUInt( ) {
144
+ enum SwiftError : UInt , Error {
145
+ case fortyTwo = 42
146
+ }
147
+
148
+ XCTAssertEqual ( ( SwiftError . fortyTwo as NSError ) . code, 42 )
149
+ }
150
+
151
+ func test_ConvertErrorToNSError_errorCodeWithAssosiatedValue( ) {
152
+ // Default error code for enum case is based on EnumImplStrategy::getTagIndex
153
+ enum SwiftError : Error {
154
+ case one // 2
155
+ case two // 3
156
+ case three( String ) // 0
157
+ case four // 4
158
+ case five( String ) // 1
159
+ }
160
+
161
+ XCTAssertEqual ( ( SwiftError . one as NSError ) . code, 2 )
162
+ XCTAssertEqual ( ( SwiftError . two as NSError ) . code, 3 )
163
+ XCTAssertEqual ( ( SwiftError . three ( " three " ) as NSError ) . code, 0 )
164
+ XCTAssertEqual ( ( SwiftError . four as NSError ) . code, 4 )
165
+ XCTAssertEqual ( ( SwiftError . five ( " five " ) as NSError ) . code, 1 )
166
+ }
167
+
109
168
}
110
169
111
170
class TestURLError : XCTestCase {
0 commit comments