The Trunk: Tests-ul.251.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Tests-ul.251.mcz

commits-2
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!