miden-debug 0.17.0

An interactive debugger for Miden VM programs
Documentation
use miden_assembly_syntax::ast::types::{CallConv, FunctionType, Type};
use miden_core::Felt;

use super::*;

#[test]
fn typed_arguments_use_the_entrypoint_abi() {
    let config = DebuggerConfig {
        args: vec!["4294967303".into(), "true".into()],
        ..Default::default()
    };
    let procedure = TypedProcedure::new(
        "entrypoint",
        FunctionType::new(CallConv::ComponentModel, [Type::U64, Type::I1], []),
    )
    .unwrap();

    let inputs = execution_inputs(&config, Some(&procedure)).unwrap();

    assert_eq!(
        &inputs.inputs.as_ref()[..3],
        [Felt::from_u32(7), Felt::from_u32(1), Felt::from_u32(1)]
    );
}

#[test]
fn untyped_arguments_keep_sequential_push_order() {
    let config = DebuggerConfig {
        args: vec!["3".into(), "4".into()],
        ..Default::default()
    };

    let inputs = execution_inputs(&config, None).unwrap();

    assert_eq!(&inputs.inputs.as_ref()[..2], [Felt::from_u32(4), Felt::from_u32(3)]);
}

pub(crate) fn test_package_input() -> crate::InputFile {
    use miden_assembly::{Assembler, DefaultSourceManager};
    use miden_core::serde::Serializable;

    let package = Assembler::new(Arc::new(DefaultSourceManager::default()))
        .assemble_program("test", "begin push.3 push.4 add add end")
        .expect("test package should assemble");
    crate::InputFile::new("stdin://", Some(package.to_bytes().into_boxed_slice()))
}