package org.zwobble.hobgoblin.compiler; import org.junit.jupiter.api.Test; import org.zwobble.hobgoblin.compiler.types.NamespaceName; import java.nio.file.Path; import static org.zwobble.precisely.AssertThat.assertThat; import static org.zwobble.precisely.Matchers.equalTo; public class HobgoblinCompilerTests { @Test public void sourceFileInSourceDirectoryUsesFilenameAsNamespaceName() { var sourceDirectory = Path.of("a/b/src"); var sourceFilePath = Path.of("a/b/src/blah.hob"); var namespaceName = HobgoblinCompiler.sourceFileNamespaceName(sourceDirectory, sourceFilePath); assertThat(namespaceName, equalTo(NamespaceName.of("blah"))); } @Test public void sourceFileInSourceSubdirectoriesUsesSubdirectoriesAndFilenameAsNamespaceName() { var sourceDirectory = Path.of("a/b/src"); var sourceFilePath = Path.of("a/b/src/one/two/blah.hob"); var namespaceName = HobgoblinCompiler.sourceFileNamespaceName(sourceDirectory, sourceFilePath); assertThat(namespaceName, equalTo(NamespaceName.of("one", "two", "blah"))); } }