From d6c6abb4e28f851969a40ff207648308be031090 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 17 Sep 2023 17:23:02 +0100 Subject: Add proper description for tuple types --- .../org/shedlang/compiler/types/TupleType.java | 7 +++++-- .../shedlang/compiler/types/TupleTypeTests.java | 23 ++++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 src/test/java/org/shedlang/compiler/types/TupleTypeTests.java (limited to 'src') diff --git a/src/main/java/org/shedlang/compiler/types/TupleType.java b/src/main/java/org/shedlang/compiler/types/TupleType.java index a2eeb0b0..2d97b469 100644 --- a/src/main/java/org/shedlang/compiler/types/TupleType.java +++ b/src/main/java/org/shedlang/compiler/types/TupleType.java @@ -1,6 +1,7 @@ package org.shedlang.compiler.types; import java.util.List; +import java.util.stream.Collectors; /** * A tuple type, representing tuples with elements of the given types. @@ -8,8 +9,10 @@ import java.util.List; public record TupleType(List elements) implements Type { @Override public String describe() { - // TODO: finish this - return "Tuple"; + var elementsString = elements.stream() + .map(element -> element.describe()) + .collect(Collectors.joining(", ")); + return "#(" + elementsString + ")"; } @Override diff --git a/src/test/java/org/shedlang/compiler/types/TupleTypeTests.java b/src/test/java/org/shedlang/compiler/types/TupleTypeTests.java new file mode 100644 index 00000000..31137214 --- /dev/null +++ b/src/test/java/org/shedlang/compiler/types/TupleTypeTests.java @@ -0,0 +1,23 @@ +package org.shedlang.compiler.types; + +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.zwobble.precisely.AssertThat.assertThat; +import static org.zwobble.precisely.Matchers.equalTo; + +public class TupleTypeTests { + @Test + public void descriptionOfTupleTypeIncludesDescriptionOfElements() { + var tupleType = new TupleType(List.of( + Types.STRING, + Types.BOOL, + Types.INT + )); + + var result = tupleType.describe(); + + assertThat(result, equalTo("#(String, Bool, Int)")); + } +} -- cgit v1.2.3