summaryrefslogtreecommitdiff
path: root/java/TermTest.java
diff options
context:
space:
mode:
authorArnaud Bailly <arnaud.bailly@iohk.io>2024-10-12 10:07:07 +0200
committerArnaud Bailly <arnaud.bailly@iohk.io>2024-10-12 10:07:07 +0200
commit0ab73e47af2bba3fb2ff6a4bf08ada4a3309bf3e (patch)
tree05e2b9ebd60e5c8175f086e1de73657032d9c2fc /java/TermTest.java
parent3363ab2da764825558c859f4419ff99528ed2274 (diff)
downloadlambda-nantes-0ab73e47af2bba3fb2ff6a4bf08ada4a3309bf3e.tar.gz
Add java evaluator
Diffstat (limited to 'java/TermTest.java')
-rw-r--r--java/TermTest.java38
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