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! |
Free forum by Nabble | Edit this page |