Skip to content

Commit 9bbbc56

Browse files
committed
add tests
1 parent 52571bf commit 9bbbc56

2 files changed

Lines changed: 271 additions & 0 deletions

File tree

Tests/test.swift

Lines changed: 265 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,265 @@
1+
import XCTest
2+
import TidyJSON
3+
4+
class ValueTests: XCTestCase {
5+
6+
var allTests : [(String, () throws -> ())] {
7+
return [
8+
("testNull", testNull),
9+
("testTrue", testTrue),
10+
("testFalse", testFalse),
11+
("testNumber", testNumber),
12+
("testString", testString),
13+
("1DArrayGetter", testSingleDimensionalArraysGetter),
14+
("2DArrayGetter", testTwoDimensionalArraysGetter),
15+
("testObjectGetter", testObjectGetter)
16+
]
17+
}
18+
19+
func testNull() {
20+
let json : JSON = nil
21+
let json1 : JSON = [nil, nil]
22+
let json2 : JSON = ["key": nil]
23+
XCTAssertTrue(json.isNull)
24+
XCTAssertTrue(json1[0].isNull)
25+
XCTAssertTrue(json2["key"].isNull)
26+
}
27+
28+
func testTrue() {
29+
let json : JSON = true
30+
let json1 : JSON = [true, true]
31+
let json2 : JSON = ["key" : true]
32+
XCTAssertTrue(json.bool!)
33+
XCTAssertTrue(json1[0].bool!)
34+
XCTAssertTrue(json1[1].bool!)
35+
36+
XCTAssertTrue(json2["key"].bool!)
37+
}
38+
39+
func testFalse() {
40+
let json : JSON = false
41+
let json1 : JSON = [false, false]
42+
let json2 : JSON = ["key" : false]
43+
XCTAssertFalse(json.bool!)
44+
XCTAssertFalse(json1[0].bool!)
45+
XCTAssertFalse(json1[1].bool!)
46+
47+
XCTAssertFalse(json2["key"].bool!)
48+
}
49+
50+
func testNumber() {
51+
let json : JSON = 1
52+
let json1 : JSON = 1.0
53+
let json2 : JSON = 1.23e2
54+
let json3 : JSON = 66662882838882382838823828832823.0
55+
let json4 : JSON = 3.0e-2
56+
XCTAssertEqual(json.double!, 1.0)
57+
XCTAssertEqual(json.float!, 1.0)
58+
XCTAssertEqual(json.int!, 1)
59+
XCTAssertEqual(json1.double!, 1.0)
60+
XCTAssertEqual(json1.int!, 1)
61+
XCTAssertEqual(json2.float!, 1.23e2)
62+
XCTAssertEqual(json2.double!, 1.23e2)
63+
XCTAssertEqual(json3.double!, 66662882838882382838823828832823.0)
64+
XCTAssertEqual(json4.double!, 3.0e-2)
65+
}
66+
67+
func testString() {
68+
let json : JSON = ""
69+
let json1 : JSON = "hello"
70+
let json2 : JSON = "he\r \n llo"
71+
let json3 : JSON = "hello \t \"world\" "
72+
73+
XCTAssertEqual(json.string!, "")
74+
XCTAssertEqual(json1.string!, "hello")
75+
XCTAssertEqual(json2.string!, "he\r \n llo")
76+
XCTAssertEqual(json3.string!, "hello \t \"world\" ")
77+
}
78+
79+
func testSingleDimensionalArraysGetter() {
80+
let json : JSON = ["1","2", "a", "B", "D"]
81+
XCTAssertEqual(json[0].string!, "1")
82+
XCTAssertEqual(json[1].string!, "2")
83+
XCTAssertEqual(json[2].string!, "a")
84+
XCTAssertEqual(json[3].string!, "B")
85+
XCTAssertEqual(json[4].string!, "D")
86+
}
87+
88+
func testTwoDimensionalArraysGetter() {
89+
let json : JSON = ["1",[1,2,2.0], true]
90+
XCTAssertEqual(json[0].string!, "1")
91+
XCTAssertEqual(json[1][0].int!, 1)
92+
XCTAssertEqual(json[1][1].int!, 2)
93+
XCTAssertEqual(json[1][2].float!, 2.0)
94+
XCTAssertEqual(json[2].bool!, true)
95+
}
96+
97+
func testObjectGetter() {
98+
let json : JSON = ["key":false, "key2":true, "key3":[1, "hello", 3, "world", ["key4":nil, "key5":12.03, "key6":12E-2, "key7": -12e-2]]]
99+
XCTAssertEqual(json["key"].bool!, false)
100+
XCTAssertEqual(json["key2"].bool!, true)
101+
XCTAssertNotNil(json["key3"].array)
102+
XCTAssertNotNil(json["key3"][4].object)
103+
XCTAssertEqual(json["key3"][4]["key4"].isNull, true)
104+
XCTAssertEqual(json["key3"][4]["key5"].float!, 12.03)
105+
}
106+
}
107+
108+
109+
class ParserTests: XCTestCase {
110+
111+
var allTests : [(String, () throws -> ())] {
112+
return [
113+
("testParseNull", testParseNull),
114+
("testParseString", testParseString),
115+
("testParseTrue", testParseTrue),
116+
("testParseFalse", testParseFalse),
117+
("testParseNumber", testParseNumber),
118+
("testParseArray", testParseArray),
119+
("testParseObject", testParseObject)
120+
]
121+
}
122+
123+
func testParseNull() {
124+
let (json, error) = JSON.parse("null")
125+
XCTAssertTrue(json!.isNull)
126+
XCTAssertTrue(error == nil)
127+
let (json1, error1) = JSON.parse("nu")
128+
XCTAssertTrue(json1 == nil)
129+
XCTAssertNotNil(error1)
130+
let (json2, error2) = JSON.parse("nil")
131+
XCTAssertTrue(json2 == nil)
132+
XCTAssertNotNil(error2)
133+
}
134+
135+
func testParseString() {
136+
let (json, _) = JSON.parse("\"hello\"")
137+
let (json1, _) = JSON.parse("\"\\u0041pple\"")
138+
let (json2, _) = JSON.parse("\"\\\\ line1 \\n tab \\t \\r \\/\"")
139+
XCTAssertEqual(json!.string!, "hello")
140+
XCTAssertEqual(json1!.string!, "Apple")
141+
XCTAssertEqual(json2!.string!, "\\ line1 \n tab \t \r /")
142+
143+
let (json3, error3) = JSON.parse("hello\"")
144+
XCTAssertTrue(json3 == nil)
145+
XCTAssertNotNil(error3)
146+
147+
let (json4, error4) = JSON.parse("\"hello")
148+
XCTAssertTrue(json4 == nil)
149+
XCTAssertNotNil(error4)
150+
}
151+
152+
func testParseTrue() {
153+
let (json, _) = JSON.parse("true")
154+
155+
XCTAssertEqual(json!.bool!, true)
156+
157+
let (json1, error1) = JSON.parse("tru")
158+
XCTAssertTrue(json1 == nil)
159+
XCTAssertNotNil(error1)
160+
}
161+
162+
func testParseFalse() {
163+
let (json, _) = JSON.parse("false")
164+
165+
XCTAssertEqual(json!.bool!, false)
166+
167+
let (json1, error1) = JSON.parse("fa")
168+
XCTAssertTrue(json1 == nil)
169+
XCTAssertNotNil(error1)
170+
}
171+
172+
func testParseNumber() {
173+
let (json, _) = JSON.parse("-120003e-1")
174+
XCTAssertEqual(json!.double!, -120003e-1)
175+
176+
let (json1, _) = JSON.parse("2.3E12")
177+
XCTAssertEqual(json1!.double!, 2.3E12)
178+
179+
let (json2, _) = JSON.parse("7.450580596923828e-9")
180+
XCTAssertEqual(json2!.double!, 7.450580596923828e-9)
181+
}
182+
183+
func testParseArray() {
184+
let (json, _) = JSON.parse("[]")
185+
XCTAssertNotNil(json!.array)
186+
XCTAssertEqual(json!.count, 0)
187+
let (json1, _) = JSON.parse("[1,2,3")
188+
XCTAssertTrue(json1 == nil)
189+
190+
let (json2, _) = JSON.parse("]")
191+
XCTAssertTrue(json2 == nil)
192+
193+
let (json3, _) = JSON.parse("[1,2,hello]")
194+
XCTAssertTrue(json3 == nil)
195+
196+
let (json4, _) = JSON.parse("[\"hello]\", 12, false, true, null]")
197+
XCTAssertEqual(json4!.count, 5)
198+
199+
let (json5,_) = JSON.parse("[,]")
200+
XCTAssertTrue(json5 == nil)
201+
}
202+
203+
func testParseObject() {
204+
let (json, _) = JSON.parse("{}")
205+
XCTAssertNotNil(json!.object)
206+
XCTAssertEqual(json!.count, 0)
207+
let (json1, _) = JSON.parse("{\"key\":12}")
208+
XCTAssertTrue(json1 != nil)
209+
210+
let (json2, _) = JSON.parse("{\"key\", 123")
211+
XCTAssertTrue(json2 == nil)
212+
213+
let (json3, _) = JSON.parse("{\"key\":\"hello\"}")
214+
XCTAssertTrue(json3!["key"].string! == "hello")
215+
}
216+
}
217+
218+
class DumpTests: XCTestCase {
219+
var allTests : [(String, () throws -> ())] {
220+
return [
221+
("testDumpDataValue", testDumpDataValue),
222+
("testDumpArray", testDumpArray),
223+
("testDumpObject", testDumpObject)
224+
]
225+
}
226+
227+
func testDumpDataValue() {
228+
let json : JSON = nil
229+
XCTAssertEqual (json.dump(), "null")
230+
231+
let json1 : JSON = "1.02"
232+
XCTAssertEqual(json1.dump(), "\"1.02\"")
233+
234+
let json2 : JSON = true
235+
XCTAssertEqual(json2.dump(), "true")
236+
237+
let json3 : JSON = false
238+
XCTAssertEqual(json3.dump(), "false")
239+
240+
let json4: JSON = 1.23
241+
XCTAssertEqual(json4.dump(), "1.23")
242+
243+
let json5: JSON = "hello\n world. \r \\ yes /hello"
244+
XCTAssertEqual(json5.dump(), "\"hello\\n world. \\r \\\\ yes \\/hello\"")
245+
}
246+
247+
func testDumpArray() {
248+
let json: JSON = ["v",0.3, true, false, nil, [], ["key": false]]
249+
XCTAssertEqual(json.dump(), "[\"v\",0.3,true,false,null,[],{\"key\":false}]")
250+
251+
let s = "[\"hello]\",12.0,false,true,null]"
252+
let (json1, _) = JSON.parse(s)
253+
XCTAssertEqual(json1!.dump(), s)
254+
}
255+
256+
func testDumpObject() {
257+
let json: JSON = ["key2":[false,true,2.0,[],"hello"]]
258+
XCTAssertEqual(json.dump(), "{\"key2\":[false,true,2.0,[],\"hello\"]}")
259+
260+
let (json1, _) = JSON.parse("{\"key\":\"hello\"}")
261+
XCTAssertEqual(json1!.dump(), "{\"key\":\"hello\"}")
262+
}
263+
}
264+
265+
XCTMain([ValueTests(), ParserTests(), DumpTests()])

run_test.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#!/bin/bash
2+
swift build -k
3+
swift build
4+
5+
swiftc Tests/test.swift -o .build/debug/test -I .build/debug/ -L .build/debug/ -Xlinker .build/debug/TidyJSON.a
6+
.build/debug/test

0 commit comments

Comments
 (0)