#!/bin/env ruby -w
require File.dirname(__FILE__) + '/../test_helper'
require 'diff'
include Diff
class DiffTest < Test::Unit::TestCase
def test_init
assert(1 == 1, "tests working")
assert_nothing_raised("object created") do
s = SequenceMatcher.new "private Thread currentThread;",
"private volatile Thread currentThread;",
proc { |x| x == ' ' }
end
end
def test_matching_blocks
s = SequenceMatcher.new "abxcd", "abcd"
assert(s.get_matching_blocks == [[0, 0, 2], [3, 2, 2], [5, 4, 0]],
"get_matching_blocks works")
end
def test_ratio
s = SequenceMatcher.new "abcd", "bcde"
assert(s.ratio == 0.75, "ratio works")
assert(s.quick_ratio == 0.75, "quick_ratio works")
assert(s.real_quick_ratio == 1.0, "real_quick_ratio works")
end
def test_longest_match
s = SequenceMatcher.new(" abcd", "abcd abcd")
assert(s.find_longest_match(0, 5, 0, 9) == [0, 4, 5],
"find_longest_match works")
s = SequenceMatcher.new()
end
def test_opcodes
s = SequenceMatcher.new("qabxcd", "abycdf")
assert(s.get_opcodes == [
[:delete, 0, 1, 0, 0],
[:equal, 1, 3, 0, 2],
[:replace, 3, 4, 2, 3],
[:equal, 4, 6, 3, 5],
[:insert, 6, 6, 5, 6]], "get_opcodes works")
end
def test_count_leading
assert(Diff.count_leading(' abc', ' ') == 3,
"count_leading works")
end
def test_html2list
a = "here is the original text"
#p HTMLDiff.html2list(a)
end
def test_html_diff
a = "this was the original string"
b = "this is the super string"
assert_equal 'this was ' +
'is the ' +
'original ' +
'super string',
HTMLDiff.diff(a, b)
end
def test_html_diff_with_multiple_paragraphs
a = "
this was the original string
" b = "this is
\r\nthe super string
\r\naround the world
" assert_equal( "this was " +
"is
the " +
"original " +
"super string
around the world
", HTMLDiff.diff(a, b) ) end end