[Pharo-project] TestCase>>#assert:equals: optimization

Stéphane Ducasse stephane.ducasse at inria.fr
Thu Mar 15 17:47:33 EDT 2012


thanks stefan 
Can you open a bug tracker and publish your code with a slice or a cs so that our crawler can handle it automatically?
Yes we are getting professional thanks for camillo and ben :)

Stef

On Mar 15, 2012, at 8:58 PM, Stefan Marr wrote:

> Hi:
> 
> While stepping through bytecodes, I noticed a slightly annoying inefficiency in the SUnit implementation.
> The description string in #assert:equals: is always computed, even if it is not necessary.
> 
> While that might not be a performance problem, I find it rather distracting when I have to debug on the bytecode/VM level.
> 
> Since there seem to be only 127 senders or so in the image, you will probably not notice a big performance gain.
> The change to compute the string only when necessary is below.
> 
> Best regards
> Stefan
> 
> PS: This is a resend, because the original mail seemed to have been lost, while the mailing list was down.
> 
> 
> !TestCase methodsFor: 'asserting' stamp: 'StefanMarr 3/13/2012 23:41'!
> assert: aBooleanOrBlock description: aStringOrBlock
> 	aBooleanOrBlock value ifFalse: [
> 		| aString |
> 		aString := aStringOrBlock value.
> 		self logFailure: aString.
> 		TestResult failure signal: aString]
> 			! !
> 
> !TestCase methodsFor: 'asserting' stamp: 'StefanMarr 3/13/2012 23:40'!
> assert: aBooleanOrBlock description: aStringOrBlock resumable: resumableBoolean 
> 	| exception |
> 	aBooleanOrBlock value
> 		ifFalse: 
> 			[|aString|
> 			aString := aStringOrBlock value.
> 			self logFailure: aString.
> 			exception := resumableBoolean
> 						ifTrue: [TestResult resumableFailure]
> 						ifFalse: [TestResult failure].
> 			exception signal: aString]
> 			! !
> 
> !TestCase methodsFor: 'asserting' stamp: 'StefanMarr 3/13/2012 23:40'!
> assert: expected equals: actual
> 	^ self
> 		assert: (expected = actual)
> 		description: [self comparingStringBetween: actual and: expected]
> ! !
> 
> 
> -- 
> Stefan Marr
> Software Languages Lab
> Vrije Universiteit Brussel
> Pleinlaan 2 / B-1050 Brussels / Belgium
> http://soft.vub.ac.be/~smarr
> Phone: +32 2 629 2974
> Fax:   +32 2 629 3525
> 
> 





More information about the Pharo-dev mailing list