[Pkg] The Trunk: Tests-ul.251.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Sep 11 16:25:03 UTC 2013


Levente Uzonyi uploaded a new version of Tests to project The Trunk:
http://source.squeak.org/trunk/Tests-ul.251.mcz

==================== Summary ====================

Name: Tests-ul.251
Author: ul
Time: 11 September 2013, 5:31:55.424 pm
UUID: e05003ea-81fe-4988-afc6-5ff950e6ef32
Ancestors: Tests-cmm.250

- added test for #ignoreLineEndings to TextDiffBuilderTest
- refactored some parts of TextDiffBuilderTest

=============== Diff against Tests-cmm.250 ===============

Item was removed:
- ----- Method: TextDiffBuilderTest>>convertToString: (in category 'private') -----
- convertToString: array
- 
- 	^String streamContents: [ :stream |
- 		array do: [ :each |
- 			stream nextPutAll: each asString; cr ] ]!

Item was added:
+ ----- Method: TextDiffBuilderTest>>convertToString:lineEndingSelector: (in category 'private') -----
+ convertToString: anArray lineEndingSelector: aSymbol
+ 
+ 	^String streamContents: [ :stream |
+ 		anArray do: [ :each |
+ 			stream nextPutAll: each asString; perform: aSymbol ] ]!

Item was changed:
  ----- Method: TextDiffBuilderTest>>patchSequenceFor:and: (in category 'private') -----
  patchSequenceFor: x and: y
  
+ 	^self 
+ 		patchSequenceFor: x
+ 		lineEnding: #cr
+ 		and: y
+ 		lineEnding: #cr
+ 		ignoreLineEndings: false!
- 	^(TextDiffBuilder
- 		from: (self convertToString: x)
- 		to:  (self convertToString: y)) buildPatchSequence!

Item was added:
+ ----- Method: TextDiffBuilderTest>>patchSequenceFor:lineEnding:and:lineEnding:ignoreLineEndings: (in category 'private') -----
+ patchSequenceFor: x lineEnding: xLineEnding and: y lineEnding: yLineEnding ignoreLineEndings: ignoreLineEndings
+ 
+ 	^(TextDiffBuilder
+ 		from: (self convertToString: x lineEndingSelector: xLineEnding)
+ 		to:  (self convertToString: y lineEndingSelector: yLineEnding)
+ 		ignoreLineEndings: ignoreLineEndings) buildPatchSequence!

Item was changed:
  ----- Method: TextDiffBuilderTest>>testEmptyLcs1 (in category 'tests') -----
  testEmptyLcs1
  
  	| patch |
  	patch := self patchSequenceFor: #(a b c) and: #().
+ 	self validatePatch: patch matches: 0 insertions: 0 removals: 3!
- 	self assert: patch size = 3.
- 	self assert: (patch allSatisfy: [ :each | each key = #remove ])!

Item was changed:
  ----- Method: TextDiffBuilderTest>>testEmptyLcs2 (in category 'tests') -----
  testEmptyLcs2
  
  	| patch |
  	patch := self patchSequenceFor: #() and: #(a b c).
+ 	self validatePatch: patch matches: 0 insertions: 3 removals: 0!
- 	self assert: patch size = 3.	
- 	self assert: (patch allSatisfy: [ :each | each key = #insert ])!

Item was changed:
  ----- Method: TextDiffBuilderTest>>testEmptyLcs3 (in category 'tests') -----
  testEmptyLcs3
  
  	| patch |
  	patch := self patchSequenceFor: #(a b c) and: #(d e f g).
+ 	self validatePatch: patch matches: 0 insertions: 4 removals: 3.
- 	self assert: patch size = 7.	
  	patch do: [ :each |
  		each key = #remove ifTrue: [ self assert: ('abc' includes: each value first) ].
  		each key = #insert ifTrue: [ self assert: ('defg' includes: each value first) ] ]!

Item was changed:
  ----- Method: TextDiffBuilderTest>>testEmptySequences (in category 'tests') -----
  testEmptySequences
  
  	| patch |
  	patch := self patchSequenceFor: #() and: #().
+ 	self validatePatch: patch matches: 0 insertions: 0 removals: 0!
- 	self assert: patch isEmpty!

Item was changed:
  ----- Method: TextDiffBuilderTest>>testIfPatchIsMinimal (in category 'tests') -----
  testIfPatchIsMinimal
  
  	| patch |
  	patch := self patchSequenceFor: #(a a a b) and: #(a b a a).
+ 	self validatePatch: patch matches: 3 insertions: 1 removals: 1. "lcs is aaa"
- 	self assert: patch size = 5.	"lcs is aaa"
- 	self assert: (patch count: [ :each | each key = #match ]) = 3.
- 	self assert: (patch count: [ :each | each key = #insert ]) = 1.
- 	self assert: (patch count: [ :each | each key = #remove ]) = 1.
  	patch do: [ :each | 
  		each key = #match 
+ 			ifTrue: [ self assert: $a equals: each value first ]
+ 			ifFalse: [ self assert: $b equals: each value first ] ]!
- 			ifTrue: [ self assert: each value first = $a ]
- 			ifFalse: [ self assert: each value first = $b ] ]!

Item was changed:
  ----- Method: TextDiffBuilderTest>>testIfSequence1 (in category 'tests') -----
  testIfSequence1
+ 	"lcs is any one letter sequence"
+ 	
- 
  	| patch |
  	patch := self patchSequenceFor: #(a b c d) and: #(d c b a).
+ 	self validatePatch: patch matches: 1 insertions: 3 removals: 3. "lcs is any one letter sequence"!
- 	self assert: patch size = 7.	"lcs is any one letter sequence"
- 	self assert: (patch count: [ :each | each key = #match ]) = 1.
- 	self assert: (patch count: [ :each | each key = #insert ]) = 3.
- 	self assert: (patch count: [ :each | each key = #remove ]) = 3.
- 	patch do: [ :each | 
- 		each key = #match 
- 			ifTrue: [ self assert: each value first = $d ]
- 			ifFalse: [ self assert: ('abc' includes: each value first) ] ]!

Item was changed:
  ----- Method: TextDiffBuilderTest>>testIfSequence2 (in category 'tests') -----
  testIfSequence2
  
  	| patch |
  	patch := self patchSequenceFor: #(a b c d) and: #(c d b a).
+ 	self validatePatch: patch matches: 2 insertions: 2 removals: 2. "lcs is cd"
- 	self assert: patch size = 6.	"lcs is cd"
- 	self assert: (patch count: [ :each | each key = #match ]) = 2.
- 	self assert: (patch count: [ :each | each key = #insert ]) = 2.
- 	self assert: (patch count: [ :each | each key = #remove ]) = 2.
  	patch do: [ :each | 
  		each key = #match 
  			ifTrue: [ self assert: ('cd' includes: each value first) ]
  			ifFalse: [ self assert: ('ab' includes: each value first) ] ]!

Item was changed:
  ----- Method: TextDiffBuilderTest>>testIfSequence3 (in category 'tests') -----
  testIfSequence3
  
  	| patch |
  	patch := self patchSequenceFor: #(a b c d) and: #(b d c a).
+ 	self validatePatch: patch matches: 2 insertions: 2 removals: 2. "lcs is bd"
- 	self assert: patch size = 6.	"lcs is bd"
- 	self assert: (patch count: [ :each | each key = #match ]) = 2.
- 	self assert: (patch count: [ :each | each key = #insert ]) = 2.
- 	self assert: (patch count: [ :each | each key = #remove ]) = 2.
  	patch do: [ :each | 
  		each key = #match 
  			ifTrue: [ self assert: ('bd' includes: each value first) ]
  			ifFalse: [ self assert: ('ac' includes: each value first) ] ]!

Item was changed:
  ----- Method: TextDiffBuilderTest>>testIfSequence4 (in category 'tests') -----
  testIfSequence4
  
  	| patch |
  	patch := self patchSequenceFor: #(a b c d) and: #(d b c a).
+ 	self validatePatch: patch matches: 2 insertions: 2 removals: 2. "lcs is bc"
- 	self assert: patch size = 6.	"lcs is bc"
- 	self assert: (patch count: [ :each | each key = #match ]) = 2.
- 	self assert: (patch count: [ :each | each key = #insert ]) = 2.
- 	self assert: (patch count: [ :each | each key = #remove ]) = 2.
  	patch do: [ :each | 
  		each key = #match 
  			ifTrue: [ self assert: ('bc' includes: each value first) ]
  			ifFalse: [ self assert: ('ad' includes: each value first) ] ]!

Item was changed:
  ----- Method: TextDiffBuilderTest>>testIfSequence5 (in category 'tests') -----
  testIfSequence5
  
  	| patch matches nonMatches |
  	patch := self patchSequenceFor: #(a b c d) and: #(c d a b).
+ 	self validatePatch: patch matches: 2 insertions: 2 removals: 2. "lcs is ab or cd"
- 	self assert: patch size = 6.	"lcs is ab or cd"
  	matches := (patch select: [ :each | each key = #match ])
  		collect: [ :each | each value first ] as: String.
  	self assert: (#('ab' 'cd') includes: matches).
- 	self assert: (patch count: [ :each | each key = #insert ]) = 2.
- 	self assert: (patch count: [ :each | each key = #remove ]) = 2.
  	nonMatches := #('ab' 'cd') detect: [ :each | each ~= matches ].
  	patch do: [ :each | 
  		each key = #match 
  			ifTrue: [ self assert: (matches includes: each value first) ]
  			ifFalse: [ self assert: (nonMatches includes: each value first) ] ]!

Item was changed:
  ----- Method: TextDiffBuilderTest>>testIfSequence6 (in category 'tests') -----
  testIfSequence6
  
  	| patch |
  	patch := self patchSequenceFor: #(a b c d) and: #(d a b c).
+ 	self validatePatch: patch matches: 3 insertions: 1 removals: 1. "lcs is abc"
- 	self assert: patch size = 5.	"lcs is abc"
- 	self assert: (patch count: [ :each | each key = #match ]) = 3.
- 	self assert: (patch count: [ :each | each key = #insert ]) = 1.
- 	self assert: (patch count: [ :each | each key = #remove ]) = 1.
  	patch do: [ :each | 
  		each key = #match 
  			ifTrue: [ self assert: ('abc' includes: each value first) ]
+ 			ifFalse: [ self assert: $d equals: each value first ] ]!
- 			ifFalse: [ self assert: each value first = $d ] ]!

Item was added:
+ ----- Method: TextDiffBuilderTest>>testIgnoreLineEndings1 (in category 'tests') -----
+ testIgnoreLineEndings1
+ 
+ 	#(cr lf crlf) do: [ :firstLineEnding |
+ 		#(cr lf crlf) do: [ :secondLineEnding |
+ 			| patch |
+ 			patch := self 
+ 				patchSequenceFor: #(a b c d)
+ 				lineEnding: firstLineEnding
+ 				and: #(d c b a)
+ 				lineEnding: secondLineEnding
+ 				ignoreLineEndings: true.
+ 			self validatePatch: patch matches: 1 insertions: 3 removals: 3. "lcs is any one letter sequence" ] ]!

Item was added:
+ ----- Method: TextDiffBuilderTest>>testIgnoreLineEndings2 (in category 'tests') -----
+ testIgnoreLineEndings2
+ 
+ 	#(cr lf crlf) do: [ :firstLineEnding |
+ 		#(cr lf crlf) do: [ :secondLineEnding |
+ 			| patch |
+ 			patch := self 
+ 				patchSequenceFor: #(a b)
+ 				lineEnding: firstLineEnding
+ 				and: #(a b)
+ 				lineEnding: secondLineEnding
+ 				ignoreLineEndings: false.
+ 			firstLineEnding = secondLineEnding
+ 				ifTrue: [ self validatePatch: patch matches: 2 insertions: 0 removals: 0 ]
+ 				ifFalse: [ self validatePatch: patch matches: 0 insertions: 2 removals: 2 ] ] ]!

Item was changed:
  ----- Method: TextDiffBuilderTest>>testSameSequence (in category 'tests') -----
  testSameSequence
  
  	| patch |
  	patch := self patchSequenceFor: #(a b c) and: #(a b c).
+ 	self validatePatch: patch matches: 3 insertions: 0 removals: 0!
- 	self assert: patch size = 3.	
- 	self assert: (patch allSatisfy: [ :each | each key = #match ])!

Item was changed:
  ----- Method: TextDiffBuilderTest>>testSameSequenceWithRepetitions (in category 'tests') -----
  testSameSequenceWithRepetitions
  
  	| patch |
  	patch := self patchSequenceFor: #(a a b a) and: #(a a b a).
+ 	self validatePatch: patch matches: 4 insertions: 0 removals: 0!
- 	self assert: patch size = 4.	
- 	self assert: (patch allSatisfy: [ :each | each key = #match ])!

Item was added:
+ ----- Method: TextDiffBuilderTest>>validatePatch:matches:insertions:removals: (in category 'private') -----
+ validatePatch: patch matches: matches insertions: insertions removals: removals
+ 
+ 	self 
+ 		assert: matches equals: (patch count: [ :each | each key = #match ]);
+ 		assert: insertions equals: (patch count: [ :each | each key = #insert ]);
+ 		assert: removals equals: (patch count: [ :each | each key = #remove ]);
+ 		assert: matches + insertions + removals equals: patch size!



More information about the Packages mailing list