diff options
Diffstat (limited to 'rust/src/web.rs')
| -rw-r--r-- | rust/src/web.rs | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/rust/src/web.rs b/rust/src/web.rs index 62dea22..af27eda 100644 --- a/rust/src/web.rs +++ b/rust/src/web.rs @@ -387,20 +387,51 @@ mod app_tests { } #[test] - async fn client_generates_variables_at_level_2() { + async fn client_generates_ascii_variables_at_level_2() { let mut client = client(); client.grade = 2; let (input, _) = client.generate_expr(); let parsed = parse(&input); - match parsed[..] { + match &parsed[..] { + [Value::Sym(name)] => { + println!("{}", name); + assert!(name.chars().all(|c| c.is_ascii_alphanumeric())); + } + _ => panic!("Expected symbol, got {:?}", parsed), + } + } + + #[test] + async fn client_generates_unicode_variables_at_level_3() { + let mut client = client(); + client.grade = 3; + + let (input, _) = client.generate_expr(); + + let parsed = parse(&input); + match &parsed[..] { [Value::Sym(_)] => (), _ => panic!("Expected symbol, got {:?}", parsed), } } #[test] + async fn client_generates_binary_application_at_level_4() { + let mut client = client(); + client.grade = 4; + + let (input, _) = client.generate_expr(); + + let parsed = parse(&input); + match &parsed[..] { + [Value::App(_, _)] => (), + _ => panic!("Expected symbol, got {:?}", parsed), + } + } + + #[test] async fn client_increases_grade_on_successful_test() { let mut client = client(); let expected = "1".to_string(); |
