init/push
This commit is contained in:
commit
d0371663d9
11 files changed
+834
No files matched your search
@@ -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) {
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user