aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/shedlang/compiler/parser
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/org/shedlang/compiler/parser')
-rw-r--r--src/test/java/org/shedlang/compiler/parser/ParserSumTypeDefinitionTests.java50
1 files changed, 41 insertions, 9 deletions
diff --git a/src/test/java/org/shedlang/compiler/parser/ParserSumTypeDefinitionTests.java b/src/test/java/org/shedlang/compiler/parser/ParserSumTypeDefinitionTests.java
index 65a8ef6f..32392389 100644
--- a/src/test/java/org/shedlang/compiler/parser/ParserSumTypeDefinitionTests.java
+++ b/src/test/java/org/shedlang/compiler/parser/ParserSumTypeDefinitionTests.java
@@ -1,11 +1,13 @@
package org.shedlang.compiler.parser;
import org.junit.jupiter.api.Test;
+import org.shedlang.compiler.types.Visibility;
-import static org.shedlang.compiler.ast.untyped.UntypedNodeMatchers.*;
+import static org.shedlang.compiler.ast.untyped.UntypedNodeMatchers.isUntypedSumTypeDefinitionNode;
+import static org.shedlang.compiler.ast.untyped.UntypedNodeMatchers.isUntypedTypeLevelReferenceNode;
import static org.shedlang.compiler.parser.ParserTesting.parseString;
import static org.zwobble.precisely.AssertThat.assertThat;
-import static org.zwobble.precisely.Matchers.isSequence;
+import static org.zwobble.precisely.Matchers.*;
public class ParserSumTypeDefinitionTests {
@Test
@@ -16,9 +18,11 @@ public class ParserSumTypeDefinitionTests {
assertThat(
node,
- isUntypedSumTypeDefinitionNode("Option", isSequence(
- isUntypedTypeLevelReferenceNode("Some")
- ))
+ isUntypedSumTypeDefinitionNode()
+ .withName("Option")
+ .withVariants(isSequence(
+ isUntypedTypeLevelReferenceNode("Some")
+ ))
);
}
@@ -30,10 +34,38 @@ public class ParserSumTypeDefinitionTests {
assertThat(
node,
- isUntypedSumTypeDefinitionNode("Option", isSequence(
- isUntypedTypeLevelReferenceNode("Some"),
- isUntypedTypeLevelReferenceNode("None")
- ))
+ isUntypedSumTypeDefinitionNode()
+ .withName("Option")
+ .withVariants(isSequence(
+ isUntypedTypeLevelReferenceNode("Some"),
+ isUntypedTypeLevelReferenceNode("None")
+ ))
+ );
+ }
+
+ @Test
+ public void defaultVisibilityIsPrivate() {
+ var source = "sumtype Option = Some;";
+
+ var node = parseString(source, Parser::parseNamespaceStatement);
+
+ assertThat(
+ node,
+ isUntypedSumTypeDefinitionNode()
+ .withVisibility(Visibility.PRIVATE)
+ );
+ }
+
+ @Test
+ public void whenHasPubPrefixThenVisibilityIsPublic() {
+ var source = "pub sumtype Option = Some;";
+
+ var node = parseString(source, Parser::parseNamespaceStatement);
+
+ assertThat(
+ node,
+ isUntypedSumTypeDefinitionNode()
+ .withVisibility(Visibility.PUBLIC)
);
}
}