@@ -107,11 +107,27 @@ class ContextKeyTests: XCTestCase {
107107 let decoder = FineJSONDecoder ( )
108108
109109 let encodedContext = try encoder. encode ( context)
110- XCTAssertEqual ( String ( data: encodedContext, encoding: . utf8) , " { \" CodableArrayStringContextKey \" : \" WyJIZWxsbyBTdW4iXQ== \" , \" CodableStringContextKey \" : \" IkhlbGxvIFdvcmxkIg== \" } " )
110+ XCTAssertEqual (
111+ String ( data: encodedContext, encoding: . utf8) ,
112+ " { \" CodableArrayStringContextKey \" : \" WyJIZWxsbyBTdW4iXQ== \" , \" CodableStringContextKey \" : \" IkhlbGxvIFdvcmxkIg== \" } "
113+ )
111114 let decodedContext = try decoder. decode ( Context . self, from: encodedContext)
112115
113116 XCTAssertEqual ( decodedContext. get ( valueFor: CodableStringContextKey . self) , " Hello World " )
114117 XCTAssertEqual ( decodedContext. get ( valueFor: RequiredCodableStringContextKey . self) , " Default Value! " )
115118 XCTAssertEqual ( decodedContext. get ( valueFor: CodableArrayStringContextKey . self) , [ " Hello Sun " ] )
116119 }
120+
121+ func testUnsafeAddAllowingOverwrite( ) {
122+ struct CodableStringContextKey : CodableContextKey {
123+ typealias Value = String
124+ }
125+
126+ let context = Context ( )
127+
128+ context. unsafeAdd ( CodableStringContextKey . self, value: " Hello World " )
129+ XCTAssertEqual ( context. get ( valueFor: CodableStringContextKey . self) , " Hello World " )
130+ context. unsafeAdd ( CodableStringContextKey . self, value: " Hello Mars " , allowOverwrite: true )
131+ XCTAssertEqual ( context. get ( valueFor: CodableStringContextKey . self) , " Hello Mars " )
132+ }
117133}
0 commit comments