#!/bin/env ruby -w require File.dirname(__FILE__) + '/../test_helper' require 'diff' include Diff class DiffTest < Test::Unit::TestCase def test_init assert_nothing_raised { s = SequenceMatcher.new('private Thread currentThread;', 'private volatile Thread currentThread;') { |x| x == ' ' } } end def test_matching_blocks s = SequenceMatcher.new 'abxcd', 'abcd' assert_equal [[0, 0, 2], [3, 2, 2], [5, 4, 0]], s.get_matching_blocks end def test_ratio s = SequenceMatcher.new 'abcd', 'bcde' assert_equal 0.75, s.ratio, 0.001 assert_equal 0.75, s.quick_ratio, 0.001 assert_equal 1.0, s.real_quick_ratio, 0.001 end def test_longest_match s = SequenceMatcher.new(' abcd', 'abcd abcd') assert_equal [0, 4, 5], s.find_longest_match(0, 5, 0, 9) end def test_opcodes s = SequenceMatcher.new('qabxcd', 'abycdf') assert_equal( [ [: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] ], s.get_opcodes) end def test_count_leading assert_equal 3, Diff.count_leading(' abc', ' ') end def test_html2list a = "here is the original text" assert_equal( ['here ', 'is ', 'the ', 'original ', 'text'], 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\n

the super string

\r\n

around the world

" assert_equal( "

this was " + "is

\r\n

the " + "original " + "super string

\r\n" + "

around the world

", HTMLDiff.diff(a, b) ) end # FIXME this test fails (ticket #67, http://dev.instiki.org/ticket/67) def test_html_diff_preserves_endlines_in_pre a = "
\na\nb\nc\n
" b = '' assert_equal( "
\na\nb\nc\n
", HTMLDiff.diff(a, b)) end end