realloc test added
This commit is contained in:
		
							parent
							
								
									e84f308264
								
							
						
					
					
						commit
						e234b7fdbf
					
				| @ -115,5 +115,40 @@ pub const SIGNATURES: &'static [UserFunctionDescriptor] = &[ | ||||
| 		"_emscripten_memcpy_big", | ||||
| 		&[I32; 3], | ||||
| 		Some(I32), | ||||
| 	) | ||||
| 	), | ||||
| 	Static( | ||||
| 		"___syscall140", | ||||
| 		&[I32; 2], | ||||
| 		Some(I32) | ||||
| 	), | ||||
| 	Static( | ||||
| 		"___syscall146", | ||||
| 		&[I32; 2], | ||||
| 		Some(I32) | ||||
| 	), | ||||
| 	Static( | ||||
| 		"___syscall54", | ||||
| 		&[I32; 2], | ||||
| 		Some(I32) | ||||
| 	), | ||||
| 	Static( | ||||
| 		"___syscall6", | ||||
| 		&[I32; 2], | ||||
| 		Some(I32) | ||||
| 	), | ||||
| 	Static( | ||||
| 		"_llvm_trap", | ||||
| 		&[I32; 0], | ||||
| 		None | ||||
| 	), | ||||
| 	Static( | ||||
| 		"abortOnCannotGrowMemory", | ||||
| 		&[I32; 0], | ||||
| 		Some(I32) | ||||
| 	), | ||||
| 	Static( | ||||
| 		"___setErrNo", | ||||
| 		&[I32; 1], | ||||
| 		None | ||||
| 	), | ||||
| ]; | ||||
|  | ||||
| @ -272,3 +272,27 @@ fn create() { | ||||
| 	)); | ||||
| 	assert_eq!(gas_left, U256::from(99_768)); | ||||
| } | ||||
| 
 | ||||
| // Realloc test
 | ||||
| #[test] | ||||
| fn realloc() { | ||||
|         let code = load_sample!("realloc.wasm"); | ||||
| 
 | ||||
|         let mut params = ActionParams::default(); | ||||
|         params.gas = U256::from(100_000); | ||||
|         params.code = Some(Arc::new(code)); | ||||
|         params.data = Some(vec![0u8]); | ||||
|         let mut ext = FakeExt::new(); | ||||
| 
 | ||||
|         let (gas_left, result) = { | ||||
|                 let mut interpreter = wasm_interpreter(); | ||||
|                 let result = interpreter.exec(params, &mut ext).expect("Interpreter to execute without any errors"); | ||||
|                 match result { | ||||
|                         GasLeft::Known(_) => { panic!("Realloc should return payload"); }, | ||||
|                         GasLeft::NeedsReturn { gas_left: gas, data: result, apply_state: _apply } => (gas, result.to_vec()), | ||||
|                 } | ||||
|         }; | ||||
| 		assert_eq!(gas_left, U256::from(98326)); | ||||
| 		assert_eq!(result, vec![0u8; 2]); | ||||
| 
 | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user