@@ -43,6 +43,7 @@ fn main() -> Result<()> {
4343 "printi32" => printi32 ( ) ?,
4444 "fibonacci" => fibonacci ( ) ?,
4545 "tinywasm" => tinywasm ( ) ?,
46+ "tinywasm_no_std" => tinywasm_no_std ( ) ?,
4647 "argon2id" => argon2id ( ) ?,
4748 "all" => {
4849 println ! ( "Running all examples" ) ;
@@ -54,6 +55,8 @@ fn main() -> Result<()> {
5455 fibonacci ( ) ?;
5556 println ! ( "\n tinywasm.wasm:" ) ;
5657 tinywasm ( ) ?;
58+ println ! ( "\n tinywasm_no_std.wasm:" ) ;
59+ tinywasm_no_std ( ) ?;
5760 println ! ( "argon2id.wasm:" ) ;
5861 argon2id ( ) ?;
5962 }
@@ -64,7 +67,22 @@ fn main() -> Result<()> {
6467}
6568
6669fn tinywasm ( ) -> Result < ( ) > {
67- let module = Module :: parse_file ( "./examples/rust/out/tinywasm.wasm" ) ?;
70+ let module = Module :: parse_file ( "./examples/rust/out/tinywasm.opt.wasm" ) ?;
71+ let mut store = Store :: default ( ) ;
72+
73+ let mut imports = Imports :: new ( ) ;
74+ imports. define ( "env" , "printi32" , Extern :: typed_func ( |_: FuncContext < ' _ > , _x : i32 | Ok ( ( ) ) ) ) ?;
75+ let instance = module. instantiate ( & mut store, Some ( black_box ( imports) ) ) ?;
76+
77+ let hello = instance. exported_func :: < ( ) , ( ) > ( & store, "hello" ) ?;
78+ hello. call ( & mut store, black_box ( ( ) ) ) ?;
79+ hello. call ( & mut store, black_box ( ( ) ) ) ?;
80+ hello. call ( & mut store, black_box ( ( ) ) ) ?;
81+ Ok ( ( ) )
82+ }
83+
84+ fn tinywasm_no_std ( ) -> Result < ( ) > {
85+ let module = Module :: parse_file ( "./examples/rust/out/tinywasm_no_std.opt.wasm" ) ?;
6886 let mut store = Store :: default ( ) ;
6987
7088 let mut imports = Imports :: new ( ) ;
@@ -79,7 +97,7 @@ fn tinywasm() -> Result<()> {
7997}
8098
8199fn hello ( ) -> Result < ( ) > {
82- let module = Module :: parse_file ( "./examples/rust/out/hello.wasm" ) ?;
100+ let module = Module :: parse_file ( "./examples/rust/out/hello.opt. wasm" ) ?;
83101 let mut store = Store :: default ( ) ;
84102
85103 let mut imports = Imports :: new ( ) ;
@@ -108,7 +126,7 @@ fn hello() -> Result<()> {
108126}
109127
110128fn printi32 ( ) -> Result < ( ) > {
111- let module = Module :: parse_file ( "./examples/rust/out/print.wasm" ) ?;
129+ let module = Module :: parse_file ( "./examples/rust/out/print.opt. wasm" ) ?;
112130 let mut store = Store :: default ( ) ;
113131
114132 let mut imports = Imports :: new ( ) ;
@@ -151,3 +169,38 @@ fn argon2id() -> Result<()> {
151169
152170 Ok ( ( ) )
153171}
172+
173+ #[ cfg( test) ]
174+ mod tests {
175+ use super :: * ;
176+
177+ #[ test]
178+ fn test_hello ( ) {
179+ hello ( ) . unwrap ( ) ;
180+ }
181+
182+ #[ test]
183+ fn test_printi32 ( ) {
184+ printi32 ( ) . unwrap ( ) ;
185+ }
186+
187+ #[ test]
188+ fn test_fibonacci ( ) {
189+ fibonacci ( ) . unwrap ( ) ;
190+ }
191+
192+ #[ test]
193+ fn test_tinywasm ( ) {
194+ tinywasm ( ) . unwrap ( ) ;
195+ }
196+
197+ #[ test]
198+ fn test_tinywasm_no_std ( ) {
199+ tinywasm_no_std ( ) . unwrap ( ) ;
200+ }
201+
202+ #[ test]
203+ fn test_argon2id ( ) {
204+ argon2id ( ) . unwrap ( ) ;
205+ }
206+ }
0 commit comments