summaryrefslogtreecommitdiff
path: root/rust/src/web.rs
diff options
context:
space:
mode:
authorArnaud Bailly <arnaud.bailly@iohk.io>2024-10-08 21:09:37 +0200
committerArnaud Bailly <arnaud.bailly@iohk.io>2024-10-08 21:09:37 +0200
commit5d24ab1e8765dbd5001aba21fe59d754224720f5 (patch)
treea97b8392b16ec1f0e76ddda1a862ffe20537d42e /rust/src/web.rs
parent1ef156ca34078a89d2955b52f5df18254bd9c095 (diff)
downloadlambda-nantes-5d24ab1e8765dbd5001aba21fe59d754224720f5.tar.gz
Generate simple applications
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();