Skip to content

Commit 62cfc99

Browse files
committed
Update test case
1 parent bc20556 commit 62cfc99

File tree

6 files changed

+154
-9
lines changed

6 files changed

+154
-9
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@
55
## new
66
- Add documentation
77

8-
## [1.0.0](https://github.com/kakaopensource/KakaJSON/releases/tag/1.0.0) (2019-08-22)
8+
## [1.0.0](https://github.com/kakaopensource/KakaJSON/releases/tag/1.0.0) (2019-08-23)
99
- First public release

KakaJSONDemo.xcodeproj/project.pbxproj

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -401,11 +401,11 @@
401401
2D9068C0230F7C7600243BB6 /* Model_To_JSON */ = {
402402
isa = PBXGroup;
403403
children = (
404-
2D9068C1230F7C7600243BB6 /* MTJ_04_KeyMapping.swift */,
405-
2D9068C2230F7C7600243BB6 /* MTJ_05_CustomValue.swift */,
406-
2D9068C3230F7C7600243BB6 /* MTJ_02_NestedModel.swift */,
407404
2D9068C4230F7C7600243BB6 /* MTJ_01_Basic.swift */,
405+
2D9068C3230F7C7600243BB6 /* MTJ_02_NestedModel.swift */,
408406
2D9068C5230F7C7600243BB6 /* MTJ_03_ModelArray.swift */,
407+
2D9068C1230F7C7600243BB6 /* MTJ_04_KeyMapping.swift */,
408+
2D9068C2230F7C7600243BB6 /* MTJ_05_CustomValue.swift */,
409409
);
410410
path = Model_To_JSON;
411411
sourceTree = "<group>";
@@ -425,11 +425,11 @@
425425
children = (
426426
2D9068CB230F7C7600243BB6 /* JTM_01_Basic.swift */,
427427
2D9068CC230F7C7600243BB6 /* JTM_02_DataType.swift */,
428-
2D9068CD230F7C7600243BB6 /* JTM_06_CustomValue.swift */,
428+
2D9068D1230F7C7600243BB6 /* JTM_03_NestedModel.swift */,
429+
2D9068D0230F7C7600243BB6 /* JTM_04_ModelArray.swift */,
429430
2D9068CE230F7C7600243BB6 /* JTM_05_KeyMapping.swift */,
431+
2D9068CD230F7C7600243BB6 /* JTM_06_CustomValue.swift */,
430432
2D9068CF230F7C7600243BB6 /* JTM_07_DynamicModel.swift */,
431-
2D9068D0230F7C7600243BB6 /* JTM_04_ModelArray.swift */,
432-
2D9068D1230F7C7600243BB6 /* JTM_03_NestedModel.swift */,
433433
);
434434
path = JSON_To_Model;
435435
sourceTree = "<group>";

KakaJSONDemo.xcodeproj/xcshareddata/xcschemes/KakaJSONDemo.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
</BuildActionEntries>
2424
</BuildAction>
2525
<TestAction
26-
buildConfiguration = "Debug"
26+
buildConfiguration = "Release"
2727
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
2828
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
2929
shouldUseLaunchSchemeArgsEnv = "YES">

KakaJSONTests/JSON_To_Model/JTM_01_Basic.swift

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,26 @@ class JTM_01_Basic: XCTestCase {
8080
XCTAssert(cat?.weight == weight)
8181
}
8282

83+
func testLet() {
84+
struct Cat: Convertible {
85+
// let of integer type is very restricted in release mode
86+
// please user `private(set) var` instead of `let`
87+
private(set) var weight: Double = 0.0
88+
let name: String = ""
89+
}
90+
let name: String = "Miaomiao"
91+
let weight: Double = 6.66
92+
93+
let json: [String: Any] = [
94+
"weight": weight,
95+
"name": name
96+
]
97+
98+
let cat = json.kj.model(Cat.self)
99+
XCTAssert(cat?.name == name)
100+
XCTAssert(cat?.weight == weight)
101+
}
102+
83103
// MARK: - Class Type
84104
func testClass() {
85105
class Person: Convertible {

KakaJSONTests/JSON_To_Model/JTM_03_NestedModel.swift

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,57 @@ class JTM_03_NestedModel: XCTestCase {
9090
XCTAssert(person?.parent?.name == "Jim")
9191
}
9292

93+
func testGeneric() {
94+
struct User: Convertible {
95+
let id: String = ""
96+
let nickName: String = ""
97+
}
98+
99+
struct Goods: Convertible {
100+
private(set) var price: CGFloat = 0.0
101+
let name: String = ""
102+
}
103+
104+
struct NetResponse<Element>: Convertible {
105+
let data: Element? = nil
106+
let msg: String = ""
107+
let code: Int = 0
108+
}
109+
110+
let json1 = """
111+
{
112+
"data": {"nickName": "KaKa", "id": 213234234},
113+
"msg": "Success",
114+
"code" : 200
115+
}
116+
"""
117+
let response1 = json1.kj.model(NetResponse<User>.self)
118+
let user = response1?.data
119+
XCTAssert(user?.nickName == "KaKa")
120+
XCTAssert(user?.id == "213234234")
121+
122+
let json2 = """
123+
{
124+
"data": [
125+
{"price": "6199", "name": "iPhone XR"},
126+
{"price": "8199", "name": "iPhone XS"},
127+
{"price": "9099", "name": "iPhone Max"}
128+
],
129+
"msg": "Success",
130+
"code" : 200
131+
}
132+
"""
133+
let response2 = json2.kj.model(NetResponse<[Goods]>.self)
134+
let goods = response2?.data
135+
XCTAssert(goods?.count == 3)
136+
XCTAssert(goods?[0].price == 6199)
137+
XCTAssert(goods?[0].name == "iPhone XR")
138+
XCTAssert(goods?[1].price == 8199)
139+
XCTAssert(goods?[1].name == "iPhone XS")
140+
XCTAssert(goods?[2].price == 9099)
141+
XCTAssert(goods?[2].name == "iPhone Max")
142+
}
143+
93144
func testOptional() {
94145
struct Book: Convertible {
95146
var name: String = ""

README.md

Lines changed: 75 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ Or you can login Xcode with your GitHub account. just search **KakaJSON**.
4646
- [JSONData](#jsondata)
4747
- [Nested Model 1](#nested-model-1)
4848
- [Nested Model 2](#nested-model-2)
49+
- [Recursive](#recursive)
50+
- [Generic](#generic)
4951
- [Model Array](#model-array)
5052
- [Convert](#convert)
5153
- [Listen](#listen)
@@ -342,7 +344,9 @@ let student = json.kj.model(Student.self)
342344
### let
343345
```swift
344346
struct Cat: Convertible {
345-
let weight: Double = 0.0
347+
// let of integer type is very restricted in release mode
348+
// please user `private(set) var` instead of `let`
349+
private(set) var weight: Double = 0.0
346350
let name: String = ""
347351
}
348352
let json = ...
@@ -458,6 +462,76 @@ XCTAssert(book?.name == "Fast C++")
458462
XCTAssert(book?.price == 666.6)
459463
```
460464

465+
### Recursive
466+
```swift
467+
class Person: Convertible {
468+
var name: String = ""
469+
var parent: Person?
470+
required init() {}
471+
}
472+
473+
let json: [String: Any] = [
474+
"name": "Jack",
475+
"parent": ["name": "Jim"]
476+
]
477+
478+
let person = json.kj.model(Person.self)
479+
XCTAssert(person?.name == "Jack")
480+
XCTAssert(person?.parent?.name == "Jim")
481+
```
482+
483+
### Generic
484+
```swift
485+
struct NetResponse<Element>: Convertible {
486+
let data: Element? = nil
487+
let msg: String = ""
488+
let code: Int = 0
489+
}
490+
491+
struct User: Convertible {
492+
let id: String = ""
493+
let nickName: String = ""
494+
}
495+
496+
struct Goods: Convertible {
497+
private(set) var price: CGFloat = 0.0
498+
let name: String = ""
499+
}
500+
501+
let json1 = """
502+
{
503+
"data": {"nickName": "KaKa", "id": 213234234},
504+
"msg": "Success",
505+
"code" : 200
506+
}
507+
"""
508+
let response1 = json1.kj.model(NetResponse<User>.self)
509+
let user = response1?.data
510+
XCTAssert(user?.nickName == "KaKa")
511+
XCTAssert(user?.id == "213234234")
512+
513+
let json2 = """
514+
{
515+
"data": [
516+
{"price": "6199", "name": "iPhone XR"},
517+
{"price": "8199", "name": "iPhone XS"},
518+
{"price": "9099", "name": "iPhone Max"}
519+
],
520+
"msg": "Success",
521+
"code" : 200
522+
}
523+
"""
524+
let response2 = json2.kj.model(NetResponse<[Goods]>.self)
525+
let goods = response2?.data
526+
XCTAssert(goods?.count == 3)
527+
XCTAssert(goods?[0].price == 6199)
528+
XCTAssert(goods?[0].name == "iPhone XR")
529+
XCTAssert(goods?[1].price == 8199)
530+
XCTAssert(goods?[1].name == "iPhone XS")
531+
XCTAssert(goods?[2].price == 9099)
532+
XCTAssert(goods?[2].name == "iPhone Max")
533+
```
534+
461535
### Model Array
462536
```swift
463537
struct Car: Convertible {

0 commit comments

Comments
 (0)