forked from JavaScriptKit/JavaScriptCore
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJSValueTests.swift
More file actions
118 lines (107 loc) · 3.38 KB
/
Copy pathJSValueTests.swift
File metadata and controls
118 lines (107 loc) · 3.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import Test
@testable import SJavaScriptCore
final class JSValueTests: TestCase {
func testIsUndefined() {
do {
let context = JSContext()
let result = try context.evaluate("undefined")
assertTrue(result.isUndefined)
assertFalse(result.isNull)
assertFalse(result.isBool)
assertFalse(result.isNumber)
assertFalse(result.isString)
assertEqual(try result.toString(), "undefined")
} catch {
fail(String(describing: error))
}
}
func testIsNull() {
do {
let context = JSContext()
let result = try context.evaluate("null")
assertFalse(result.isUndefined)
assertTrue(result.isNull)
assertFalse(result.isBool)
assertFalse(result.isNumber)
assertFalse(result.isString)
assertEqual(try result.toString(), "null")
} catch {
fail(String(describing: error))
}
}
func testIsBool() {
do {
let context = JSContext()
let result = try context.evaluate("true")
assertFalse(result.isUndefined)
assertFalse(result.isNull)
assertTrue(result.isBool)
assertFalse(result.isNumber)
assertFalse(result.isString)
assertEqual(try result.toString(), "true")
assertEqual(result.toBool(), true)
} catch {
fail(String(describing: error))
}
}
func testIsNumber() {
do {
let context = JSContext()
let result = try context.evaluate("3.14")
assertFalse(result.isUndefined)
assertFalse(result.isNull)
assertFalse(result.isBool)
assertTrue(result.isNumber)
assertFalse(result.isString)
assertEqual(try result.toString(), "3.14")
assertEqual(try result.toDouble(), 3.14)
} catch {
fail(String(describing: error))
}
}
func testIsString() {
do {
let context = JSContext()
let result = try context.evaluate("'success'")
assertFalse(result.isUndefined)
assertFalse(result.isNull)
assertFalse(result.isBool)
assertFalse(result.isNumber)
assertTrue(result.isString)
assertEqual(try result.toString(), "success")
} catch {
fail(String(describing: error))
}
}
func testToInt() {
do {
let context = JSContext()
let result = try context.evaluate("40 + 2")
assertEqual(try result.toInt(), 42)
} catch {
fail(String(describing: error))
}
}
func testToString() {
do {
let context = JSContext()
let result = try context.evaluate("40 + 2")
assertEqual(try result.toString(), "42")
} catch {
fail(String(describing: error))
}
}
func testProperty() {
do {
let context = JSContext()
let result = try context.evaluate("""
(function(){
return { property: 'test' }
})()
""")
assertEqual(try result["property"]?.toString(), "test")
} catch {
fail(String(describing: error))
}
}
}