diff options
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/SourceFilesTests.java | 57 | ||||
| -rw-r--r-- | src/test/java/org/shedlang/compiler/TemporaryFiles.java | 14 |
2 files changed, 71 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/SourceFilesTests.java b/src/test/java/org/shedlang/compiler/SourceFilesTests.java new file mode 100644 index 00000000..d904d057 --- /dev/null +++ b/src/test/java/org/shedlang/compiler/SourceFilesTests.java @@ -0,0 +1,57 @@ +package org.shedlang.compiler; + +import org.junit.jupiter.api.Test; +import org.shedlang.compiler.types.NamespaceName; + +import java.io.IOException; +import java.nio.file.Files; + +import static org.shedlang.compiler.TemporaryFiles.createTemporaryTestDirectory; +import static org.zwobble.precisely.AssertThat.assertThat; +import static org.zwobble.precisely.Matchers.*; + +public class SourceFilesTests { + @Test + public void whenDirectoryIsEmptyThenNoSourceFilesAreFound() throws IOException { + var sourceDirectory = createTemporaryTestDirectory("SourceFilesTests"); + + var sourceFiles = SourceFiles.collectSourceFiles(sourceDirectory); + + assertThat(sourceFiles, containsExactly()); + } + + @Test + public void whenDirectoryContainsFileWithShedExtensionThenSourceFileIsFound() throws IOException { + var sourceDirectory = createTemporaryTestDirectory("SourceFilesTests"); + Files.createFile(sourceDirectory.resolve("One.shed")); + + var sourceFiles = SourceFiles.collectSourceFiles(sourceDirectory); + + assertThat(sourceFiles, containsExactly( + allOf( + has("path", x -> x.path(), equalTo(sourceDirectory.resolve("One.shed"))), + has("namespaceName", x -> x.namespaceName(), equalTo(NamespaceName.of("One"))) + ) + )); + } + + @Test + public void whenDirectoryContainsFileWithNonShedExtensionThenNoSourceFileIsFound() throws IOException { + var sourceDirectory = createTemporaryTestDirectory("SourceFilesTests"); + Files.createFile(sourceDirectory.resolve("One.she")); + + var sourceFiles = SourceFiles.collectSourceFiles(sourceDirectory); + + assertThat(sourceFiles, containsExactly()); + } + + @Test + public void whenFileHasMultipleThenExtensionsThenFileIsNotTreatedAsSourceFile() throws IOException { + var sourceDirectory = createTemporaryTestDirectory("SourceFilesTests"); + Files.createFile(sourceDirectory.resolve("One.Two.shed")); + + var sourceFiles = SourceFiles.collectSourceFiles(sourceDirectory); + + assertThat(sourceFiles, containsExactly()); + } +} diff --git a/src/test/java/org/shedlang/compiler/TemporaryFiles.java b/src/test/java/org/shedlang/compiler/TemporaryFiles.java new file mode 100644 index 00000000..bfe084c6 --- /dev/null +++ b/src/test/java/org/shedlang/compiler/TemporaryFiles.java @@ -0,0 +1,14 @@ +package org.shedlang.compiler; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +public class TemporaryFiles { + private TemporaryFiles() {} + + public static Path createTemporaryTestDirectory(String name) throws IOException { + Files.createDirectories(Path.of("tests-tmp")); + return Files.createTempDirectory(Path.of("tests-tmp"), name); + } +} |
