bug 1366287 - Part 4: Add Rust tests for is_bigint. r=Ms2ger
☠☠ backed out by f0cb25b7bdee ☠ ☠
authorRobin Templeton <robin@igalia.com>
Fri, 11 May 2018 19:44:33 -0700
changeset 794518 a18120245eb7f5724a8083e5500ed8baa7df2b95
parent 794517 3bbd03d726e510923c0e93d5797f662059114b97
child 794519 68fae6784ebe20c33da7ba554d32fb0a24db8ed7
push id109697
push userbmo:sledru@mozilla.com
push dateSat, 12 May 2018 10:04:34 +0000
reviewersMs2ger
bugs1366287
milestone62.0a1
bug 1366287 - Part 4: Add Rust tests for is_bigint. r=Ms2ger
js/rust/Cargo.toml
js/rust/tests/bigint.rs
--- a/js/rust/Cargo.toml
+++ b/js/rust/Cargo.toml
@@ -7,16 +7,19 @@ license = "MPL-2.0"
 
 [build-dependencies]
 env_logger = {version = "0.5", default-features = false} # disable `regex` to reduce code size
 bindgen = {version = "0.33.1", default-features = false} # disable `logging` to reduce code size
 cmake = "0.1"
 glob = "0.2.11"
 
 [[test]]
+name = "bigint"
+required-features = ["bigint"]
+[[test]]
 name = "callback"
 [[test]]
 name = "enumerate"
 [[test]]
 name = "evaluate"
 [[test]]
 name = "panic"
 [[test]]
new file mode 100644
--- /dev/null
+++ b/js/rust/tests/bigint.rs
@@ -0,0 +1,48 @@
+#[macro_use]
+extern crate js;
+
+use js::jsapi::root::JS::CompartmentOptions;
+use js::jsapi::root::JS_NewGlobalObject;
+use js::jsapi::root::JS::OnNewGlobalHookOption;
+use js::jsval::UndefinedValue;
+use js::rust::{Runtime, SIMPLE_GLOBAL_CLASS};
+
+use std::ptr;
+
+#[test]
+fn is_bigint() {
+    let rt = Runtime::new(false).unwrap();
+    let cx = rt.cx();
+
+    unsafe {
+        rooted!(in(cx) let global =
+            JS_NewGlobalObject(cx, &SIMPLE_GLOBAL_CLASS, ptr::null_mut(),
+                               OnNewGlobalHookOption::FireOnNewGlobalHook,
+                               &CompartmentOptions::default())
+        );
+
+        rooted!(in(cx) let mut rval = UndefinedValue());
+        assert!(rt.evaluate_script(global.handle(), "BigInt(0)",
+                                   "test", 1, rval.handle_mut()).is_ok());
+        assert!(rval.is_bigint());
+    }
+}
+
+#[test]
+fn is_not_bigint() {
+    let rt = Runtime::new(false).unwrap();
+    let cx = rt.cx();
+
+    unsafe {
+        rooted!(in(cx) let global =
+            JS_NewGlobalObject(cx, &SIMPLE_GLOBAL_CLASS, ptr::null_mut(),
+                               OnNewGlobalHookOption::FireOnNewGlobalHook,
+                               &CompartmentOptions::default())
+        );
+
+        rooted!(in(cx) let mut rval = UndefinedValue());
+        assert!(rt.evaluate_script(global.handle(), "'not a BigInt'",
+                                   "test", 1, rval.handle_mut()).is_ok());
+        assert!(!rval.is_bigint());
+    }
+}