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

Reply via email to