@@ -17,6 +17,9 @@ import XCTest
17
17
18
18
class TencentCloudTests : XCTestCase {
19
19
static let allRegions = Set ( TencentCloud . Region. mainland + TencentCloud. Region. overseas)
20
+ struct Wrapped < T: Codable > : Codable {
21
+ let value : T
22
+ }
20
23
21
24
func testRegionCountEqual( ) {
22
25
XCTAssertEqual ( TencentCloud . Region. mainland. count + TencentCloud. Region. overseas. count, TencentCloud . Region. regular. count + TencentCloud. Region. financial. count)
@@ -27,26 +30,28 @@ class TencentCloudTests: XCTestCase {
27
30
let encoder = JSONEncoder ( )
28
31
let decoder = JSONDecoder ( )
29
32
for region in Self . allRegions {
30
- let json = " \" \( region. rawValue) \" "
31
- let encoded = try encoder. encode ( region)
32
- let decoded = try decoder. decode ( TencentCloud . Region. self, from: json. data ( using: . utf8) !)
33
+ let wrapped = Wrapped ( value: region)
34
+ let json = #"{"value":" \#( region. rawValue) "}"#
35
+ let encoded = try encoder. encode ( wrapped)
36
+ let decoded = try decoder. decode ( Wrapped< TencentCloud . Region> . self , from: json. data ( using: . utf8) !)
33
37
XCTAssertEqual ( String ( data: encoded, encoding: . utf8) , json)
34
- XCTAssertEqual ( region, decoded)
38
+ XCTAssertEqual ( region, decoded. value )
35
39
}
36
40
}
37
41
38
42
func testZoneWithRawAndCodable( ) throws {
39
- let number = 23
40
43
let encoder = JSONEncoder ( )
41
44
let decoder = JSONDecoder ( )
42
45
for region in Self . allRegions {
46
+ let number = UInt8 . random ( in: UInt8 . min ... UInt8 . max)
43
47
let zone = TencentCloud . Zone ( rawValue: " \( region) - \( number) " )
44
48
XCTAssertNotNil ( zone)
45
- let json = " \" \( zone!) \" "
46
- let encoded = try encoder. encode ( zone)
47
- let decoded = try decoder. decode ( TencentCloud . Zone. self, from: json. data ( using: . utf8) !)
49
+ let wrapped = Wrapped ( value: zone!)
50
+ let json = #"{"value":" \#( zone!. rawValue) "}"#
51
+ let encoded = try encoder. encode ( wrapped)
52
+ let decoded = try decoder. decode ( Wrapped< TencentCloud . Zone> . self , from: json. data ( using: . utf8) !)
48
53
XCTAssertEqual ( String ( data: encoded, encoding: . utf8) , json)
49
- XCTAssertEqual ( zone, decoded)
54
+ XCTAssertEqual ( zone, decoded. value )
50
55
}
51
56
}
52
57
}
0 commit comments