[squeak-dev] The Trunk: KernelTests-dtl.281.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Oct 30 00:06:53 UTC 2014


David T. Lewis uploaded a new version of KernelTests to project The Trunk:
http://source.squeak.org/trunk/KernelTests-dtl.281.mcz

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

Name: KernelTests-dtl.281
Author: dtl
Time: 29 October 2014, 8:00:05.411 pm
UUID: 4e5a309c-94d6-4dad-bc92-0dfa1d0ac7a5
Ancestors: KernelTests-nice.280

Fix testCull methods to correspond to current behavior of block closures.
Existing test failures were masked by test methods that required recompilation.

Reference squeak-dev:

Date: Sun, 26 Oct 2014 02:35:23 +0200 (CEST)
From: Levente Uzonyi <leves at elte.hu>
To: The general-purpose Squeak developers list <squeak-dev at lists.squeakfoundation.org>
Subject: Re: [squeak-dev] Why isn't BlockClosureTest>>testCull failing?
  
I think that behavior was changed not too long ago (1-2 years maybe). If
you decompile the method you'll see that it's actually

        self
                assert: 1
                equals: ([:x | x]
                                cull: 1).

It's because Squeak used to return the value of the last argument if the
block was empty, but had arguments.
The code should be

        self assert: nil equals: ([ :x | ] cull: 1).

Levente

On Sat, 25 Oct 2014, David T. Lewis wrote:

>If we have this:
>       [ :x | ] value: 1 ==> nil
>
>And this:
>       ([ :x | ] cull: 1) ==> nil
>
>But in BlockClosureTest>>testCull, we have this:
>
>       self assert: 1 equals: ([ :x | ] cull: 1).
>
>The test passes. How is this possible?

=============== Diff against KernelTests-nice.280 ===============

Item was changed:
  ----- Method: BlockClosureTest>>testCull (in category 'tests - evaluating') -----
  testCull
  	self assert: nil equals: ([ ] cull: 1).
+ 	self assert: nil equals: ([ :x | ] cull: 1).
+ 	self assert: 1 equals: ([ :x | x ] cull: 1).
- 	self assert: 1 equals: ([ :x | ] cull: 1).
  	self should: [ [ :x :y | ] cull: 1 ] raise: Error.
  	self should: [ [ :x :y :z | ] cull: 1 ] raise: Error.
  	self should: [ [ :x :y :z :a | ] cull: 1 ] raise: Error.
  	self should: [ [ :x :y :z :a :b | ] cull: 1 ] raise: Error.
  	self assert: ([ 0 ] cull: 1) = 0.
  	self assert: ([ :x | x ] cull: 1) = 1	!

Item was changed:
  ----- Method: BlockClosureTest>>testCullCull (in category 'tests - evaluating') -----
  testCullCull
  	self assert: nil equals: ([ ] cull: 1 cull: 2).
+ 
+ 	self assert: nil equals: ([ :x | ] cull: 1 cull: 2).
+ 	self assert: 1 equals: ([ :x | x ] cull: 1 cull: 2).
+ 
+ 	self assert: nil equals: ([ :x :y | ] cull: 1 cull: 2).
+ 	self assert: 1 equals: ([ :x :y | x ] cull: 1 cull: 2).
+ 	self assert: 2 equals: ([ :x :y | y ] cull: 1 cull: 2).
+ 
- 	self assert: 1 equals: ([ :x | ] cull: 1 cull: 2).
- 	self assert: 2 equals: ([ :x :y | ] cull: 1 cull: 2).
  	self should: [ [ :x :y :z | ] cull: 1 cull: 2 ] raise: Error.
  	self should: [ [ :x :y :z :a | ] cull: 1 cull: 2 ] raise: Error.
  	self should: [ [ :x :y :z :a :b | ] cull: 1 cull: 2 ] raise: Error.
  	self assert: ([ 0 ] cull: 1 cull: 2) = 0.
  	self assert: ([ :x | x ] cull: 1 cull: 2) = 1.
  	self assert: ([ :x :y | y ] cull: 1 cull: 2) = 2.	!

Item was changed:
  ----- Method: BlockClosureTest>>testCullCullCull (in category 'tests - evaluating') -----
  testCullCullCull
  	self assert: nil equals: ([ ] cull: 1 cull: 2 cull: 3).
+ 
+ 	self assert: nil equals: ([ :x | ] cull: 1 cull: 2 cull: 3).
+ 	self assert: 1 equals: ([ :x | x ] cull: 1 cull: 2 cull: 3).
+ 
+ 	self assert: nil equals: ([ :x :y | ] cull: 1 cull: 2 cull: 3).
+ 	self assert: 1 equals: ([ :x :y | x ] cull: 1 cull: 2 cull: 3).
+ 	self assert: 2 equals: ([ :x :y | y ] cull: 1 cull: 2 cull: 3).
+ 
+ 	self assert: nil equals: ([ :x :y :z | ] cull: 1 cull: 2 cull: 3).
+ 	self assert: 1 equals: ([ :x :y :z | x ] cull: 1 cull: 2 cull: 3).
+ 	self assert: 2 equals: ([ :x :y :z | y ] cull: 1 cull: 2 cull: 3).
+ 	self assert: 3 equals: ([ :x :y :z | z ] cull: 1 cull: 2 cull: 3).
+ 
- 	self assert: 1 equals: ([ :x | ] cull: 1 cull: 2 cull: 3).
- 	self assert: 2 equals: ([ :x :y | ] cull: 1 cull: 2 cull: 3).
- 	self assert: 3 equals: ([ :x :y :z | ] cull: 1 cull: 2 cull: 3).
  	self should: [ [ :x :y :z :a | ] cull: 1 cull: 2 cull: 3 ] raise: Error.
  	self should: [ [ :x :y :z :a :b | ] cull: 1 cull: 2 cull: 3 ] raise: Error.
  	self assert: ([ 0 ] cull: 1 cull: 2 cull: 3) = 0.
  	self assert: ([ :x | x ] cull: 1 cull: 2 cull: 3) = 1.
  	self assert: ([ :x :y | y ] cull: 1 cull: 2 cull: 3) = 2.
  	self assert: ([ :x :y :z | z ] cull: 1 cull: 2 cull: 3) = 3.	!

Item was changed:
  ----- Method: BlockClosureTest>>testCullCullCullCull (in category 'tests - evaluating') -----
  testCullCullCullCull
  	self assert: nil equals: ([ ] cull: 1 cull: 2 cull: 3 cull: 4).
+ 
+ 	self assert: nil equals: ([ :x | ] cull: 1 cull: 2 cull: 3 cull: 4).
+ 	self assert: 1 equals: ([ :x | x ] cull: 1 cull: 2 cull: 3 cull: 4).
+ 
+ 	self assert: nil equals: ([ :x :y | ] cull: 1 cull: 2 cull: 3 cull: 4).
+ 	self assert: 1 equals: ([ :x :y | x ] cull: 1 cull: 2 cull: 3 cull: 4).
+ 	self assert: 2 equals: ([ :x :y | y ] cull: 1 cull: 2 cull: 3 cull: 4).
+ 
+ 	self assert: nil equals: ([ :x :y :z | ] cull: 1 cull: 2 cull: 3 cull: 4).
+ 	self assert: 1 equals: ([ :x :y :z | x ] cull: 1 cull: 2 cull: 3 cull: 4).
+ 	self assert: 2 equals: ([ :x :y :z | y ] cull: 1 cull: 2 cull: 3 cull: 4).
+ 	self assert: 3 equals: ([ :x :y :z | z ] cull: 1 cull: 2 cull: 3 cull: 4).
+ 
+ 	self assert: nil equals: ([ :x :y :z :a | ] cull: 1 cull: 2 cull: 3 cull: 4).
+ 	self assert: 1 equals: ([ :x :y :z :a | x ] cull: 1 cull: 2 cull: 3 cull: 4).
+ 	self assert: 2 equals: ([ :x :y :z :a | y ] cull: 1 cull: 2 cull: 3 cull: 4).
+ 	self assert: 3 equals: ([ :x :y :z :a | z ] cull: 1 cull: 2 cull: 3 cull: 4).
+ 	self assert: 4 equals: ([ :x :y :z :a | a ] cull: 1 cull: 2 cull: 3 cull: 4).
+ 
- 	self assert: 1 equals: ([ :x | ] cull: 1 cull: 2 cull: 3 cull: 4).
- 	self assert: 2 equals: ([ :x :y | ] cull: 1 cull: 2 cull: 3 cull: 4).
- 	self assert: 3 equals: ([ :x :y :z | ] cull: 1 cull: 2 cull: 3 cull: 4).
- 	self assert: 4 equals: ([ :x :y :z :a | ] cull: 1 cull: 2 cull: 3 cull: 4).
  	self should: [ [ :x :y :z :a :b | ] cull: 1 cull: 2 cull: 3 cull: 4 ] raise: Error.
  	self assert: ([ 0 ] cull: 1 cull: 2 cull: 3 cull: 4) = 0.
  	self assert: ([ :x | x ] cull: 1 cull: 2 cull: 3 cull: 4) = 1.
  	self assert: ([ :x :y | y ] cull: 1 cull: 2 cull: 3 cull: 4) = 2.
  	self assert: ([ :x :y :z | z ] cull: 1 cull: 2 cull: 3 cull: 4) = 3.
  	self assert: ([ :x :y :z :a | a ] cull: 1 cull: 2 cull: 3 cull: 4) = 4.!



More information about the Squeak-dev mailing list