@@ -0,0 +1,1199 @@
+import static org.junit.jupiter.api.Assertions.assertEquals;%0Aimport static org.junit.jupiter.api.Assertions.assertFalse;%0Aimport static org.junit.jupiter.api.Assertions.assertNotNull;%0Aimport static org.junit.jupiter.api.Assertions.assertTrue;%0A%0Aimport org.junit.jupiter.api.Test;%0Aimport org.junit.jupiter.params.ParameterizedTest;%0Aimport org.junit.jupiter.params.provider.EnumSource;%0A%0Aclass PropertyTests %7B%0A%0A  private final Bach bach = new Bach();%0A%0A  @ParameterizedTest%0A  @EnumSource(Bach.Property.class)%0A  void assertProperty(Bach.Property property) %7B%0A    assertTrue(property.key.startsWith(%22bach.%22));%0A    assertFalse(property.defaultValue.isBlank());%0A  %7D%0A%0A  @Test%0A  void pathCacheTools() %7B%0A    assertNotNull(Bach.Property.PATH_CACHE_TOOLS);%0A    assertEquals(%22.bach/tools%22, bach.get(Bach.Property.PATH_CACHE_TOOLS));%0A  %7D%0A%0A  @Test%0A  void pathCacheModules() %7B%0A    assertNotNull(Bach.Property.PATH_CACHE_MODULES);%0A    assertEquals(%22.bach/modules%22, bach.get(Bach.Property.PATH_CACHE_MODULES));%0A  %7D%0A%0A  @Test%0A  void executableJarToolUrisEndsWithJar() %7B%0A    assertTrue(bach.get(Bach.Property.TOOL_FORMAT_URI).endsWith(%22.jar%22));%0A    assertTrue(bach.get(Bach.Property.TOOL_JUNIT_URI).endsWith(%22.jar%22));%0A  %7D%0A%7D%0A

Add PropertyTests