fuel-tx 0.66.4

FuelVM transaction.
Documentation
use fuel_tx::*;
use rand::{
    Rng,
    RngCore,
    SeedableRng,
    rngs::StdRng,
};

#[test]
fn coin() {
    let mut rng_base = StdRng::seed_from_u64(8586);
    let rng = &mut rng_base;

    Output::coin(rng.r#gen(), rng.next_u64(), rng.r#gen())
        .check(1, &[])
        .unwrap();
}

#[test]
fn contract() {
    let mut rng_base = StdRng::seed_from_u64(8586);
    let rng = &mut rng_base;

    Output::contract(1, rng.r#gen(), rng.r#gen())
        .check(
            2,
            &[
                Input::coin_signed(
                    rng.r#gen(),
                    rng.r#gen(),
                    rng.next_u64(),
                    rng.r#gen(),
                    rng.r#gen(),
                    rng.r#gen(),
                ),
                Input::contract(
                    rng.r#gen(),
                    rng.r#gen(),
                    rng.r#gen(),
                    rng.r#gen(),
                    rng.r#gen(),
                ),
            ],
        )
        .unwrap();

    let err = Output::contract(0, rng.r#gen(), rng.r#gen())
        .check(
            2,
            &[
                Input::coin_signed(
                    rng.r#gen(),
                    rng.r#gen(),
                    rng.next_u64(),
                    rng.r#gen(),
                    rng.r#gen(),
                    rng.r#gen(),
                ),
                Input::contract(
                    rng.r#gen(),
                    rng.r#gen(),
                    rng.r#gen(),
                    rng.r#gen(),
                    rng.r#gen(),
                ),
            ],
        )
        .err()
        .unwrap();

    assert_eq!(ValidityError::OutputContractInputIndex { index: 2 }, err);

    let err = Output::contract(2, rng.r#gen(), rng.r#gen())
        .check(
            2,
            &[
                Input::coin_signed(
                    rng.r#gen(),
                    rng.r#gen(),
                    rng.next_u64(),
                    rng.r#gen(),
                    rng.r#gen(),
                    rng.r#gen(),
                ),
                Input::contract(
                    rng.r#gen(),
                    rng.r#gen(),
                    rng.r#gen(),
                    rng.r#gen(),
                    rng.r#gen(),
                ),
            ],
        )
        .err()
        .unwrap();

    assert_eq!(ValidityError::OutputContractInputIndex { index: 2 }, err);
}

#[test]
fn change() {
    let mut rng_base = StdRng::seed_from_u64(8586);
    let rng = &mut rng_base;

    Output::change(rng.r#gen(), rng.next_u64(), rng.r#gen())
        .check(1, &[])
        .unwrap();
}

#[test]
fn variable() {
    let mut rng_base = StdRng::seed_from_u64(8586);
    let rng = &mut rng_base;

    Output::variable(rng.r#gen(), rng.next_u64(), rng.r#gen())
        .check(1, &[])
        .unwrap();
}

#[test]
fn contract_created() {
    let mut rng_base = StdRng::seed_from_u64(8586);
    let rng = &mut rng_base;

    Output::contract_created(rng.r#gen(), rng.r#gen())
        .check(1, &[])
        .unwrap();
}