summaryrefslogtreecommitdiff
path: root/rust/src/web.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rust/src/web.rs')
-rw-r--r--rust/src/web.rs35
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();