104 lines
3.4 KiB
Java
104 lines
3.4 KiB
Java
package test;
|
|
|
|
import server.data.ServerData;
|
|
import util.FileUtil;
|
|
|
|
import org.junit.jupiter.api.Test;
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Path;
|
|
import java.nio.file.Paths;
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
public class MainTest {
|
|
|
|
@Test
|
|
public void testLoadEmptyFile() throws IOException {
|
|
// 测试加载空文件的情况
|
|
Path dataPath = Paths.get(FileUtil.DATA_FILE, FileUtil.GROUPS_DIR, FileUtil.SERVER_DATA_FILENAME);
|
|
File folder = dataPath.getParent().toFile();
|
|
if (!folder.exists()) {
|
|
folder.mkdirs();
|
|
}
|
|
|
|
// 创建空文件
|
|
Files.write(dataPath, new byte[0]);
|
|
|
|
System.out.println("Created empty data file: " + dataPath.toAbsolutePath());
|
|
|
|
// 重置实例,强制重新加载
|
|
ServerData.resetInstance();
|
|
|
|
// 测试获取实例是否返回非空对象
|
|
ServerData data = ServerData.getInstance();
|
|
|
|
assertNotNull(data);
|
|
assertNotNull(data.getServerGroups()); // 确保群组映射不为空
|
|
// assertTrue(data.getServerGroups().isEmpty()); // 可能会初始化空映射
|
|
|
|
System.out.println("Test passed: Empty file handled correctly.");
|
|
|
|
// 删除测试文件
|
|
Files.deleteIfExists(dataPath);
|
|
}
|
|
|
|
@Test
|
|
public void testLoadMissingFile() {
|
|
// 测试加载缺失文件的情况
|
|
Path dataPath = Paths.get(FileUtil.DATA_FILE, FileUtil.GROUPS_DIR, FileUtil.SERVER_DATA_FILENAME);
|
|
try {
|
|
Files.deleteIfExists(dataPath);
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
System.out.println("Ensured data file is missing.");
|
|
|
|
// 重置实例,强制重新加载
|
|
ServerData.resetInstance();
|
|
|
|
// 测试获取实例是否返回非空对象
|
|
ServerData data = ServerData.getInstance();
|
|
|
|
assertNotNull(data);
|
|
assertNotNull(data.getServerGroups()); // 确保群组映射不为空
|
|
assertTrue(data.getServerGroups().isEmpty()); // 可能会初始化空映射
|
|
|
|
System.out.println("Test passed: Missing file handled correctly.");
|
|
}
|
|
|
|
@Test
|
|
public void testLoadValidFile() throws IOException {
|
|
// 测试加载有效文件的情况
|
|
System.out.println("Starting testLoadValidFile...");
|
|
// 测试加载有效文件的情况
|
|
Path dataPath = Paths.get(FileUtil.DATA_FILE, FileUtil.GROUPS_DIR, FileUtil.SERVER_DATA_FILENAME);
|
|
try {
|
|
Files.deleteIfExists(dataPath);
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
// 初始化 ServerData 实例,确保其为空
|
|
ServerData.resetInstance();
|
|
ServerData data = ServerData.getInstance();
|
|
System.out.println("Initialized ServerData for saving.");
|
|
|
|
// 保存 ServerData 实例,确保文件存在
|
|
data.saveServerData();
|
|
System.out.println("Saved ServerData.");
|
|
|
|
// 重置实例,强制重新加载
|
|
ServerData.resetInstance();
|
|
System.out.println("Reset instance. Now calling getInstance() to trigger load...");
|
|
|
|
// 测试获取实例是否返回非空对象
|
|
// 确保加载的 ServerData 实例不为空
|
|
ServerData loaded = ServerData.getInstance();
|
|
|
|
assertNotNull(loaded);
|
|
System.out.println("Test passed: Valid file loaded correctly.");
|
|
}
|
|
} |