|
1 |
| -// Include your tests here |
2 |
| -// See https://github.com/xxuejie/ckb-native-build-sample/blob/main/tests/src/tests.rs for examples |
3 |
| - |
4 | 1 | use super::Loader;
|
| 2 | +use ckb_testtool::ckb_types::{ |
| 3 | + bytes::Bytes, |
| 4 | + core::TransactionBuilder, |
| 5 | + packed::*, |
| 6 | + prelude::*, |
| 7 | +}; |
| 8 | +use ckb_testtool::context::Context; |
5 | 9 |
|
| 10 | +// Include your tests here |
| 11 | +// See https://github.com/xxuejie/ckb-native-build-sample/blob/main/tests/src/tests.rs for more examples |
| 12 | + |
| 13 | +// generated unit test for contract {{project-name}} |
6 | 14 | #[test]
|
7 |
| -fn test_binary_exists() { |
8 |
| - Loader::default().load_binary("{{project-name}}"); |
| 15 | +fn test_{{crate_name}}() { |
| 16 | + // deploy contract |
| 17 | + let mut context = Context::default(); |
| 18 | + let contract_bin: Bytes = Loader::default().load_binary("{{project-name}}"); |
| 19 | + let out_point = context.deploy_cell(contract_bin); |
| 20 | + |
| 21 | + // prepare scripts |
| 22 | + let lock_script = context |
| 23 | + .build_script(&out_point, Bytes::from(vec![42])) |
| 24 | + .expect("script"); |
| 25 | + |
| 26 | + // prepare cells |
| 27 | + let input_out_point = context.create_cell( |
| 28 | + CellOutput::new_builder() |
| 29 | + .capacity(1000u64.pack()) |
| 30 | + .lock(lock_script.clone()) |
| 31 | + .build(), |
| 32 | + Bytes::new(), |
| 33 | + ); |
| 34 | + let input = CellInput::new_builder() |
| 35 | + .previous_output(input_out_point) |
| 36 | + .build(); |
| 37 | + let outputs = vec![ |
| 38 | + CellOutput::new_builder() |
| 39 | + .capacity(500u64.pack()) |
| 40 | + .lock(lock_script.clone()) |
| 41 | + .build(), |
| 42 | + CellOutput::new_builder() |
| 43 | + .capacity(500u64.pack()) |
| 44 | + .lock(lock_script) |
| 45 | + .build(), |
| 46 | + ]; |
| 47 | + |
| 48 | + let outputs_data = vec![Bytes::new(); 2]; |
| 49 | + |
| 50 | + // build transaction |
| 51 | + let tx = TransactionBuilder::default() |
| 52 | + .input(input) |
| 53 | + .outputs(outputs) |
| 54 | + .outputs_data(outputs_data.pack()) |
| 55 | + .build(); |
| 56 | + let tx = context.complete_tx(tx); |
| 57 | + |
| 58 | + // run |
| 59 | + let cycles = context |
| 60 | + .verify_tx(&tx, 10_000_000) |
| 61 | + .expect("pass verification"); |
| 62 | + println!("consume cycles: {}", cycles); |
9 | 63 | }
|
0 commit comments