Stéphane Ducasse | 1 Apr 2010 09:59
Picon
Picon
Favicon
Gravatar

Re: Test for Collection>>sorted


On Apr 1, 2010, at 8:50 AM, Hilaire Fernandes wrote:

> Stéphane Ducasse a écrit :
>> On Mar 31, 2010, at 5:38 PM, Hilaire Fernandes wrote:
>>> I wrote two tests on the ArrayTest collection to test #sorted and #sorted:
>>> #sorted broke, it is easy to fix.
>>> 
>>> I guess we need to write these tests for the whole CollectionTest hierarchy.  I noted there is a
CollectionRootTest using trait, however when looking at the asSortedCollection tests, it is reapeatly
written for almost each classes of the hierarchy, and not in the CollectionRootTest using inheritance mechanism.
>>> Any reason for that?
>> Hilaire you should read the paper on traits.
> 
> pointer on *one* good tutorial? I think I already read something. A small memento on the syntax to define
and to use trait will be enough to get started comfortably. If there are such a things I suggest we add it in
good place in the pharo web site (along a paper on unit test); these features are essential parts --
features -- of Pharo, so why not emphasis it.

this is on my todo for the next book but well other people could help...

> Btw, it would be a nice idea to convert an html version of the Pharo by example book, so we can have direct
pointer to chapter from the pharo web site. It should be doable with latex2html. In the past I used
hyperlatex to produce both nice html and pdf version of DrGeo manual (http://documentation.ofset.org/drgeo/fr/drgenius_51.html)

I do not have time for that.

> Probably sorted does not make sense on all collection so we define a trait and apply it when needed.
> 
> Yes. What about writing like bellow? Is it acceptable or is it cumbersome?
> 
> 
> testSorted
> 	self unsortedCollection ifNotNil: [self assert: ....]
> 
> 
> Matrix>>unosrtedCollection
> ^ nil
> 
> Arary>>unosrtedCollection
> ^ #(5 9 1 3 2)

Yes the idea is that you define a couple of methods in your testTraits

	testNilSorted
	testSorted
	testSortedWithDuplicates
	testAlreadySorted
	testSortedCollectionIsANewCollection

they will rely on different accessors

	testNilSorted
	
		self assert: self emptyCollection sorted isEmpty

ArrayTest
	uses: TSorted

and since emptyCollection is already defined you are done.

Now if you have 
	
testSorted
	
	self assert: self aNonEmptyCollection sorted = self sortedCollection

ArrayTest>>	aNonEmptyCollection
	^ #(3 6 1 20 -3)

ArrayTest>>	sortedCollection
	^ #(-3 1 3 6 20)
	
Stef

> 
> 
>> Traits are simple, just have a look. I did a presentation at esug about them.
> 
> 
> 
> _______________________________________________
> Pharo-project mailing list
> Pharo-project@...
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Gmane