[squeak-dev] The Trunk: CollectionsTests-nice.285.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Nov 30 20:25:32 UTC 2017


Nicolas Cellier uploaded a new version of CollectionsTests to project The Trunk:
http://source.squeak.org/trunk/CollectionsTests-nice.285.mcz

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

Name: CollectionsTests-nice.285
Author: nice
Time: 30 November 2017, 9:25:14.59936 pm
UUID: e50f181d-41a8-428f-ba63-b370998aac7d
Ancestors: CollectionsTests-nice.284

Tests for (Wide)CharacterSet(Complement)

- add tests for intersection: and union:
- don't (ab)use should: when assert: could do it
- add tests for awfully broken complement select:/reject:

=============== Diff against CollectionsTests-nice.284 ===============

Item was added:
+ ----- Method: CharacterSetComplementTest>>testIncludes (in category 'testing') -----
+ testIncludes
+ 	| set complement |
+ 	set := 'abc' as: CharacterSet.
+ 	complement := set complement.
+ 	self assert: (set noneSatisfy: [:e | complement includes: e]).
+ 	self assert: (($d to: $z) allSatisfy: [:e | complement includes: e]).!

Item was added:
+ ----- Method: CharacterSetComplementTest>>testReject (in category 'testing') -----
+ testReject
+ 	| set complement subset |
+ 	set := 'abc' as: CharacterSet.
+ 	complement := set complement.
+ 	subset := complement reject: [:c | c isVowel].
+ 	self assert: (subset includes: $z). "Not a vowel, it is in the subset"
+ 	self deny: (subset includes: $e). "a vowel should be rejected"
+ 	self deny: (subset includes: $b). "Not a vowel, but not in the original set"!

Item was added:
+ ----- Method: CharacterSetComplementTest>>testSelect (in category 'testing') -----
+ testSelect
+ 	| set complement digits |
+ 	set := 'abc012' as: CharacterSet.
+ 	complement := set complement.
+ 	digits := complement select: [:c | c isDigit].
+ 	self assert: (digits includes: $9).
+ 	self deny: (digits includes: $1).
+ 	self deny: (digits includes: $z).!

Item was added:
+ ----- Method: CharacterSetTest>>testComplement (in category 'testing') -----
+ testComplement
+ 	| set complement |
+ 	set := 'abc' as: CharacterSet.
+ 	complement := set complement.
+ 	self assert: (set noneSatisfy: [:e | complement includes: e]).
+ 	self assert: (($d to: $z) allSatisfy: [:e | complement includes: e]).!

Item was changed:
  ----- Method: CharacterSetTest>>testCopy (in category 'testing') -----
  testCopy
      | theOriginal theCopy |
      theOriginal := CharacterSet newFrom: 'abc'.
      theCopy := theOriginal copy.
      theCopy remove: $a.
+     ^self assert: (theOriginal includes: $a) description: 'Changing the copy should not change the original'.!
-     ^self should: [theOriginal includes: $a] description: 'Changing the copy should not change the original'.!

Item was added:
+ ----- Method: CharacterSetTest>>testIncludes (in category 'testing') -----
+ testIncludes
+ 	| set |
+ 	set := 'abc' as: CharacterSet.
+ 	self assert: (($a to: $c) allSatisfy: [:e | set includes: e]).
+ 	self assert: (($d to: $z) noneSatisfy: [:e | set includes: e]).!

Item was added:
+ ----- Method: CharacterSetTest>>testIntersection (in category 'testing') -----
+ testIntersection
+ 	| intersection |
+ 	intersection := ('abc' as: CharacterSet) intersection: ('bcde' as: CharacterSet).
+ 	self assert: intersection = ('bc' as: CharacterSet)!

Item was added:
+ ----- Method: CharacterSetTest>>testIntersectionWithComplement (in category 'testing') -----
+ testIntersectionWithComplement
+ 	| intersection intersection2 |
+ 	intersection := ('abcd' as: CharacterSet) intersection: ('cdef' as: CharacterSet) complement.
+ 	self assert: intersection = ('ab' as: CharacterSet).
+ 	intersection2 := ('cdef' as: CharacterSet) complement intersection: ('abcd' as: CharacterSet).
+ 	self assert: intersection2 = intersection. "Intersection is symmetric"!

Item was added:
+ ----- Method: CharacterSetTest>>testUnion (in category 'testing') -----
+ testUnion
+ 	| union |
+ 	union := ('abc' as: CharacterSet) union: ('bcde' as: CharacterSet).
+ 	self assert: union = ('abcde' as: CharacterSet)!

Item was added:
+ ----- Method: CharacterSetTest>>testUnionWithComplement (in category 'testing') -----
+ testUnionWithComplement
+ 	| union union2 |
+ 	union := ('abc' as: CharacterSet) union: ('bcde' as: CharacterSet) complement.
+ 	self assert: union = ('de' as: CharacterSet) complement.
+ 	union2 := ('bcde' as: CharacterSet) complement union: ('abc' as: CharacterSet).
+ 	self assert: union2 = union. "union is symmetric"!

Item was changed:
  ----- Method: WideCharacterSetTest>>testAddingToCharacterSet (in category 'testing') -----
  testAddingToCharacterSet
  
  	| cs wcs wc |
  	cs := CharacterSet newFrom: 'aeiouy'.
  	wcs := cs copy.
  	wc := 4452 asCharacter.
  	
  	self shouldnt: [wcs add: wc] raise: Error description: 'adding a WideCharacter to an ordinary CharacterSet should turn it into a WideCharacterSet'.
  
+ 	self assert: (wcs size = (cs size + 1)) description: 'We just added a Character, size should be increased by one'.
+ 	self deny: (wcs = cs) description: 'We just added a Character, sets should not be equal'.
+ 	self deny: (cs = wcs) description: 'We just added a Character, sets should not be equal'.
+ 	self assert: (cs allSatisfy: [:char | wcs includes: char]) description: 'Each character of the original CharacterSet should be included in the WideCharacterSet'.
+ 	self assert: (wcs hasWideCharacters) description: 'We just added a WideCharacter, so this WideCharacterSet definitely has one'.
+ 	self assert: (wcs includes: wc) description: 'We just added this WideCharacter, so this WideCharacterSet should include it'.
- 	self should: [wcs size = (cs size + 1)] description: 'We just added a Character, size should be increased by one'.
- 	self shouldnt: [wcs = cs] description: 'We just added a Character, sets should not be equal'.
- 	self shouldnt: [cs = wcs] description: 'We just added a Character, sets should not be equal'.
- 	self should: [cs allSatisfy: [:char | wcs includes: char]] description: 'Each character of the original CharacterSet should be included in the WideCharacterSet'.
- 	self should: [wcs hasWideCharacters] description: 'We just added a WideCharacter, so this WideCharacterSet definitely has one'.
- 	self should: [wcs includes: wc] description: 'We just added this WideCharacter, so this WideCharacterSet should include it'.
  	
  	wcs add: wc.
+ 	self assert: (wcs size = (cs size + 1)) description: 'We just added a Character already included in the set, size should be unchanged'.
- 	self should: [wcs size = (cs size + 1)] description: 'We just added a Character already included in the set, size should be unchanged'.
  	
  	wcs remove: wc.
+ 	self assert: (wcs size = cs size) description: 'We added then removed a Character, now size should be equal to original'.
+ 	self deny: (wcs hasWideCharacters) description: 'We just removed the only WideCharacter, so this WideCharacterSet definitely has no WideCharacter'.
- 	self should: [wcs size = cs size] description: 'We added then removed a Character, now size should be equal to original'.
- 	self shouldnt: [wcs hasWideCharacters] description: 'We just removed the only WideCharacter, so this WideCharacterSet definitely has no WideCharacter'.
  	
+ 	self assert: (wcs = cs) description: 'A WideCharacterSet can be equal to an Ordinary CharacterSet'.
+ 	self assert: (cs = wcs) description: 'An ordinary CharacterSet can be equal to a WideCharacterSet'.
+ 	self assert: (cs hash = wcs hash) description: 'If some objects are equal, then they should have same hash code'.
- 	self should: [wcs = cs] description: 'A WideCharacterSet can be equal to an Ordinary CharacterSet'.
- 	self should: [cs = wcs] description: 'An ordinary CharacterSet can be equal to a WideCharacterSet'.
- 	self should: [cs hash = wcs hash] description: 'If some objects are equal, then they should have same hash code'.
  	
  	!

Item was changed:
  ----- Method: WideCharacterSetTest>>testCreation (in category 'testing') -----
  testCreation
  	"By now, only creation method is newFrom:"
  
  	| cs1 wcs1 cs2 wcs2 byteString wideString |
  	byteString := 'aeiouy'.
  	wideString := 'aeiouy' copyWith: 340 asCharacter.
  
  	cs1 := CharacterSet newFrom: byteString.
  	wcs1 := WideCharacterSet newFrom: byteString.
+ 	self assert: (wcs1 = cs1).
+ 	self assert: (wcs1 size = byteString "asSet" size).
- 	self should: [wcs1 = cs1].
- 	self should: [wcs1 size = byteString "asSet" size].
  	
  	cs2 := CharacterSet newFrom: wideString.
  	wcs2 := WideCharacterSet newFrom: wideString.
+ 	self assert: (wcs2 = cs2).
+ 	self assert: (wcs2 size = wideString "asSet" size).
- 	self should: [wcs2 = cs2].
- 	self should: [wcs2 size = wideString "asSet" size].
  	
+ 	self assert: ((byteString indexOfAnyOf: wcs1) = 1) description: 'This should used optimized byteArrayMap method'.
+ 	self assert: ((byteString indexOfAnyOf: wcs2) = 1) description: 'This should used optimized byteArrayMap method'.
- 	self should: [(byteString indexOfAnyOf: wcs1) = 1] description: 'This should used optimized byteArrayMap method'.
- 	self should: [(byteString indexOfAnyOf: wcs2) = 1] description: 'This should used optimized byteArrayMap method'.
  	
+ 	self assert: (('bcd' indexOfAnyOf: wcs1) = 0) description: 'This should used optimized byteArrayMap method'.
+ 	self assert: (('bcd' indexOfAnyOf: wcs2) = 0) description: 'This should used optimized byteArrayMap method'.!
- 	self should: [('bcd' indexOfAnyOf: wcs1) = 0] description: 'This should used optimized byteArrayMap method'.
- 	self should: [('bcd' indexOfAnyOf: wcs2) = 0] description: 'This should used optimized byteArrayMap method'.!



More information about the Squeak-dev mailing list