mod file_lib_tests { use flesh::ast::{eval, lex, SymTable}; use flesh::stdlib::static_stdlib; #[test] fn test_fexists() { let document = "(exists? \"/tmp\")"; let result = "true"; let mut syms = SymTable::new(); static_stdlib(&mut syms); 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); 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/flesh-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); 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/flesh-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); assert_eq!( *eval(&lex(&document.to_string()).unwrap(), &mut syms) .unwrap() .to_string(), result.to_string(), ); } }