34 lines
857 B
Ruby
34 lines
857 B
Ruby
# typed: true
|
|
require "minitest/autorun"
|
|
require "xdiff"
|
|
|
|
class TestXDiff < Minitest::Test
|
|
def assert_patches(a, b)
|
|
diff = XDiff.diff(a, b)
|
|
|
|
diff_hex = diff.unpack("H*").first
|
|
puts "diff (#{diff.size}): #{diff_hex}"
|
|
|
|
refute_equal "", diff
|
|
stitched = XDiff.patch(a, diff)
|
|
assert_equal b, stitched
|
|
end
|
|
|
|
def test_raises
|
|
assert_raises(ArgumentError) { XDiff.patch(nil, "") }
|
|
assert_raises(ArgumentError) { XDiff.patch("", nil) }
|
|
assert_raises(ArgumentError) { XDiff.patch("", 123) }
|
|
assert_raises(ArgumentError) { XDiff.patch(123, "") }
|
|
end
|
|
|
|
def test_patch
|
|
assert_patches("foo bar", "foo bar")
|
|
assert_patches("", "")
|
|
assert_patches("foo", "")
|
|
assert_patches("", "foo")
|
|
assert_patches("abc\x00123", "123")
|
|
assert_patches("abc\x00123", "\x00")
|
|
assert_patches("\x00", "\x00")
|
|
end
|
|
end
|