@@ -74,6 +74,20 @@ class ImmutableObjectTests: XCTestCase {
7474 " prop24 " : 255 ,
7575 " prop25 " : true ,
7676 " prop26 " : 255.0 ,
77+
78+ " non.nested->key " : " string " ,
79+ " nested " : [
80+ " int " : 123 ,
81+ " string " : " hello " ,
82+ " array " : [ " a " , " b " , " c " ] ,
83+ " dictionary " : [ " a " : 10 , " b " : 20 , " c " : 30 ] ,
84+ ] ,
85+ " com.hearst.ObjectMapper.nested " : [
86+ " com.hearst.ObjectMapper.int " : 123 ,
87+ " com.hearst.ObjectMapper.string " : " hello " ,
88+ " array " : [ " a " , " b " , " c " ] ,
89+ " dictionary " : [ " a " : 10 , " b " : 20 , " c " : 30 ] ,
90+ ]
7791 ]
7892
7993 func testImmutableMappable( ) {
@@ -115,6 +129,18 @@ class ImmutableObjectTests: XCTestCase {
115129 XCTAssertEqual ( immutable. prop24!, 255 )
116130 XCTAssertEqual ( immutable. prop25!, true )
117131 XCTAssertEqual ( immutable. prop26!, 255.0 )
132+
133+ XCTAssertEqual ( immutable. nonnestedString, " string " )
134+
135+ XCTAssertEqual ( immutable. nestedInt, 123 )
136+ XCTAssertEqual ( immutable. nestedString, " hello " )
137+ XCTAssertEqual ( immutable. nestedArray, [ " a " , " b " , " c " ] )
138+ XCTAssertEqual ( immutable. nestedDictionary, [ " a " : 10 , " b " : 20 , " c " : 30 ] )
139+
140+ XCTAssertEqual ( immutable. delimiterNestedInt, 123 )
141+ XCTAssertEqual ( immutable. delimiterNestedString, " hello " )
142+ XCTAssertEqual ( immutable. delimiterNestedArray, [ " a " , " b " , " c " ] )
143+ XCTAssertEqual ( immutable. delimiterNestedDictionary, [ " a " : 10 , " b " : 20 , " c " : 30 ] )
118144
119145 let JSON2 : [ String : Any ] = [ " prop1 " : " prop1 " , " prop2 " : NSNull ( ) ]
120146 let immutable2 = try ? mapper. map ( JSON: JSON2)
@@ -171,6 +197,17 @@ struct Struct {
171197 var prop24 : Int ?
172198 var prop25 : Bool ?
173199 var prop26 : Double ?
200+
201+ var nonnestedString : String
202+ var nestedInt : Int
203+ var nestedString : String
204+ var nestedArray : [ String ]
205+ var nestedDictionary : [ String : Int ]
206+
207+ var delimiterNestedInt : Int
208+ var delimiterNestedString : String
209+ var delimiterNestedArray : [ String ]
210+ var delimiterNestedDictionary : [ String : Int ]
174211}
175212
176213extension Struct : ImmutableMappable {
@@ -203,6 +240,18 @@ extension Struct: ImmutableMappable {
203240 prop20 = try map. value ( " prop20 " )
204241 prop21 = try ? map. value ( " prop21 " )
205242 prop22 = try ? map. value ( " prop22 " )
243+
244+ nonnestedString = try map. value ( " non.nested->key " , nested: false )
245+
246+ nestedInt = try map. value ( " nested.int " )
247+ nestedString = try map. value ( " nested.string " )
248+ nestedArray = try map. value ( " nested.array " )
249+ nestedDictionary = try map. value ( " nested.dictionary " )
250+
251+ delimiterNestedInt = try map. value ( " com.hearst.ObjectMapper.nested->com.hearst.ObjectMapper.int " , delimiter: " -> " )
252+ delimiterNestedString = try map. value ( " com.hearst.ObjectMapper.nested->com.hearst.ObjectMapper.string " , delimiter: " -> " )
253+ delimiterNestedArray = try map. value ( " com.hearst.ObjectMapper.nested->array " , delimiter: " -> " )
254+ delimiterNestedDictionary = try map. value ( " com.hearst.ObjectMapper.nested->dictionary " , delimiter: " -> " )
206255 }
207256
208257 mutating func mapping( map: Map ) {
@@ -239,6 +288,18 @@ extension Struct: ImmutableMappable {
239288 prop20 >>> map [ " prop20 " ]
240289 prop21 >>> map [ " prop21 " ]
241290 prop22 >>> map [ " prop22 " ]
291+
292+ nonnestedString >>> map [ " non.nested->key " , nested: false ]
293+
294+ nestedInt >>> map [ " nested.int " ]
295+ nestedString >>> map [ " nested.string " ]
296+ nestedArray >>> map [ " nested.array " ]
297+ nestedDictionary >>> map [ " nested.dictionary " ]
298+
299+ delimiterNestedInt >>> map [ " com.hearst.ObjectMapper.nested->com.hearst.ObjectMapper.int " , delimiter: " -> " ]
300+ delimiterNestedString >>> map [ " com.hearst.ObjectMapper.nested->com.hearst.ObjectMapper.string " , delimiter: " -> " ]
301+ delimiterNestedArray >>> map [ " com.hearst.ObjectMapper.nested->array " , delimiter: " -> " ]
302+ delimiterNestedDictionary >>> map [ " com.hearst.ObjectMapper.nested->dictionary " , delimiter: " -> " ]
242303 }
243304}
244305
0 commit comments