1 import Quick
2 import Nimble
3 
4 @testable import ExpoModulesCore
5 
6 class JavaScriptRuntimeSpec: QuickSpec {
7   override func spec() {
8     let runtime = JavaScriptRuntime()
9 
10     it("has global object accessible") {
11       expect(runtime.global) !== nil
12     }
13 
14     describe("evaluateScript") {
15       it("returns primitive types") {
16         expect(runtime.evaluateScript("null")).to(beNil())
17         expect(runtime.evaluateScript("undefined")).to(beNil())
18         expect(runtime.evaluateScript("true") as? Bool) == true
19         expect(runtime.evaluateScript("false") as? Bool) == false
20         expect(runtime.evaluateScript("123") as? Int) == 123
21         expect(runtime.evaluateScript("1.23") as? Double) == 1.23
22         expect(runtime.evaluateScript("'foobar'") as? String) == "foobar"
23       }
24 
25       it("returns arrays") {
26         expect(runtime.evaluateScript("['foo', 'bar']") as? [String]) == ["foo", "bar"]
27       }
28 
29       it("returns dicts") {
30         expect(runtime.evaluateScript("{ 'foo': 123 }") as? [String: Int]) == ["foo": 123]
31         expect(runtime.evaluateScript("{ 'foo': 'bar' }") as? [String: String]) == ["foo": "bar"]
32       }
33     }
34   }
35 }
36