init/push

This commit is contained in:
database-mysql committed 2026-08-03 16:36:45 +08:00
commit d0371663d9
11 files changed
+834

No files matched your search

+281
View File
@@ -0,0 +1,281 @@
import top.gtb520.java.gnu.java.utils.library.utils.compress.compress;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
public class compressTest {
static int passed = 0;
static int failed = 0;
public static void main(String[] args) throws Exception {
System.out.println("========== compress 测试开始 ==========");
testMakeZipAndUnZipSingleFile();
testMakeZipAndUnZipDirectory();
testMakeTarGzAndUnTarGzSingleFile();
testMakeTarGzAndUnTarGzDirectory();
testMakeZipSourceNotExist();
testUnZipDestNotDirectory();
testMakeTarGzSourceNotExist();
testUnTarGzDestNotDirectory();
System.out.println("========================================");
System.out.println("测试完成: 通过 " + passed + ", 失败 " + failed);
if (failed > 0) {
System.exit(1);
}
}
/**
* 测试单文件的 Zip 压缩与解压
*/
static void testMakeZipAndUnZipSingleFile() throws Exception {
String testName = "testMakeZipAndUnZipSingleFile";
Path tempDir = Files.createTempDirectory("compress_test_");
try {
// 准备源文件
Path sourceFile = tempDir.resolve("source.txt");
Files.writeString(sourceFile, "Hello, Zip!");
// 压缩
Path zipFile = tempDir.resolve("output.zip");
compress.MakeZip(sourceFile.toString(), zipFile.toString());
assertCondition(testName + " - 压缩文件应存在", Files.exists(zipFile));
// 解压
Path unzipDir = tempDir.resolve("unzip");
Files.createDirectories(unzipDir);
compress.UnZip(zipFile.toString(), unzipDir.toString());
Path resultFile = unzipDir.resolve("source.txt");
assertCondition(testName + " - 解压文件应存在", Files.exists(resultFile));
assertCondition(testName + " - 内容应一致",
"Hello, Zip!".equals(Files.readString(resultFile)));
} finally {
deleteTempDir(tempDir);
}
}
/**
* 测试目录的 Zip 压缩与解压
*/
static void testMakeZipAndUnZipDirectory() throws Exception {
String testName = "testMakeZipAndUnZipDirectory";
Path tempDir = Files.createTempDirectory("compress_test_");
try {
// 准备源目录结构
Path sourceDir = tempDir.resolve("source");
Files.createDirectories(sourceDir.resolve("sub"));
Files.writeString(sourceDir.resolve("a.txt"), "file a");
Files.writeString(sourceDir.resolve("sub/b.txt"), "file b");
// 压缩
Path zipFile = tempDir.resolve("dir_output.zip");
compress.MakeZip(sourceDir.toString(), zipFile.toString());
assertCondition(testName + " - 压缩文件应存在", Files.exists(zipFile));
// 解压
Path unzipDir = tempDir.resolve("unzip_dir");
Files.createDirectories(unzipDir);
compress.UnZip(zipFile.toString(), unzipDir.toString());
assertCondition(testName + " - 文件a应存在",
Files.exists(unzipDir.resolve("a.txt")));
assertCondition(testName + " - 文件b应存在",
Files.exists(unzipDir.resolve("sub/b.txt")));
assertCondition(testName + " - 文件a内容应一致",
"file a".equals(Files.readString(unzipDir.resolve("a.txt"))));
assertCondition(testName + " - 文件b内容应一致",
"file b".equals(Files.readString(unzipDir.resolve("sub/b.txt"))));
} finally {
deleteTempDir(tempDir);
}
}
/**
* 测试单文件的 Tar.Gz 压缩与解压
*/
static void testMakeTarGzAndUnTarGzSingleFile() throws Exception {
String testName = "testMakeTarGzAndUnTarGzSingleFile";
Path tempDir = Files.createTempDirectory("compress_test_");
try {
// 准备源文件
Path sourceFile = tempDir.resolve("source.txt");
Files.writeString(sourceFile, "Hello, TarGz!");
// 压缩
Path tarGzFile = tempDir.resolve("output.tar.gz");
compress.MakeTarGz(sourceFile.toString(), tarGzFile.toString());
assertCondition(testName + " - 压缩文件应存在", Files.exists(tarGzFile));
// 解压
Path untarDir = tempDir.resolve("untar");
Files.createDirectories(untarDir);
compress.UnTarGz(tarGzFile.toString(), untarDir.toString());
Path resultFile = untarDir.resolve("source.txt");
assertCondition(testName + " - 解压文件应存在", Files.exists(resultFile));
assertCondition(testName + " - 内容应一致",
"Hello, TarGz!".equals(Files.readString(resultFile)));
} finally {
deleteTempDir(tempDir);
}
}
/**
* 测试目录的 Tar.Gz 压缩与解压
*/
static void testMakeTarGzAndUnTarGzDirectory() throws Exception {
String testName = "testMakeTarGzAndUnTarGzDirectory";
Path tempDir = Files.createTempDirectory("compress_test_");
try {
// 准备源目录结构
Path sourceDir = tempDir.resolve("source");
Files.createDirectories(sourceDir.resolve("sub"));
Files.writeString(sourceDir.resolve("a.txt"), "file a");
Files.writeString(sourceDir.resolve("sub/b.txt"), "file b");
// 压缩
Path tarGzFile = tempDir.resolve("dir_output.tar.gz");
compress.MakeTarGz(sourceDir.toString(), tarGzFile.toString());
assertCondition(testName + " - 压缩文件应存在", Files.exists(tarGzFile));
// 解压
Path untarDir = tempDir.resolve("untar_dir");
Files.createDirectories(untarDir);
compress.UnTarGz(tarGzFile.toString(), untarDir.toString());
assertCondition(testName + " - 文件a应存在",
Files.exists(untarDir.resolve("a.txt")));
assertCondition(testName + " - 文件b应存在",
Files.exists(untarDir.resolve("sub/b.txt")));
assertCondition(testName + " - 文件a内容应一致",
"file a".equals(Files.readString(untarDir.resolve("a.txt"))));
assertCondition(testName + " - 文件b内容应一致",
"file b".equals(Files.readString(untarDir.resolve("sub/b.txt"))));
} finally {
deleteTempDir(tempDir);
}
}
/**
* 测试压缩不存在的源路径应抛出异常
*/
static void testMakeZipSourceNotExist() {
String testName = "testMakeZipSourceNotExist";
try {
compress.MakeZip("not_exist_path", "output.zip");
assertCondition(testName + " - 应抛出异常", false);
} catch (IllegalArgumentException e) {
assertCondition(testName + " - 应抛出IllegalArgumentException", true);
} catch (Exception e) {
assertCondition(testName + " - 异常类型不正确: " + e.getClass().getName(), false);
}
}
/**
* 测试解压到非目录路径应抛出异常
*/
static void testUnZipDestNotDirectory() throws Exception {
String testName = "testUnZipDestNotDirectory";
Path tempDir = Files.createTempDirectory("compress_test_");
try {
// 创建一个文件作为解压目标(非目录)
Path notDir = tempDir.resolve("not_a_dir.txt");
Files.writeString(notDir, "I am a file");
// 先创建一个合法zip
Path sourceFile = tempDir.resolve("src.txt");
Files.writeString(sourceFile, "test");
Path zipFile = tempDir.resolve("test.zip");
compress.MakeZip(sourceFile.toString(), zipFile.toString());
try {
compress.UnZip(zipFile.toString(), notDir.toString());
assertCondition(testName + " - 应抛出异常", false);
} catch (IllegalArgumentException e) {
assertCondition(testName + " - 应抛出IllegalArgumentException", true);
} catch (Exception e) {
assertCondition(testName + " - 异常类型不正确: " + e.getClass().getName(), false);
}
} finally {
deleteTempDir(tempDir);
}
}
/**
* 测试TarGz压缩不存在的源路径应抛出异常
*/
static void testMakeTarGzSourceNotExist() {
String testName = "testMakeTarGzSourceNotExist";
try {
compress.MakeTarGz("not_exist_path", "output.tar.gz");
assertCondition(testName + " - 应抛出异常", false);
} catch (IllegalArgumentException e) {
assertCondition(testName + " - 应抛出IllegalArgumentException", true);
} catch (Exception e) {
assertCondition(testName + " - 异常类型不正确: " + e.getClass().getName(), false);
}
}
/**
* 测试TarGz解压到非目录路径应抛出异常
*/
static void testUnTarGzDestNotDirectory() throws Exception {
String testName = "testUnTarGzDestNotDirectory";
Path tempDir = Files.createTempDirectory("compress_test_");
try {
Path notDir = tempDir.resolve("not_a_dir.txt");
Files.writeString(notDir, "I am a file");
// 先创建一个合法tar.gz
Path sourceFile = tempDir.resolve("src.txt");
Files.writeString(sourceFile, "test");
Path tarGzFile = tempDir.resolve("test.tar.gz");
compress.MakeTarGz(sourceFile.toString(), tarGzFile.toString());
try {
compress.UnTarGz(tarGzFile.toString(), notDir.toString());
assertCondition(testName + " - 应抛出异常", false);
} catch (IllegalArgumentException e) {
assertCondition(testName + " - 应抛出IllegalArgumentException", true);
} catch (Exception e) {
assertCondition(testName + " - 异常类型不正确: " + e.getClass().getName(), false);
}
} finally {
deleteTempDir(tempDir);
}
}
// ========== 辅助方法 ==========
static void assertCondition(String message, boolean condition) {
if (condition) {
System.out.println("[PASS] " + message);
passed++;
} else {
System.out.println("[FAIL] " + message);
failed++;
}
}
static void deleteTempDir(Path dir) {
try {
Files.walk(dir)
.sorted(java.util.Comparator.reverseOrder())
.forEach(path -> {
try {
Files.deleteIfExists(path);
} catch (IOException ignored) {
}
});
} catch (IOException ignored) {
}
}
}