--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/TextDiffTests.st Fri Jul 01 16:12:24 2011 +0200
@@ -0,0 +1,651 @@
+"{ Package: 'stx:libtool' }"
+
+TestCase subclass:#TextDiffTests
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Collections-Sequenceable-Diff'
+!
+
+TextDiffTests comment:'asdfasfsafsafsa
+'
+!
+
+!TextDiffTests class methodsFor:'documentation'!
+
+documentation
+"
+
+
+"
+! !
+
+!TextDiffTests methodsFor:'default'!
+
+testForward
+ |diff change first second|
+
+ first := #( 'aaa' 'lll' ).
+ second := #( 'aaa' 'jjj' 'kkk' 'lll' 'bbb' 'ccc' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' ).
+ diff := Diff new.
+ diff a:first b:second.
+ change := diff diff:false.
+ self deny:(change = nil).
+ self assert:(change deleted = 0).
+ self assert:(change inserted = 2).
+ self assert:(change line0 = 1).
+ self assert:(change line1 = 1).
+ change := change nextLink.
+ self deny:(change = nil).
+ self assert:(change deleted = 0).
+ self assert:(change inserted = 7).
+ self assert:(change line0 = 2).
+ self assert:(change line1 = 4).
+ self assert:(change nextLink = nil).
+
+ "Modified: / 12-02-2010 / 14:23:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+testForward1
+ "comment stating purpose of this message"
+
+ |d a b result|
+
+ a := ''.
+ b := ''.
+ d := Diff new.
+ d a:a b:b.
+ result := d diffUsingScript:(Diff::ForwardScript new).
+ self assert:(result = nil).
+
+ "Modified: / 12-02-2010 / 13:57:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+testForward10
+ "comment stating purpose of message"
+
+ |d a b result|
+
+ a := #( 'aaaa' 'aaa' 'bbbb' 'bbb' 'aaa' 'aaa' 'aaa' 'aaa' 'ccccc' 'ccccc' ).
+ b := #( 'aaa' 'aaaa' 'jjj' 'kkk' 'lll' 'bbb' 'ccc' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' 'aaa' 'aaa' ).
+ d := Diff new.
+ d a:a b:b.
+ result := d diff:false.
+ self deny:(result = nil).
+ self assert:(result deleted = 1).
+ self assert:(result inserted = 0).
+ self assert:(result line0 = 0).
+ self assert:(result line1 = 0).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 1).
+ self assert:(result inserted = 4).
+ self assert:(result line0 = 2).
+ self assert:(result line1 = 1).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 1).
+ self assert:(result line0 = 4).
+ self assert:(result line1 = 6).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 5).
+ self assert:(result line0 = 6).
+ self assert:(result line1 = 9).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 2).
+ self assert:(result inserted = 0).
+ self assert:(result line0 = 8).
+ self assert:(result line1 = 16).
+ self assert:(result nextLink = nil).
+!
+
+testForward2
+ "comment stating purpose of message"
+
+ |d a b result|
+
+ a := ''.
+ b := #( 'aaa' 'jjj' 'kkk' 'lll' 'bbb' 'ccc' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' ).
+ d := Diff new.
+ d a:a b:b.
+ result := d diff:false.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 11).
+ self assert:(result line0 = 0).
+ self assert:(result line1 = 0).
+ self assert:(result nextLink = nil).
+!
+
+testForward3
+ "comment stating purpose of message"
+
+ |d a b result|
+
+ a := #( 'aaa' 'lll' ).
+ b := ''.
+ d := Diff new.
+ d a:a b:b.
+ result := d diff:false.
+ self deny:(result = nil).
+ self assert:(result deleted = 2).
+ self assert:(result inserted = 0).
+ self assert:(result line0 = 0).
+ self assert:(result line1 = 0).
+ self assert:(result nextLink = nil).
+!
+
+testForward4
+ "comment stating purpose of message"
+
+ |d a b result|
+
+ a := #( 'aaa' 'aaa' 'aaa' 'aaa' 'aaa' ).
+ b := #( 'aaa' 'jjj' 'kkk' 'lll' 'bbb' 'ccc' 'aaa' 'aaa' 'aaa' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' ).
+ d := Diff new.
+ d a:a b:b.
+ result := d diff:false.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 5).
+ self assert:(result line0 = 1).
+ self assert:(result line1 = 1).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 6).
+ self assert:(result line0 = 5).
+ self assert:(result line1 = 10).
+ self assert:(result nextLink = nil).
+!
+
+testForward5
+ "comment stating purpose of message"
+
+ |d a b result|
+
+ a := #( 'aaa' 'aaa' 'aaa' 'aaa' 'aaa' 'aaa' ).
+ b := #( 'aaa' 'aaa' 'jjj' 'kkk' 'lll' 'bbb' 'ccc' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' 'aaa' 'aaa' ).
+ d := Diff new.
+ d a:a b:b.
+ result := d diff:false.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 5).
+ self assert:(result line0 = 2).
+ self assert:(result line1 = 2).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 5).
+ self assert:(result line0 = 4).
+ self assert:(result line1 = 9).
+ self assert:(result nextLink = nil).
+!
+
+testForward6
+ "comment stating purpose of message"
+
+ |d a b result|
+
+ a := #( 'aaa' 'aaa' 'bbb' 'bbb' 'aaa' 'aaa' 'aaa' 'aaa' ).
+ b := #( 'aaa' 'aaa' 'jjj' 'kkk' 'lll' 'bbb' 'ccc' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' 'aaa' 'aaa' ).
+ d := Diff new.
+ d a:a b:b.
+ result := d diff:false.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 3).
+ self assert:(result line0 = 2).
+ self assert:(result line1 = 2).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 1).
+ self assert:(result inserted = 1).
+ self assert:(result line0 = 3).
+ self assert:(result line1 = 6).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 5).
+ self assert:(result line0 = 6).
+ self assert:(result line1 = 9).
+ self assert:(result nextLink = nil).
+!
+
+testForward7
+ "comment stating purpose of message"
+
+ |d a b result|
+
+ a := #( 'aaa' 'aaa' 'bbb' 'bbb' 'aaa' 'aaa' 'aaa' 'aaa' ).
+ b := #( 'aaa' 'aaa' 'jjj' 'kkk' 'lll' 'bbb' 'bbb' 'ccc' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' 'aaa' 'aaa' ).
+ d := Diff new.
+ d a:a b:b.
+ result := d diff:false.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 3).
+ self assert:(result line0 = 2).
+ self assert:(result line1 = 2).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 1).
+ self assert:(result line0 = 4).
+ self assert:(result line1 = 7).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 5).
+ self assert:(result line0 = 6).
+ self assert:(result line1 = 10).
+ self assert:(result nextLink = nil).
+!
+
+testForward8
+ "comment stating purpose of message"
+
+ |d a b result|
+
+ a := #( 'aaaa' 'aaa' 'bbb' 'bbb' 'aaa' 'aaa' 'aaa' 'aaa' ).
+ b := #( 'aaa' 'aaaa' 'jjj' 'kkk' 'lll' 'bbb' 'ccc' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' 'aaa' 'aaa' ).
+ d := Diff new.
+ d a:a b:b.
+ result := d diff:false.
+ self deny:(result = nil).
+ self assert:(result deleted = 1).
+ self assert:(result inserted = 0).
+ self assert:(result line0 = 0).
+ self assert:(result line1 = 0).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 1).
+ self assert:(result inserted = 4).
+ self assert:(result line0 = 2).
+ self assert:(result line1 = 1).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 1).
+ self assert:(result line0 = 4).
+ self assert:(result line1 = 6).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 5).
+ self assert:(result line0 = 6).
+ self assert:(result line1 = 9).
+ self assert:(result nextLink = nil).
+!
+
+testForward9
+ "comment stating purpose of message"
+
+ |d a b result|
+
+ a := #( 'aaaa' 'aaa' 'bbbb' 'bbb' 'aaa' 'aaa' 'aaa' 'aaa' ).
+ b := #( 'aaa' 'aaaa' 'jjj' 'kkk' 'lll' 'bbb' 'ccc' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' 'aaa' 'aaa' ).
+ d := Diff new.
+ d a:a b:b.
+ result := d diff:false.
+ self deny:(result = nil).
+ self assert:(result deleted = 1).
+ self assert:(result inserted = 0).
+ self assert:(result line0 = 0).
+ self assert:(result line1 = 0).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 1).
+ self assert:(result inserted = 4).
+ self assert:(result line0 = 2).
+ self assert:(result line1 = 1).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 1).
+ self assert:(result line0 = 4).
+ self assert:(result line1 = 6).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 5).
+ self assert:(result line0 = 6).
+ self assert:(result line1 = 9).
+ self assert:(result nextLink = nil).
+!
+
+testForward9NoDiscards
+ "comment stating purpose of message"
+
+ |d a b result|
+
+ a := #( 'aaaa' 'aaa' 'bbbb' 'bbb' 'aaa' 'aaa' 'aaa' 'aaa' ).
+ b := #( 'aaa' 'aaaa' 'jjj' 'kkk' 'lll' 'bbb' 'ccc' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' 'aaa' 'aaa' ).
+ d := Diff new.
+ d nodiscards:true.
+ d a:a b:b.
+ result := d diff:false.
+ self deny:(result = nil).
+ self assert:(result deleted = 1).
+ self assert:(result inserted = 0).
+ self assert:(result line0 = 0).
+ self assert:(result line1 = 0).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 1).
+ self assert:(result inserted = 4).
+ self assert:(result line0 = 2).
+ self assert:(result line1 = 1).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 1).
+ self assert:(result line0 = 4).
+ self assert:(result line1 = 6).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 5).
+ self assert:(result line0 = 6).
+ self assert:(result line1 = 9).
+ self assert:(result nextLink = nil).
+!
+
+testReverse
+ |diff change first second|
+
+ first := #( '1' '2' '3' '4' '5' '6' '7' '8' '9' '10' '11' '12' '13' ).
+ second := #( '1' '2' '3' '5' '7' '8' '8' '9' '10' '11' '11' '12' '13' ).
+ diff := Diff new.
+ diff a:first b:second.
+ change := diff diff:false.
+ self assert:(change ~= nil).
+
+ "Modified: / 12-02-2010 / 14:23:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+testReverse1
+ "comment stating purpose of message"
+
+ |d a b result|
+
+ a := ''.
+ b := ''.
+ d := Diff new.
+ d a:a b:b.
+ result := d diff:false.
+ self assert:(result = nil).
+!
+
+testReverse10
+ "comment stating purpose of message"
+
+ |d a b result|
+
+ a := #( 'aaaa' 'aaa' 'bbbb' 'bbb' 'aaa' 'aaa' 'aaa' 'aaa' ',' 'ccccc' ',' 'ccccc' ).
+ b := #( 'aaa' 'aaaa' 'jjj' 'kkk' 'lll' 'bbb' 'ccc' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' 'aaa' 'aaa' ).
+ d := Diff new.
+ d a:a b:b.
+ result := d diffUsingScript:(Diff::ReverseScript new).
+ self deny:(result = nil).
+ self assert:(result deleted = 4).
+ self assert:(result inserted = 0).
+ self assert:(result line0 = 8).
+ self assert:(result line1 = 16).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 5).
+ self assert:(result line0 = 6).
+ self assert:(result line1 = 9).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 1).
+ self assert:(result line0 = 4).
+ self assert:(result line1 = 6).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 1).
+ self assert:(result inserted = 4).
+ self assert:(result line0 = 2).
+ self assert:(result line1 = 1).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 1).
+ self assert:(result inserted = 0).
+ self assert:(result line0 = 0).
+ self assert:(result line1 = 0).
+ self assert:(result nextLink = nil).
+!
+
+testReverse2
+ "comment stating purpose of message"
+
+ |d a b result|
+
+ a := ''.
+ b := #( 'aaa' 'jjj' 'kkk' 'lll' 'bbb' 'ccc' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' ).
+ d := Diff new.
+ d a:a b:b.
+ result := d diffUsingScript:(Diff::ReverseScript new).
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 11).
+ self assert:(result line0 = 0).
+ self assert:(result line1 = 0).
+ self assert:(result nextLink = nil).
+!
+
+testReverse3
+ "comment stating purpose of message"
+
+ |d a b result|
+
+ a := #( 'aaa' 'lll' ).
+ b := ''.
+ d := Diff new.
+ d a:a b:b.
+ result := d diffUsingScript:(Diff::ReverseScript new).
+ self deny:(result = nil).
+ self assert:(result deleted = 2).
+ self assert:(result inserted = 0).
+ self assert:(result line0 = 0).
+ self assert:(result line1 = 0).
+ self assert:(result nextLink = nil).
+!
+
+testReverse4
+ "comment stating purpose of message"
+
+ |d a b result|
+
+ a := #( 'aaa' 'aaa' 'aaa' 'aaa' 'aaa' ).
+ b := #( 'aaa' 'jjj' 'kkk' 'lll' 'bbb' 'ccc' 'aaa' 'aaa' 'aaa' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' ).
+ d := Diff new.
+ d a:a b:b.
+ result := d diffUsingScript:(Diff::ReverseScript new).
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 6).
+ self assert:(result line0 = 5).
+ self assert:(result line1 = 10).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 5).
+ self assert:(result line0 = 1).
+ self assert:(result line1 = 1).
+ self assert:(result nextLink = nil).
+!
+
+testReverse5
+ "comment stating purpose of message"
+
+ |d a b result|
+
+ a := #( 'aaa' 'aaa' 'aaa' 'aaa' 'aaa' 'aaa' ).
+ b := #( 'aaa' 'aaa' 'jjj' 'kkk' 'lll' 'bbb' 'ccc' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' 'aaa' 'aaa' ).
+ d := Diff new.
+ d a:a b:b.
+ result := d diffUsingScript:(Diff::ReverseScript new).
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 5).
+ self assert:(result line0 = 4).
+ self assert:(result line1 = 9).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 5).
+ self assert:(result line0 = 2).
+ self assert:(result line1 = 2).
+ self assert:(result nextLink = nil).
+!
+
+testReverse6
+ "comment stating purpose of message"
+
+ |d a b result|
+
+ a := #( 'aaa' 'aaa' 'bbb' 'bbb' 'aaa' 'aaa' 'aaa' 'aaa' ).
+ b := #( 'aaa' 'aaa' 'jjj' 'kkk' 'lll' 'bbb' 'ccc' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' 'aaa' 'aaa' ).
+ d := Diff new.
+ d a:a b:b.
+ result := d diffUsingScript:(Diff::ReverseScript new).
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 5).
+ self assert:(result line0 = 6).
+ self assert:(result line1 = 9).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 1).
+ self assert:(result inserted = 1).
+ self assert:(result line0 = 3).
+ self assert:(result line1 = 6).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 3).
+ self assert:(result line0 = 2).
+ self assert:(result line1 = 2).
+ self assert:(result nextLink = nil).
+!
+
+testReverse7
+ "comment stating purpose of message"
+
+ |d a b result|
+
+ a := #( 'aaa' 'aaa' 'bbb' 'bbb' 'aaa' 'aaa' 'aaa' 'aaa' ).
+ b := #( 'aaa' 'aaa' 'jjj' 'kkk' 'lll' 'bbb' 'bbb' 'ccc' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' 'aaa' 'aaa' ).
+ d := Diff new.
+ d a:a b:b.
+ result := d diffUsingScript:(Diff::ReverseScript new).
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 5).
+ self assert:(result line0 = 6).
+ self assert:(result line1 = 10).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 1).
+ self assert:(result line0 = 4).
+ self assert:(result line1 = 7).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 3).
+ self assert:(result line0 = 2).
+ self assert:(result line1 = 2).
+ self assert:(result nextLink = nil).
+!
+
+testReverse8
+ "comment stating purpose of message"
+
+ |d a b result|
+
+ a := #( 'aaaa' 'aaa' 'bbb' 'bbb' 'aaa' 'aaa' 'aaa' 'aaa' ).
+ b := #( 'aaa' 'aaaa' 'jjj' 'kkk' 'lll' 'bbb' 'ccc' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' 'aaa' 'aaa' ).
+ d := Diff new.
+ d a:a b:b.
+ result := d diffUsingScript:(Diff::ReverseScript new).
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 5).
+ self assert:(result line0 = 6).
+ self assert:(result line1 = 9).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 1).
+ self assert:(result line0 = 4).
+ self assert:(result line1 = 6).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 1).
+ self assert:(result inserted = 4).
+ self assert:(result line0 = 2).
+ self assert:(result line1 = 1).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 1).
+ self assert:(result inserted = 0).
+ self assert:(result line0 = 0).
+ self assert:(result line1 = 0).
+ self assert:(result nextLink = nil).
+!
+
+testReverse9
+ "comment stating purpose of message"
+
+ |d a b result|
+
+ a := #( 'aaaa' 'aaa' 'bbbb' 'bbb' 'aaa' 'aaa' 'aaa' 'aaa' ).
+ b := #( 'aaa' 'aaaa' 'jjj' 'kkk' 'lll' 'bbb' 'ccc' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' 'aaa' 'aaa' ).
+ d := Diff new.
+ d a:a b:b.
+ result := d diffUsingScript:(Diff::ReverseScript new).
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 5).
+ self assert:(result line0 = 6).
+ self assert:(result line1 = 9).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 0).
+ self assert:(result inserted = 1).
+ self assert:(result line0 = 4).
+ self assert:(result line1 = 6).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 1).
+ self assert:(result inserted = 4).
+ self assert:(result line0 = 2).
+ self assert:(result line1 = 1).
+ result := result nextLink.
+ self deny:(result = nil).
+ self assert:(result deleted = 1).
+ self assert:(result inserted = 0).
+ self assert:(result line0 = 0).
+ self assert:(result line1 = 0).
+ self assert:(result nextLink = nil).
+! !
+
+!TextDiffTests class methodsFor:'documentation'!
+
+version_CVS
+ ^ '$Header: /cvs/stx/stx/libtool/TextDiffTests.st,v 1.1 2011-07-01 14:12:24 cg Exp $'
+!
+
+version_SVN
+ ^ '§Id: TextDiffTests.st 7546 2010-02-25 21:31:39Z vranyj1 §'
+! !