add variable export function
This commit is contained in:
parent
7ca42f18da
commit
0931fbdcf0
5 changed files with 102 additions and 6 deletions
67
src/test_lib_vars.rs
Normal file
67
src/test_lib_vars.rs
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
mod str_lib_tests {
|
||||
use relish::stdlib::{get_stdlib};
|
||||
use relish::ast::{lex, eval, ast_to_string, VTable, FTable, Ctr};
|
||||
use std::rc::Rc;
|
||||
use std::cell::RefCell;
|
||||
|
||||
#[test]
|
||||
fn test_variable_export_and_lookup() {
|
||||
let doc1 = "(export test 1)";
|
||||
let doc2 = "(echo test)";
|
||||
let result = "1";
|
||||
let vt = Rc::new(RefCell::new(VTable::new()));
|
||||
let ft: Rc<RefCell<FTable>>;
|
||||
match get_stdlib() {
|
||||
Ok(f) => ft = f,
|
||||
Err(s) => {
|
||||
ft = Rc::new(RefCell::new(FTable::new()));
|
||||
println!("Couldnt get stdlib: {}!", s);
|
||||
assert!(false);
|
||||
}
|
||||
}
|
||||
|
||||
match lex(doc1.to_string()) {
|
||||
Err(s) => {
|
||||
println!("Couldnt lex {}: {}", doc1, s);
|
||||
assert!(false);
|
||||
},
|
||||
|
||||
Ok(tree) => {
|
||||
match eval(tree, vt.clone(), ft.clone(), false) {
|
||||
Err(s) => {
|
||||
println!("Couldnt eval {}: {}", doc2, s);
|
||||
assert!(false);
|
||||
},
|
||||
|
||||
Ok(ctr) => {
|
||||
Ctr::None => assert!(true),
|
||||
_ => assert!(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
match lex(doc2.to_string()) {
|
||||
Err(s) => {
|
||||
println!("Couldnt lex {}: {}", doc2, s);
|
||||
assert!(false);
|
||||
},
|
||||
|
||||
Ok(tree) => {
|
||||
match eval(tree, vt.clone(), ft.clone(), false) {
|
||||
Err(s) => {
|
||||
println!("Couldnt eval {}: {}", doc2, s);
|
||||
assert!(false);
|
||||
},
|
||||
|
||||
Ok(ctr) => {
|
||||
match ctr {
|
||||
Ctr::String(s) => assert_eq!(s, result),
|
||||
_ => assert!(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue