extern crate tphrase;
use tphrase::*;
#[test]
fn test_struct_syntax_new() {
let syntax: Syntax = Syntax::new();
let mut ph: Generator = Generator::new();
let result = ph.add(syntax);
assert!(result.is_err());
let err = result.unwrap_err();
assert_eq!(err.error_messages().len(), 1);
assert_eq!(
err.error_messages()[0],
"The nonterminal \"main\" doesn't exist."
);
assert_eq!(ph.generate(), "nil");
assert_eq!(ph.combination_number(), 0);
assert_eq!(ph.weight(), 0.0);
assert_eq!(ph.number_of_syntax(), 0);
}
#[test]
fn test_struct_syntax_default() {
let syntax: Syntax = Default::default();
let mut ph: Generator = Generator::new();
let result = ph.add(syntax);
assert!(result.is_err());
let err = result.unwrap_err();
assert_eq!(err.error_messages().len(), 1);
assert_eq!(
err.error_messages()[0],
"The nonterminal \"main\" doesn't exist."
);
assert_eq!(ph.generate(), "nil");
assert_eq!(ph.combination_number(), 0);
assert_eq!(ph.weight(), 0.0);
assert_eq!(ph.number_of_syntax(), 0);
}
#[test]
fn test_struct_syntax_from_str() {
let syntax: Result<Syntax, _> = std::str::FromStr::from_str(
r#"
main = Hello, World!
"#,
);
let mut ph: Generator = Generator::new();
let _ = ph.add(syntax.unwrap()).unwrap();
assert_eq!(ph.generate(), "Hello, World!");
}
#[test]
fn test_struct_syntax_str_parse() {
let syntax: Result<Syntax, _> = r#"
main = Hello, World!
"#
.parse();
let mut ph: Generator = Generator::new();
let _ = ph.add(syntax.unwrap()).unwrap();
assert_eq!(ph.generate(), "Hello, World!");
}
#[test]
fn test_struct_syntax_parse() {
let syntax: Result<Syntax, _> = parse(
&mut r#"
main = Hello, World!
"#
.chars(),
);
let mut ph: Generator = Generator::new();
let _ = ph.add(syntax.unwrap()).unwrap();
assert_eq!(ph.generate(), "Hello, World!");
}
#[test]
fn test_struct_syntax_parse_str() {
let syntax: Result<Syntax, _> = parse_str(
r#"
main = Hello, World!
"#,
);
let mut ph: Generator = Generator::new();
let _ = ph.add(syntax.unwrap()).unwrap();
assert_eq!(ph.generate(), "Hello, World!");
}
#[test]
fn test_struct_syntax_clone() {
let syntax: Syntax = r#"
main = {HELLO}, {= World!}
HELLO = Hello
"#
.parse()
.unwrap();
let syntax2 = syntax.clone();
let mut ph: Generator = Generator::new();
let _ = ph.add(syntax2).unwrap();
assert_eq!(ph.generate(), "Hello, World!");
}
#[test]
fn test_struct_syntax_add() {
let mut syntax1: Syntax = r#"
main = {HELLO}, {= World!}
"#
.parse()
.unwrap();
let syntax2: Syntax = r#"
HELLO = Hello
"#
.parse()
.unwrap();
syntax1.add(syntax2).unwrap();
let mut ph: Generator = Generator::new();
let _ = ph.add(syntax1).unwrap();
assert_eq!(ph.generate(), "Hello, World!");
}