fuel-vm 0.66.3

FuelVM interpreter.
Documentation
use alloc::vec;

use super::*;
use fuel_vm::consts::*;

#[test]
fn test_log() -> SimpleResult<()> {
    let mut memory: MemoryInstance = vec![1u8; MEM_SIZE].try_into().unwrap();
    let context = Context::Script {
        block_height: Default::default(),
    };
    let mut receipts = Default::default();

    let fp = 0;
    let is = 0;
    let mut pc = 4;
    let input = LogInput {
        memory: &mut memory,
        context: &context,
        receipts: &mut receipts,
        fp: Reg::new(&fp),
        is: Reg::new(&is),
        pc: RegMut::new(&mut pc),
    };
    input.log(1, 2, 3, 4)?;

    assert_eq!(pc, 8);
    assert_eq!(receipts.len(), 1);

    let expected = Receipt::log(Default::default(), 1, 2, 3, 4, 4, 0);
    assert_eq!(receipts[0], expected);

    let input = LogInput {
        memory: &mut memory,
        context: &context,
        receipts: &mut receipts,
        fp: Reg::new(&fp),
        is: Reg::new(&is),
        pc: RegMut::new(&mut pc),
    };
    input.log_data(1, 2, 3, 4)?;

    assert_eq!(pc, 12);
    assert_eq!(receipts.len(), 2);

    let expected = Receipt::log_data_with_len(
        Default::default(),
        1,
        2,
        3,
        4,
        *receipts[1].digest().unwrap(),
        8,
        0,
        Some(vec![1u8; 4]),
    );
    assert_eq!(receipts[1], expected);

    Ok(())
}