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