mod file_lib_tests { use flesh::ast::{eval, lex, SymTable}; use flesh::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/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); 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/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); dynamic_stdlib(&mut syms, None); assert_eq!( *eval(&lex(&document.to_string()).unwrap(), &mut syms) .unwrap() .to_string(), result.to_string(), ); } }