Skip to content

Commit e278f8e

Browse files
committed
Add tests for nested key in ImmutableMappable
1 parent dcb8f10 commit e278f8e

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

Tests/ImmutableTests.swift

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

176213
extension 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

Comments
 (0)