Ok, maybe I should run Cargo fmt BEFORE

Signed-off-by: teo3300 <matteo.rogora@live.it>
This commit is contained in:
teo3300
2023-11-25 20:36:21 +09:00
parent 0cbfaaafec
commit 1ea3ecbb92
4 changed files with 49 additions and 24 deletions

View File

@ -30,8 +30,8 @@ macro_rules! env_init {
}
use crate::printer::prt;
use crate::types::{mal_comp, mal_assert};
use crate::types::MalType::{Bool, Fun, Int, List, Nil, Str};
use crate::types::{mal_assert, mal_comp};
pub fn ns_init() -> Env {
env_init!(None,

View File

@ -201,8 +201,8 @@ mod tests {
mod forms {
use crate::env::env_get;
use crate::eval::{def_bang_form, let_star_form, do_form};
use crate::eval::tests::_env_empty;
use crate::eval::{def_bang_form, do_form, let_star_form};
use crate::types::MalType;
#[test]
@ -239,25 +239,52 @@ mod tests {
#[test]
fn let_star() {
let env = _env_empty();
assert!(matches!(let_star_form(load!("(let*)"), env.clone()), Err(e) if !e.is_recoverable()));
assert!(matches!(let_star_form(load!("(let* 1)"), env.clone()), Err(e) if !e.is_recoverable()));
assert!(matches!(let_star_form(load!("(let* (a))"), env.clone()), Err(e) if !e.is_recoverable()));
assert!(matches!(let_star_form(load!("(let* ())"), env.clone()), Ok(MalType::Nil)));
assert!(matches!(let_star_form(load!("(let* (a 1))"), env.clone()), Ok(MalType::Nil)));
assert!(
matches!(let_star_form(load!("(let*)"), env.clone()), Err(e) if !e.is_recoverable())
);
assert!(
matches!(let_star_form(load!("(let* 1)"), env.clone()), Err(e) if !e.is_recoverable())
);
assert!(
matches!(let_star_form(load!("(let* (a))"), env.clone()), Err(e) if !e.is_recoverable())
);
assert!(matches!(
let_star_form(load!("(let* ())"), env.clone()),
Ok(MalType::Nil)
));
assert!(matches!(
let_star_form(load!("(let* (a 1))"), env.clone()),
Ok(MalType::Nil)
));
assert!(matches!(env_get(&env.clone(), "a"), Err(e) if !e.is_recoverable()));
assert!(matches!(let_star_form(load!("(let* (a 1 b 2) a b)"), env.clone()), Ok(MalType::Int(2))));
assert!(matches!(
let_star_form(load!("(let* (a 1 b 2) a b)"), env.clone()),
Ok(MalType::Int(2))
));
assert!(matches!(env_get(&env.clone(), "a"), Err(e) if !e.is_recoverable()));
assert!(matches!(env_get(&env.clone(), "b"), Err(e) if !e.is_recoverable()));
assert!(matches!(let_star_form(load!("(let* (a 1 b 2) (def! c 1) a b)"), env.clone()), Ok(MalType::Int(2))));
assert!(matches!(
let_star_form(load!("(let* (a 1 b 2) (def! c 1) a b)"), env.clone()),
Ok(MalType::Int(2))
));
assert!(matches!(env_get(&env.clone(), "c"), Err(e) if !e.is_recoverable()));
}
#[test]
fn _do() {
let env = _env_empty();
assert!(matches!(do_form(load!("(do)"), env.clone()), Ok(MalType::Nil)));
assert!(matches!(do_form(load!("(do true)"), env.clone()), Ok(MalType::Bool(true))));
assert!(matches!(do_form(load!("(do (def! a 1) 2)"), env.clone()), Ok(MalType::Int(2))));
assert!(matches!(
do_form(load!("(do)"), env.clone()),
Ok(MalType::Nil)
));
assert!(matches!(
do_form(load!("(do true)"), env.clone()),
Ok(MalType::Bool(true))
));
assert!(matches!(
do_form(load!("(do (def! a 1) 2)"), env.clone()),
Ok(MalType::Int(2))
));
assert!(matches!(env_get(&env.clone(), "a"), Ok(MalType::Int(1))));
}
}

View File

@ -1,19 +1,17 @@
#[cfg(test)]
mod functional {
mod functional {
macro_rules! test {
($file:expr) => {
{
use crate::core::ns_init;
use crate::load_file;
let env = ns_init();
load_file("core.mal", &env);
load_file(format!("tests/{}.mal", $file).as_str(), &env);
}
};
($file:expr) => {{
use crate::core::ns_init;
use crate::load_file;
let env = ns_init();
load_file("core.mal", &env);
load_file(format!("tests/{}.mal", $file).as_str(), &env);
}};
}
#[test]
fn fibonacci() {
test!("fibonacci");
}
}
}

View File

@ -83,7 +83,7 @@ pub fn mal_comp(args: &[MalType]) -> MalRet {
pub fn mal_assert(args: &[MalType]) -> MalRet {
args.iter().for_each(|i| match i {
M::Nil | M::Bool(false) => panic!(),
_ => ()
_ => (),
});
Ok(M::Nil)
}