80 lines
2.1 KiB
Rust
80 lines
2.1 KiB
Rust
mod file_lib_tests {
|
|
use relish::ast::{eval, lex, SymTable};
|
|
use relish::stdlib::{dynamic_stdlib, static_stdlib};
|
|
|
|
#[test]
|
|
fn test_fexists() {
|
|
let document = "(exists? '/tmp')";
|
|
let result = "true";
|
|
|
|
let mut syms = SymTable::new();
|
|
static_stdlib(&mut syms);
|
|
dynamic_stdlib(&mut syms, None);
|
|
assert_eq!(
|
|
*eval(&lex(&document.to_string()).unwrap(), &mut syms)
|
|
.unwrap()
|
|
.to_string(),
|
|
result.to_string(),
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn test_fexists_doesnt() {
|
|
let document = "(exists? 'cargo.timtam')";
|
|
let result = "false";
|
|
|
|
let mut syms = SymTable::new();
|
|
static_stdlib(&mut syms);
|
|
dynamic_stdlib(&mut syms, None);
|
|
assert_eq!(
|
|
*eval(&lex(&document.to_string()).unwrap(), &mut syms)
|
|
.unwrap()
|
|
.to_string(),
|
|
result.to_string(),
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn test_write_file() {
|
|
let document = "
|
|
(let ((s 'test')
|
|
(t '/tmp/relish-lib-test-file-1'))
|
|
(write-file t s)
|
|
(echo (read-file t))
|
|
(eq? (read-file t) s))";
|
|
let result = "true";
|
|
|
|
let mut syms = SymTable::new();
|
|
static_stdlib(&mut syms);
|
|
dynamic_stdlib(&mut syms, None);
|
|
assert_eq!(
|
|
*eval(&lex(&document.to_string()).unwrap(), &mut syms)
|
|
.unwrap()
|
|
.to_string(),
|
|
result.to_string(),
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn test_append_file() {
|
|
let document = "
|
|
(let ((s 'test')
|
|
(t '/tmp/relish-lib-test-file-2'))
|
|
(write-file t s)
|
|
(append-file t s)
|
|
(eq? (read-file t)
|
|
(concat s s)))";
|
|
let result = "true";
|
|
|
|
let mut syms = SymTable::new();
|
|
static_stdlib(&mut syms);
|
|
dynamic_stdlib(&mut syms, None);
|
|
assert_eq!(
|
|
*eval(&lex(&document.to_string()).unwrap(), &mut syms)
|
|
.unwrap()
|
|
.to_string(),
|
|
result.to_string(),
|
|
);
|
|
}
|
|
|
|
}
|