csx64 0.1.0

An Intel-style x64 assembler and executor.
Documentation
use super::*;
use super::expr::*;

#[test]
fn test_empty() {
    match asm_unwrap_link!([vec![]] => None) {
        Ok(_) => panic!(),
        Err(e) => match e {
            LinkError::NothingToLink => (),
            _ => panic!("{:?}", e),
        }
    }
    match asm_unwrap_link!([vec![]] => Some(("start", "main"))) {
        Ok(_) => panic!(),
        Err(e) => match e {
            LinkError::NothingToLink => (),
            _ => panic!("{:?}", e),
        }
    }
}
#[test]
fn test_cyclic_deps() {
    if let Err(e) = asm_unwrap_link!("global a\nextern b\na: equ b", "global b\nextern a\nb: equ 6") {
        panic!("{:?}", e);
    }
    match asm_unwrap_link!("global a\nextern b\na: equ b", "global b\nextern a\nb: equ a") {
        Ok(_) => panic!(),
        Err(e) => match e{
            LinkError::EvalFailure { src: _, line_num: 3, reason: EvalError::Illegal(IllegalReason::CyclicDependency) } => (),
            _ => panic!("{:?}", e),
        }
    }
    match asm_unwrap_link!("global a\nextern b\na: equ b", "global b\nextern a\nb: equ 1+a+1") {
        Ok(_) => panic!(),
        Err(e) => match e{
            LinkError::EvalFailure { src: _, line_num: 3, reason: EvalError::Illegal(IllegalReason::CyclicDependency) } => (),
            _ => panic!("{:?}", e),
        }
    }
    match asm_unwrap_link!("global a\nextern b\na: equ b+1", "global b\nextern a\nb: equ a") {
        Ok(_) => panic!(),
        Err(e) => match e{
            LinkError::EvalFailure { src: _, line_num: 3, reason: EvalError::Illegal(IllegalReason::CyclicDependency) } => (),
            _ => panic!("{:?}", e),
        }
    }
}