From 0ab73e47af2bba3fb2ff6a4bf08ada4a3309bf3e Mon Sep 17 00:00:00 2001 From: Arnaud Bailly Date: Sat, 12 Oct 2024 10:07:07 +0200 Subject: Add java evaluator --- java/TermTest.java | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 java/TermTest.java (limited to 'java/TermTest.java') 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 -- cgit v1.2.3