From 27fb3926cf8b82e7bf08a878add46be5af00ee5c Mon Sep 17 00:00:00 2001 From: NikitolProject Date: Thu, 26 Feb 2026 22:05:29 +0300 Subject: [PATCH] test(09-01): add directory test cases to Kotlin cross-validation script - Test 6: nested directory extraction (3+ levels deep, 4 files) - Test 7: empty directory creation without decryption errors - Test 8: mixed standalone files + directory pack/unpack - All 5 original test cases preserved unchanged Co-Authored-By: Claude Opus 4.6 --- kotlin/test_decoder.sh | 64 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/kotlin/test_decoder.sh b/kotlin/test_decoder.sh index e071ecb..7d50b7c 100755 --- a/kotlin/test_decoder.sh +++ b/kotlin/test_decoder.sh @@ -246,6 +246,70 @@ java -jar "$JAR" "$TMPDIR/test5.archive" "$TMPDIR/output5/" verify_file "$ORIG5" "$TMPDIR/output5/large.bin" "large.bin (100 KB random)" echo "" +# --------------------------------------------------------------------------- +# Test case 6: Directory with nested files +# --------------------------------------------------------------------------- + +echo -e "${BOLD}Test 6: Directory with nested files${NC}" + +mkdir -p "$TMPDIR/testdir6/subdir1/deep" +mkdir -p "$TMPDIR/testdir6/subdir2" +echo "file in root" > "$TMPDIR/testdir6/root.txt" +echo "file in subdir1" > "$TMPDIR/testdir6/subdir1/sub1.txt" +echo "file in deep" > "$TMPDIR/testdir6/subdir1/deep/deep.txt" +echo "file in subdir2" > "$TMPDIR/testdir6/subdir2/sub2.txt" + +"$ARCHIVER" pack "$TMPDIR/testdir6" -o "$TMPDIR/test6.archive" +java -jar "$JAR" "$TMPDIR/test6.archive" "$TMPDIR/output6/" + +verify_file "$TMPDIR/testdir6/root.txt" "$TMPDIR/output6/testdir6/root.txt" "testdir6/root.txt" +verify_file "$TMPDIR/testdir6/subdir1/sub1.txt" "$TMPDIR/output6/testdir6/subdir1/sub1.txt" "testdir6/subdir1/sub1.txt" +verify_file "$TMPDIR/testdir6/subdir1/deep/deep.txt" "$TMPDIR/output6/testdir6/subdir1/deep/deep.txt" "testdir6/subdir1/deep/deep.txt" +verify_file "$TMPDIR/testdir6/subdir2/sub2.txt" "$TMPDIR/output6/testdir6/subdir2/sub2.txt" "testdir6/subdir2/sub2.txt" +echo "" + +# --------------------------------------------------------------------------- +# Test case 7: Directory with empty subdirectory +# --------------------------------------------------------------------------- + +echo -e "${BOLD}Test 7: Directory with empty subdirectory${NC}" + +mkdir -p "$TMPDIR/testdir7/populated" +mkdir -p "$TMPDIR/testdir7/empty_subdir" +echo "content" > "$TMPDIR/testdir7/populated/file.txt" + +"$ARCHIVER" pack "$TMPDIR/testdir7" -o "$TMPDIR/test7.archive" +java -jar "$JAR" "$TMPDIR/test7.archive" "$TMPDIR/output7/" + +# Verify file content +verify_file "$TMPDIR/testdir7/populated/file.txt" "$TMPDIR/output7/testdir7/populated/file.txt" "testdir7/populated/file.txt" + +# Verify empty directory exists +if [ -d "$TMPDIR/output7/testdir7/empty_subdir" ]; then + pass "testdir7/empty_subdir (empty directory created)" +else + fail "testdir7/empty_subdir" "Empty directory not found in output" +fi +echo "" + +# --------------------------------------------------------------------------- +# Test case 8: Mixed standalone files and directory +# --------------------------------------------------------------------------- + +echo -e "${BOLD}Test 8: Mixed standalone files and directory${NC}" + +ORIG8_FILE="$TMPDIR/standalone.txt" +echo "standalone content" > "$ORIG8_FILE" +mkdir -p "$TMPDIR/testdir8" +echo "dir content" > "$TMPDIR/testdir8/inner.txt" + +"$ARCHIVER" pack "$ORIG8_FILE" "$TMPDIR/testdir8" -o "$TMPDIR/test8.archive" +java -jar "$JAR" "$TMPDIR/test8.archive" "$TMPDIR/output8/" + +verify_file "$ORIG8_FILE" "$TMPDIR/output8/standalone.txt" "standalone.txt (standalone file)" +verify_file "$TMPDIR/testdir8/inner.txt" "$TMPDIR/output8/testdir8/inner.txt" "testdir8/inner.txt (from directory)" +echo "" + # --------------------------------------------------------------------------- # Summary # ---------------------------------------------------------------------------