parent
7272eecc48
commit
6dfe22152c
@ -0,0 +1,69 @@ |
|||||||
|
use super::*; |
||||||
|
|
||||||
|
#[test] |
||||||
|
fn test_hello_world() { |
||||||
|
assert_eq!( |
||||||
|
parse("(hello -42\n\t -4.0 \"world\") ; comment").unwrap(), |
||||||
|
list(&[atom_s("hello"), atom_i(-42), atom_f(-4.0), atom_s("world")])); |
||||||
|
} |
||||||
|
|
||||||
|
#[test] |
||||||
|
fn test_escaping() { |
||||||
|
assert_eq!( |
||||||
|
parse("(\"\\\"\\q\" \"1234\" 1234)").unwrap(), |
||||||
|
list(&[atom_s("\"\\q"), atom_s("1234"), atom_i(1234)])); |
||||||
|
} |
||||||
|
|
||||||
|
#[test] |
||||||
|
fn test_pp() { |
||||||
|
let s = "(hello world (what is (up) (4 6.4 you \"123\\\\ \\\"\")))"; |
||||||
|
let sexp = parse(s).unwrap(); |
||||||
|
assert_eq!(s, sexp.to_string()); |
||||||
|
assert_eq!(s, format!("{:?}", sexp)); |
||||||
|
} |
||||||
|
|
||||||
|
#[test] |
||||||
|
fn test_tight_parens() { |
||||||
|
let s = "(hello(world))"; |
||||||
|
let sexp = parse(s).unwrap(); |
||||||
|
assert_eq!(sexp, Sexp::List(vec![Sexp::Atom(Atom::S("hello".into())), |
||||||
|
Sexp::List(vec![Sexp::Atom(Atom::S("world".into()))])])); |
||||||
|
let s = "(this (has)tight(parens))"; |
||||||
|
let s2 = "( this ( has ) tight ( parens ) )"; |
||||||
|
assert_eq!(parse(s).unwrap(), parse(s2).unwrap()); |
||||||
|
} |
||||||
|
|
||||||
|
#[test] |
||||||
|
fn test_space_in_atom() { |
||||||
|
let sexp = list(&[atom_s("hello world")]); |
||||||
|
let sexp_as_string = sexp.to_string(); |
||||||
|
assert_eq!("(\"hello world\")", sexp_as_string); |
||||||
|
assert_eq!(sexp, parse(&sexp_as_string).unwrap()); |
||||||
|
} |
||||||
|
|
||||||
|
#[test] |
||||||
|
fn show_an_error() { |
||||||
|
assert_eq!(format!("{:?}", parse("(aaaa").unwrap_err()), "1:4: unexpected eof"); |
||||||
|
} |
||||||
|
|
||||||
|
#[test] |
||||||
|
fn line_and_col_test() { |
||||||
|
let s = "0123456789\n0123456789\n\n6"; |
||||||
|
assert_eq!(get_line_and_column(s, 4), (1, 4)); |
||||||
|
|
||||||
|
assert_eq!(get_line_and_column(s, 10), (2, 0)); |
||||||
|
assert_eq!(get_line_and_column(s, 11), (2, 0)); |
||||||
|
assert_eq!(get_line_and_column(s, 15), (2, 4)); |
||||||
|
|
||||||
|
assert_eq!(get_line_and_column(s, 21), (3, 0)); |
||||||
|
assert_eq!(get_line_and_column(s, 22), (4, 0)); |
||||||
|
assert_eq!(get_line_and_column(s, 23), (4, 0)); |
||||||
|
assert_eq!(get_line_and_column(s, 500), (4, 0)); |
||||||
|
} |
||||||
|
|
||||||
|
#[test] |
||||||
|
fn sexp_size() { |
||||||
|
// I just want to see when this changes, in the diff.
|
||||||
|
use std::mem; |
||||||
|
assert_eq!(mem::size_of::<Sexp>(), mem::size_of::<isize>() * 5); |
||||||
|
} |
Loading…
Reference in new issue