Skip to content

Commit a47d607

Browse files
authored
Merge pull request #17 from acecilia/encoding-to-same-encoder
Added testEncodingMultipleTimesUsingTheSameEncoder
2 parents 9172359 + 7dba601 commit a47d607

1 file changed

Lines changed: 35 additions & 0 deletions

File tree

Tests/DictionaryEncoderTests.swift

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,39 @@ class DictionaryEncoderTests: XCTestCase {
9999
let decodedValue = try DictionaryDecoder().decode(Model.self, from: encodedValue)
100100
XCTAssertEqual(value, decodedValue)
101101
}
102+
103+
func testEncodingMultipleTimesUsingTheSameEncoder() throws {
104+
struct Element1: Codable, Equatable {
105+
let p1: String
106+
}
107+
108+
struct Element2: Codable, Equatable {
109+
let p2: String
110+
}
111+
112+
struct ComplexStruct: Codable, Equatable {
113+
let element1: Element1
114+
let element2: Element2
115+
116+
init(element1: Element1, element2: Element2) {
117+
self.element1 = element1
118+
self.element2 = element2
119+
}
120+
121+
func encode(to encoder: Encoder) throws {
122+
try element1.encode(to: encoder)
123+
try element2.encode(to: encoder)
124+
}
125+
126+
init(from decoder: Decoder) throws {
127+
self.element1 = try Element1(from: decoder)
128+
self.element2 = try Element2(from: decoder)
129+
}
130+
}
131+
132+
let object = ComplexStruct(element1: .init(p1: "p1"), element2: .init(p2: "p2"))
133+
let expected = ["p1": "p1", "p2": "p2"]
134+
let result = try encoder.encode(object)
135+
XCTAssertEqual(result as? [String: String], expected)
136+
}
102137
}

0 commit comments

Comments
 (0)