Skip to content

Commit 09f3d95

Browse files
committed
test: add conversion tests for OwnedJsValue
1 parent 32497e2 commit 09f3d95

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

tests/convert.rs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
use std::collections::HashMap;
2+
3+
use quickjs_rusty::BigInt;
4+
use quickjs_rusty::{value::OwnedJsValue, Context};
5+
6+
#[test]
7+
fn test_try_from_owned_js_value() {
8+
let context = Context::builder().build().unwrap();
9+
let js_value: OwnedJsValue = context.eval("42", false).unwrap();
10+
let value: i32 = js_value.try_into().unwrap();
11+
assert_eq!(value, 42);
12+
13+
let js_value: OwnedJsValue = context.eval("null", false).unwrap();
14+
let value: Option<i32> = js_value.try_into().unwrap();
15+
assert_eq!(value, None);
16+
17+
let js_value: OwnedJsValue = context.eval("42", false).unwrap();
18+
let value: Option<i32> = js_value.try_into().unwrap();
19+
assert_eq!(value, Some(42));
20+
21+
let js_value: OwnedJsValue = context.eval("true", false).unwrap();
22+
let value: bool = js_value.try_into().unwrap();
23+
assert_eq!(value, true);
24+
25+
let js_value: OwnedJsValue = context.eval(r#""hello""#, false).unwrap();
26+
let value: String = js_value.try_into().unwrap();
27+
assert_eq!(value, "hello");
28+
29+
let js_value: OwnedJsValue = context.eval(r#"({"key": "value"})"#, false).unwrap();
30+
let value: HashMap<String, String> = js_value.try_into().unwrap();
31+
assert_eq!(value, HashMap::from([("key".into(), "value".into())]));
32+
33+
let js_value: OwnedJsValue = context.eval(r#"[1, 2, 3]"#, false).unwrap();
34+
let value: Vec<i32> = js_value.try_into().unwrap();
35+
assert_eq!(value, vec![1, 2, 3]);
36+
37+
let js_value: OwnedJsValue = context.eval(r#"12345678901234567890n"#, false).unwrap();
38+
let value: BigInt = js_value.try_into().unwrap();
39+
assert_eq!(value.to_string(), "12345678901234567890");
40+
}

0 commit comments

Comments
 (0)