File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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}
You can’t perform that action at this time.
0 commit comments