http://code.google.com/p/pharo/issues/detail?id=784
On Apr 30, 2009, at 10:33 AM, Cyrille Delaunay wrote: > Hello > > I'm Cyrille Delaunay, I work for the RMOD Inria team. > I'm currently working on tests for the Pharo Collection Library > using traits. > I've modified, added some traits and therefore redifined things in > test classes to attempt to get a best coverage. > (For the moment : Arraytest , BagTest , DictionaryTest , IntervalTest > , OrderedCollectionTest , SetTest , SortedCollectionTest StringTest , > SymbolTest , LinkedListTest ). > All modification have been saved in 'PharoTaskForces'. > With a static coverage tool (also saved in PharoTaskPhorces ) > removing noise > for each class (methods defined too high in hierarchy that are not > appropriated , > private methods , very specific methods that may should not be tested > for collection ), I got those coverage : > > Arraytest : tested at 94.5 % > BagTest : 88.4 % > DictionaryTest: 85 % > IntervalTest : 93 % > OrderedCollectionTest : 93.9% > SetTest : 85.9% > SortedCollectionTest : 92.3 % > StringTest : 91% > LinkedListTest : 90.5 % > > > Here are the more important modifications i've made about traits : > > -> new trait TConvertTest : > testing converting methods (such that 'asArray,' asBag', .. ) > > > -> new trait 'TSortTrait' : > testing sorting methods for 'ArrayedCollection'. > -sort > -sort: > -isSorted > -isSortedBy: > > > -> new trait: 'TCopySequenceable' : > testing copying methods using an order, an index access > (copyAfter: for example) > > > -> new trait 'TOccurrencesTest' : > testing method : > -> OccurencesOf: > > > -> new trait: TIterateSequencedReadableTest' > testing iterating methods using a specific order > ( usable therefore only by sequenceable collection ) > > -> new trait: 'TConcatenaionTest' > Bad initial version (specific to sequenceable collection) > Split into two trait: > -> TSequencedConcatenationTest (initial version) > -> TConcatenationTest (to do) > > - > new trait: 'TReplacementSequencedTest' > testing replacemnt methods : > - replaceAll:with: > - replaceFrom:to:with: > - replaceFrom:to:with:startingAt: > for Sequenced Collection > > -> Modification of all the methods in 'TIndexAccessingTest' > making them independent of elements in collection's Type.( so that it > can be used with all type of sequenceable collection like 'String'). > > -> > -> modification of all the tests in 'TAsStringAndDelimiterTest' > making its independent of the elements' type in collection. > 'TAsStringAndDelimiterTest' added to 'ArrayTest'. > > -> redefinition of 'TAsStringCommaAndDelimiterTest' which were > specific to sequenceable collection (and didn't work for 'BagTest'). > The initial version has been kept in a new trait: > 'TAsStringCommaAndDelimiterSequenceableTest'. > > > -> with new trait: 'TBeginsEndsWith' testing methods: > - beginsWith: > - endsWith: > > -> Remodularisation of the initial trait 'TIndexAccessing' (which > became to big) > Split into three traits: > - methods like 'indexOf' added to the New trait 'IndexAccess' . > - methods concerning 'SubCollectionAccess' added to a new trait: > 'TSubCollectionAccess'. > - methods concerning elements access added to a new trait : > 'TSequencedElementAccessTest' > > -> new trait: 'TPrintTest' > testing 'stream printing' methods > > Modification of TPrintTest wich was specific to sequenceable > collections. Initial version has been kept in a new trait : > TPrintSequencedTest > > > > -> Modification of TConvertTest wich tested some methods > (asSet, asIdentitySet) for duplicate contents what can't work for > Interval or Collection without equel elements. > Creation of a new trait : 'TConvertAsSetForMultiplinessTest'. > > > -> Remodularisation of TCopySequenceableTest wich were too big. > Creation of a new trait : > > -> TCopySequenceableSameContents > testing copying methods that only change the order of > elements > and don't remove or add any elements to the copy. > > -> TCopyPartOfSequenceable > testing copying methods that only copy a part of a > collection > (copyAfter: copyUpTo: ) > > -> TCopySequenceableWithOrWithoutSpecificElements > testing copying methods ( from the initial trait > TCopySequenceable ) that copy the collection > with more or less > specified elements . > > -> 'TCopySequenceableWithReplacement' > testing copying methods ( from the initial version of > TSequenceableTest ) that copy and replace > subcollections in the > receiver. > > -> Refinition of all tests in TIndexAccess so that they required a > simple collection without equal element and test the 'Standard' > comportement that come with. Therefore, it can be used by collections > that don't allowed duplicate elements. > The aspect of 'multiple occurrences' was puted into a new trait: > TIndexAccessForMultipliness > ( this aspect is important for 'lastIndexOf:' or 'identityIndexOf:' > for exemple ) > > > -> modification of all methods in TAddTest. > those methods used always directly 'self collection' to test if an > element had been added . > For example : self assert: self collection size = oldsize + 1 > > That didn't work if required methods returned a new object at each > time > and not an instance variable of the classTest. > TAddTest use now its own copies of required collection to be > independant of the way the method is given by the ClassTest. > > -> new trait: > - TRmoveByIndexTest > testing methods for removing by index access > (used at least by OrderedCollection and SortedCollection) > > -> new trait: > - TCopyPartOfSequenceableForMultipliness > testing the specific comportement with duplicate for methods in > TCopyPartOfSequenceable. > TCopyPartOfSequenceable can now be used by collection that don't > allowed duplicate elements. > > -> new traits : > - TCopySequenceableWithReplacementForSorted > testing specific comportement of methods like 'copyReplaceAll:with:' > for sorted collection. > > -> redefinition of trait : 'TIterateTest' (in a new trait > 'TIterateNew'). > This trait required a specific collection of integer and many tests > depended on the fact that elements were SmallInteger. > As this trait test iterating methods for all collections ( it is used > by 'CollectionRootTest' ), it should work for every kind of > collection and therfore every kind of elements in ( it should, for > example, work for 'LinkedList' that use 'Link' elements ) > The new trait work now for 'LinkedListTest'. > > -> Modification of all tests in 'TIterateSequencedReadableTest' > ( in the same way and for the same reasons than 'TItereateTest' ) > > -> Modification of test: > testAsCommaStringMore > in trait 'TAsStringCommaAndDelimiterSequenceableTest' > so that it works also with elements for wich 'asString' return a > String including ' '. > (for example: Link new asSTring returns: 'a Link') > > > -> TConvertTest split into two Traits. > All methods converting into a sorted collection are now tested in a > new trait: TConvertAsSortedTest so that collections that can't > include 'sortable' elements (LinkedList for example ) can use > TConvertTest. > TConvertAsSorted is specific to collection that can include sortable > elements. > > > -> Modification of TConvertTest wich tested some methods > (asSet, asIdentitySet) for duplicate contents what can't work for > Interval or Collection without equel elements. > Creation of a new trait : 'TConvertAsSetForMultiplinessTest'. > > > -> Remodularisation of TCopySequenceableTest wich were too big. > Creation of a new trait : > > -> TCopySequenceableSameContents > testing copying methods that only change the order of > elements > and don't remove or add any elements to the copy. > > -> TCopyPartOfSequenceable > testing copying methods that only copy a part of a > collection > (copyAfter: copyUpTo: ) > > -> TCopySequenceableWithOrWithoutSpecificElements > testing copying methods ( from the initial trait > TCopySequenceable ) that copy the collection > with more or less > specified elements . > > -> 'TCopySequenceableWithReplacement' > testing copying methods ( from the initial version of > TSequenceableTest ) that copy and replace > subcollections in the > receiver. > > -> Refinition of all tests in TIndexAccess so that they required a > simple collection without equal element and test the 'Standard' > comportement that come with. Therefore, it can be used by collections > that don't allowed duplicate elements. > The aspect of 'multiple occurrences' was puted into a new trait: > TIndexAccessForMultipliness > ( this aspect is important for 'lastIndexOf:' or 'identityIndexOf:' > for exemple ) > > > -> modification of all methods in TAddTest. > those methods used always directly 'self collection' to test if an > element had been added . > For example : self assert: self collection size = oldsize + 1 > > That didn't work if required methods returned a new object at each > time > and not an instance variable of the classTest. > TAddTest use now its own copies of required collection to be > independant of the way the method is given by the ClassTest. > > -> new trait: > - TRmoveByIndexTest > testing methods for removing by index access > (used at least by OrderedCollection and SortedCollection) > > -> new trait: > - TCopyPartOfSequenceableForMultipliness > testing the specific comportement with duplicate for methods in > TCopyPartOfSequenceable. > TCopyPartOfSequenceable can now be used by collection that don't > allowed duplicate elements. > > -> new traits : > - TCopySequenceableWithReplacementForSorted > testing specific comportement of methods like 'copyReplaceAll:with:' > for sorted collection. > > -> redefinition of trait : 'TIterateTest' (in a new trait > 'TIterateNew'). > This trait required a specific collection of integer and many tests > depended on the fact that elements were SmallInteger. > As this trait test iterating methods for all collections ( it is used > by 'CollectionRootTest' ), it should work for every kind of > collection and therfore every kind of elements in ( it should, for > example, work for 'LinkedList' that use 'Link' elements ) > The new trait work now for 'LinkedListTest'. > > -> Modification of all tests in 'TIterateSequencedReadableTest' > ( in the same way and for the same reasons than 'TItereateTest' ) > > -> Modification of test: > testAsCommaStringMore > in trait 'TAsStringCommaAndDelimiterSequenceableTest' > so that it works also with elements for wich 'asString' return a > String including ' '. > (for example: Link new asSTring returns: 'a Link') > > > -> TConvertTest split into two Traits. > All methods converting into a sorted collection are now tested in a > new trait: TConvertAsSortedTest so that collections that can't > include 'sortable' elements (LinkedList for example ) can use > TConvertTest. > TConvertAsSorted is specific to collection that can include sortable > elements. > > > _______________________________________________ > Pharo-project mailing list > [email protected] > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > _______________________________________________ Pharo-project mailing list [email protected] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
