#!/bin/sh
# Round trip a delta and a patch, both on plain files and on gzip input.
# This mirrors what upstream exercises in its own CI for the 1.x line.
set -e

work=$(mktemp -d)
trap 'rm -rf "$work"' EXIT

# Big enough that the delta actually finds matching blocks.
seq 1 5000 > "$work/original"
cp "$work/original" "$work/updated"
echo "an appended line that did not exist before" >> "$work/updated"

xdelta delta "$work/original" "$work/updated" "$work/change.xdelta"
xdelta patch "$work/change.xdelta" "$work/original" "$work/reconstructed"
cmp "$work/updated" "$work/reconstructed"

# A delta for a barely changed file has to be much smaller than the file it
# reconstructs, otherwise the delta algorithm is not doing anything.
test "$(wc -c < "$work/change.xdelta")" -lt "$(wc -c < "$work/updated")"

# Same again through the transparent gzip decompression path.
gzip "$work/original" "$work/updated"
xdelta delta "$work/original.gz" "$work/updated.gz" "$work/change-gz.xdelta"
xdelta patch "$work/change-gz.xdelta" "$work/original.gz" "$work/reconstructed.gz"
gunzip -c "$work/updated.gz" > "$work/updated.plain"
gunzip -c "$work/reconstructed.gz" > "$work/reconstructed.plain"
cmp "$work/updated.plain" "$work/reconstructed.plain"
