diff options
| author | Arnaud Bailly <arnaud.bailly@iohk.io> | 2024-10-12 10:07:07 +0200 |
|---|---|---|
| committer | Arnaud Bailly <arnaud.bailly@iohk.io> | 2024-10-12 10:07:07 +0200 |
| commit | 0ab73e47af2bba3fb2ff6a4bf08ada4a3309bf3e (patch) | |
| tree | 05e2b9ebd60e5c8175f086e1de73657032d9c2fc /java/TermTest.java | |
| parent | 3363ab2da764825558c859f4419ff99528ed2274 (diff) | |
| download | lambda-nantes-0ab73e47af2bba3fb2ff6a4bf08ada4a3309bf3e.tar.gz | |
Add java evaluator
Diffstat (limited to 'java/TermTest.java')
| -rw-r--r-- | java/TermTest.java | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/java/TermTest.java b/java/TermTest.java new file mode 100644 index 0000000..f11ca77 --- /dev/null +++ b/java/TermTest.java @@ -0,0 +1,38 @@ +package org.lambdanantes.lcgoji.ast; + +import org.junit.Test; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.not; +import static org.junit.Assert.assertThat; +import static org.lambdanantes.lcgoji.ast.Abs.λ; +import static org.lambdanantes.lcgoji.ast.App.apply; +import static org.lambdanantes.lcgoji.ast.Var.var; + +public class TermTest { + + @Test + public void les_equals_des_termes_sont_corrects() { + // x == x + assertThat(var("x"), is(var("x"))); + // x != y + assertThat(var("x"), is(not(var("y")))); + // λx.x == λx.x + assertThat(λ("x", var("x")), is(λ("x", var("x")))); + // λx.x != λy.x + assertThat(λ("x", var("x")), is(not(λ("y", var("x"))))); + // x y == x y + assertThat(apply(var("x"), var("y")), is(apply(var("x"), var("y")))); + // x x != x y + assertThat(apply(var("x"), var("x")), is(not(apply(var("x"), var("y"))))); + } + + @Test + public void les_toString_des_termes_utilisent_la_notation_consacree() { + assertThat(var("x").toString(), is("x")); + assertThat(λ("x", var("x")).toString(), is("λx.x")); + assertThat(apply(λ("x", var("x")), var("x")).toString(), is("(λx.x) x")); + assertThat(apply(λ("x", λ("x", var("x"))), var("y")).toString(), is("(λx.λx.x) y")); + } + +}
\ No newline at end of file |
