Skip to content

Commit 654bb9b

Browse files
afdwalexcrichton
authored andcommitted
Port tests that use only basic features
1 parent 25a1bcb commit 654bb9b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+1865
-2393
lines changed

tests/all/closures.rs

Lines changed: 0 additions & 573 deletions
This file was deleted.

tests/all/duplicates.rs

Lines changed: 0 additions & 78 deletions
This file was deleted.

tests/all/enums.rs

Lines changed: 0 additions & 103 deletions
This file was deleted.

tests/all/js_objects.rs

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
use super::project;
2+
3+
#[test]
4+
fn serde() {
5+
project()
6+
.serde(true)
7+
.depend("serde = '1.0'")
8+
.depend("serde_derive = '1.0'")
9+
.file(
10+
"src/lib.rs",
11+
r#"
12+
#![feature(use_extern_macros)]
13+
14+
extern crate wasm_bindgen;
15+
#[macro_use]
16+
extern crate serde_derive;
17+
18+
use wasm_bindgen::prelude::*;
19+
20+
#[derive(Deserialize, Serialize)]
21+
pub struct Foo {
22+
a: u32,
23+
b: String,
24+
c: Option<Bar>,
25+
d: Bar,
26+
}
27+
28+
#[derive(Deserialize, Serialize)]
29+
pub struct Bar {
30+
a: u32,
31+
}
32+
33+
#[wasm_bindgen(module = "./test")]
34+
extern {
35+
fn verify(a: JsValue) -> JsValue;
36+
}
37+
38+
#[wasm_bindgen]
39+
pub fn run() {
40+
let js = JsValue::from_serde("foo").unwrap();
41+
assert_eq!(js.as_string(), Some("foo".to_string()));
42+
43+
let ret = verify(JsValue::from_serde(&Foo {
44+
a: 0,
45+
b: "foo".to_string(),
46+
c: None,
47+
d: Bar { a: 1 },
48+
}).unwrap());
49+
50+
let foo = ret.into_serde::<Foo>().unwrap();
51+
assert_eq!(foo.a, 2);
52+
assert_eq!(foo.b, "bar");
53+
assert!(foo.c.is_some());
54+
assert_eq!(foo.c.as_ref().unwrap().a, 3);
55+
assert_eq!(foo.d.a, 4);
56+
}
57+
58+
#[wasm_bindgen]
59+
pub fn parse(j: &JsValue) {
60+
let s = j.into_serde::<String>().unwrap();
61+
assert_eq!(s, "bar");
62+
}
63+
"#,
64+
)
65+
.file(
66+
"test.js",
67+
r#"
68+
import { run, parse } from "./out";
69+
import * as assert from "assert";
70+
71+
export function verify(a) {
72+
assert.deepStrictEqual(a, {
73+
a: 0,
74+
b: 'foo',
75+
c: null,
76+
d: { a: 1 }
77+
});
78+
79+
return {
80+
a: 2,
81+
b: 'bar',
82+
c: { a: 3 },
83+
d: { a: 4 },
84+
}
85+
}
86+
87+
export function test() {
88+
run();
89+
parse('bar');
90+
}
91+
"#,
92+
)
93+
.test();
94+
}

0 commit comments

Comments
 (0)