forked from MightyPork/crsn
sexp: tests to submodule
This commit is contained in:
+46
-40
@@ -32,13 +32,6 @@ pub enum Sexp {
|
|||||||
List(Vec<Sexp>),
|
List(Vec<Sexp>),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[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);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// The representation of an s-expression parse error.
|
/// The representation of an s-expression parse error.
|
||||||
pub struct Error {
|
pub struct Error {
|
||||||
/// The error message.
|
/// The error message.
|
||||||
@@ -79,11 +72,6 @@ impl fmt::Debug for Error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn show_an_error() {
|
|
||||||
assert_eq!(format!("{:?}", parse("(aaaa").unwrap_err()), "1:4: unexpected eof");
|
|
||||||
}
|
|
||||||
|
|
||||||
fn get_line_and_column(s: &str, pos: usize) -> (usize, usize) {
|
fn get_line_and_column(s: &str, pos: usize) -> (usize, usize) {
|
||||||
let mut line: usize = 1;
|
let mut line: usize = 1;
|
||||||
let mut col: isize = -1;
|
let mut col: isize = -1;
|
||||||
@@ -98,20 +86,6 @@ fn get_line_and_column(s: &str, pos: usize) -> (usize, usize) {
|
|||||||
(line, cmp::max(col, 0) as usize)
|
(line, cmp::max(col, 0) as usize)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[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));
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cold]
|
#[cold]
|
||||||
fn err_impl(message: &'static str, s: &str, pos: &usize) -> Err {
|
fn err_impl(message: &'static str, s: &str, pos: &usize) -> Err {
|
||||||
@@ -375,30 +349,34 @@ impl fmt::Debug for Sexp {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[cfg(test)]
|
||||||
fn test_hello_world() {
|
mod test {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_hello_world() {
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
parse("(hello -42\n\t -4.0 \"world\") ; comment").unwrap(),
|
parse("(hello -42\n\t -4.0 \"world\") ; comment").unwrap(),
|
||||||
list(&[ atom_s("hello"), atom_i(-42), atom_f(-4.0), atom_s("world") ]));
|
list(&[ atom_s("hello"), atom_i(-42), atom_f(-4.0), atom_s("world") ]));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_escaping() {
|
fn test_escaping() {
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
parse("(\"\\\"\\q\" \"1234\" 1234)").unwrap(),
|
parse("(\"\\\"\\q\" \"1234\" 1234)").unwrap(),
|
||||||
list(&[ atom_s("\"\\q"), atom_s("1234"), atom_i(1234) ]));
|
list(&[ atom_s("\"\\q"), atom_s("1234"), atom_i(1234) ]));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_pp() {
|
fn test_pp() {
|
||||||
let s = "(hello world (what is (up) (4 6.4 you \"123\\\\ \\\"\")))";
|
let s = "(hello world (what is (up) (4 6.4 you \"123\\\\ \\\"\")))";
|
||||||
let sexp = parse(s).unwrap();
|
let sexp = parse(s).unwrap();
|
||||||
assert_eq!(s, sexp.to_string());
|
assert_eq!(s, sexp.to_string());
|
||||||
assert_eq!(s, format!("{:?}", sexp));
|
assert_eq!(s, format!("{:?}", sexp));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_tight_parens() {
|
fn test_tight_parens() {
|
||||||
let s = "(hello(world))";
|
let s = "(hello(world))";
|
||||||
let sexp = parse(s).unwrap();
|
let sexp = parse(s).unwrap();
|
||||||
assert_eq!(sexp, Sexp::List(vec![Sexp::Atom(Atom::S("hello".into())),
|
assert_eq!(sexp, Sexp::List(vec![Sexp::Atom(Atom::S("hello".into())),
|
||||||
@@ -406,12 +384,40 @@ fn test_tight_parens() {
|
|||||||
let s = "(this (has)tight(parens))";
|
let s = "(this (has)tight(parens))";
|
||||||
let s2 = "( this ( has ) tight ( parens ) )";
|
let s2 = "( this ( has ) tight ( parens ) )";
|
||||||
assert_eq!(parse(s).unwrap(), parse(s2).unwrap());
|
assert_eq!(parse(s).unwrap(), parse(s2).unwrap());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_space_in_atom() {
|
fn test_space_in_atom() {
|
||||||
let sexp = list(&[ atom_s("hello world")]);
|
let sexp = list(&[ atom_s("hello world")]);
|
||||||
let sexp_as_string = sexp.to_string();
|
let sexp_as_string = sexp.to_string();
|
||||||
assert_eq!("(\"hello world\")", sexp_as_string);
|
assert_eq!("(\"hello world\")", sexp_as_string);
|
||||||
assert_eq!(sexp, parse(&sexp_as_string).unwrap());
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user