feat: 准备 1.3.0 稳定版本
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
package cn.infstar.essentialsC.admin;
|
||||
|
||||
import cn.infstar.essentialsC.util.AtomicYamlWriter;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.io.TempDir;
|
||||
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.UUID;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
class AdminModeStoreTest {
|
||||
|
||||
@TempDir
|
||||
Path temporaryDirectory;
|
||||
|
||||
@Test
|
||||
void migratesLegacyPlayersIntoIndependentFiles() throws Exception {
|
||||
UUID playerId = UUID.randomUUID();
|
||||
Path legacyFile = temporaryDirectory.resolve("admin-mode.yml");
|
||||
YamlConfiguration legacy = new YamlConfiguration();
|
||||
legacy.set("players." + playerId + ".active", true);
|
||||
legacy.set("players." + playerId + ".normal.level", 27);
|
||||
AtomicYamlWriter.save(legacy, legacyFile.toFile());
|
||||
|
||||
AdminModeStore store = new AdminModeStore(
|
||||
temporaryDirectory.resolve("admin-mode").toFile(), legacyFile.toFile(), Logger.getAnonymousLogger());
|
||||
|
||||
YamlConfiguration migrated = store.load(playerId);
|
||||
assertNotNull(migrated);
|
||||
assertTrue(migrated.getBoolean("active"));
|
||||
assertEquals(27, migrated.getInt("normal.level"));
|
||||
assertTrue(Files.exists(temporaryDirectory.resolve("admin-mode").resolve(playerId + ".yml")));
|
||||
assertFalse(Files.exists(legacyFile));
|
||||
try (var backups = Files.list(temporaryDirectory)) {
|
||||
assertTrue(backups.anyMatch(path -> path.getFileName().toString().startsWith("admin-mode.legacy-")));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package cn.infstar.essentialsC.compat.jei;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
class RecipeGroupingTest {
|
||||
|
||||
@Test
|
||||
void groupsValuesInOnePassAndPreservesOrder() {
|
||||
List<String> recipes = List.of("crafting:first", "smelting:second", "crafting:third");
|
||||
|
||||
Map<String, List<String>> grouped = RecipeGrouping.groupBy(
|
||||
recipes, value -> value.substring(0, value.indexOf(':')));
|
||||
|
||||
assertEquals(List.of("crafting", "smelting"), grouped.keySet().stream().toList());
|
||||
assertEquals(List.of("crafting:first", "crafting:third"), grouped.get("crafting"));
|
||||
assertEquals(List.of("smelting:second"), grouped.get("smelting"));
|
||||
}
|
||||
}
|
||||
@@ -58,4 +58,19 @@ class AtomicYamlWriterTest {
|
||||
|
||||
assertTrue(YamlConfiguration.loadConfiguration(target.toFile()).getBoolean("written"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void preservesParsedChineseComments() throws Exception {
|
||||
Path target = temporaryDirectory.resolve("commented.yml");
|
||||
YamlConfiguration configuration = new YamlConfiguration();
|
||||
configuration.options().parseComments(true);
|
||||
configuration.loadFromString("# 中文配置注释\nenabled: false\n");
|
||||
configuration.set("enabled", true);
|
||||
|
||||
AtomicYamlWriter.save(configuration, target.toFile());
|
||||
|
||||
String saved = Files.readString(target, StandardCharsets.UTF_8);
|
||||
assertTrue(saved.contains("# 中文配置注释"));
|
||||
assertTrue(saved.contains("enabled: true"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user