[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