'From Pharo3.0 of 18 March 2013 [Latest update: #30290] on 22 July 2013 at 1:14:06 pm'! WeakAnnouncerTest removeSelector: #newAnnouncer! AJRoutinePrologue removeSelector: #emitCode:! AJCallCleanup removeSelector: #callInfo! AJCallCleanup removeSelector: #callInfo:! AJx86GPRegister removeSelector: #stackSize! ASTBlockClosure removeSelector: #onDNU:do:! RBProgramNode removeSelector: #isBlock! AthensBalloonStrokePaint removeSelector: #asStrokePaintOn:! AthensBalloonEngine removeSelector: #clipRect:! AthensBalloonSurface removeSelector: #createRectanglePath:! CurveWorkshop removeSelector: #initialize! HashedCollection removeSelector: #copyEmpty! ReadStream removeSelector: #next:into:startingAt:! ByteString removeSelector: #asShortcut! !OrderedIdentityDictionary methodsFor: 'initialize' stamp: 'BenjaminVanRyseghem 7/10/2012 21:31'! initialize "Initialization code for OrderedIdentityDictionary" "This method is not used since new is overriden to use initalize:" keys := OrderedCollection new. super initialize. ! ! !OrderedIdentityDictionary methodsFor: 'initialize' stamp: 'BenjaminVanRyseghem 7/10/2012 21:25'! initialize: aNumber "Initialization code for OrderedIdentityDictionary" keys := OrderedCollection new. super initialize: aNumber! ! !OrderedIdentityDictionary methodsFor: 'initialize' stamp: 'BenjaminVanRyseghem 7/10/2012 21:31'! initialize "Initialization code for OrderedIdentityDictionary" "This method is not used since new is overriden to use initalize:" keys := OrderedCollection new. super initialize. ! ! !OrderedIdentityDictionary methodsFor: 'initialize' stamp: 'BenjaminVanRyseghem 7/10/2012 21:25'! initialize: aNumber "Initialization code for OrderedIdentityDictionary" keys := OrderedCollection new. super initialize: aNumber! ! SortedCollection class removeSelector: #new:streamContents:! SortedCollection class removeSelector: #streamSpecies! Heap removeSelector: #select:! SmallDictionary class removeSelector: #new! Matrix removeSelector: #includesAnyOf:! !SortedCollectionTest methodsFor: 'tests - as sorted collection'! testAsSortedArray | result collection | collection := self collectionWithSortableElements . result := collection asArray sort. self assert: (result class includesBehavior: Array). self assert: result isSorted. self assert: result size = collection size! ! !SortedCollectionTest methodsFor: 'requirements'! collectionWithCopy "return a collection of type 'self collectionWIithoutEqualsElements class' containing no elements equals ( with identity equality) but 2 elements only equals with classic equality" | result collection | collection := OrderedCollection withAll: self elementsCopyNonIdenticalWithoutEqualElements. collection add: collection first copy. result := self elementsCopyNonIdenticalWithoutEqualElements class withAll: collection. ^ result! ! !SortedCollectionTest methodsFor: 'tests - as sorted collection'! testAsSortedArray | result collection | collection := self collectionWithSortableElements . result := collection asArray sort. self assert: (result class includesBehavior: Array). self assert: result isSorted. self assert: result size = collection size! ! !SortedCollectionTest methodsFor: 'requirements'! collectionWithCopy "return a collection of type 'self collectionWIithoutEqualsElements class' containing no elements equals ( with identity equality) but 2 elements only equals with classic equality" | result collection | collection := OrderedCollection withAll: self elementsCopyNonIdenticalWithoutEqualElements. collection add: collection first copy. result := self elementsCopyNonIdenticalWithoutEqualElements class withAll: collection. ^ result! ! !FloatArrayTest methodsFor: 'tests - as sorted collection'! testAsSortedArray | result collection | collection := self collectionWithSortableElements . result := collection asArray sort. self assert: (result class includesBehavior: Array). self assert: result isSorted. self assert: result size = collection size! ! !FloatArrayTest methodsFor: 'tests - puting with indexes'! testSwapWith "self debug: #testSwapWith" | result index | index := self indexArray anyOne. result:= self nonEmpty copy . result swap: index with: 1. self assert: (result at: index) = (self nonEmpty at:1). self assert: (result at: 1) = (self nonEmpty at: index). ! ! !FloatArrayTest methodsFor: 'tests - as sorted collection'! testAsSortedArray | result collection | collection := self collectionWithSortableElements . result := collection asArray sort. self assert: (result class includesBehavior: Array). self assert: result isSorted. self assert: result size = collection size! ! !FloatArrayTest methodsFor: 'tests - puting with indexes'! testSwapWith "self debug: #testSwapWith" | result index | index := self indexArray anyOne. result:= self nonEmpty copy . result swap: index with: 1. self assert: (result at: index) = (self nonEmpty at:1). self assert: (result at: 1) = (self nonEmpty at: index). ! ! !SetTest methodsFor: 'tests - growable'! testAddEmptyGrows "self debug: #testAddEmptyGrows" | oldSize | oldSize := self empty size. self empty add: self element. self assert: (self empty size) = (oldSize + 1).! ! !SetTest methodsFor: 'tests - copy'! testCopyEmptyWithout "self debug: #testCopyEmptyWithout" | res | res := self empty copyWithout: self elementToAdd. self assert: res size = self empty size. self deny: (res includes: self elementToAdd)! ! !SetTest methodsFor: 'tests - copy'! testCopyNonEmptyWithoutAll "self debug: #testCopyNonEmptyWithoutAll" | res | res := self nonEmpty copyWithoutAll: self collectionWithElementsToRemove. "here we do not test the size since for a non empty set we would get a problem. Then in addition copy is not about duplicate management. The element should be in at the end." self collectionWithElementsToRemove do: [ :each | self deny: (res includes: (each)) ]. self nonEmpty do: [ :each | (self collectionWithElementsToRemove includes: each) ifFalse: [ self assert: (res includes: each) ] ]! ! !SetTest methodsFor: 'tests - copy'! testCopyEmptyWithoutAll "self debug: #testCopyEmptyWithoutAll" | res | res := self empty copyWithoutAll: self collectionWithElementsToRemove. self assert: res size = self empty size. self collectionWithElementsToRemove do: [ :each | self deny: (res includes: each) ]! ! !SetTest methodsFor: 'tests - copy'! testCopyNonEmptyWithoutNotIncluded "self debug: #testCopyNonEmptyWithoutNotIncluded" | res | res := self nonEmpty copyWithout: self elementToAdd. "here we do not test the size since for a non empty set we would get a problem. Then in addition copy is not about duplicate management. The element should be in at the end." self nonEmpty do: [ :each | self assert: (res includes: each) ]! ! !SetTest methodsFor: 'tests - adding uniquely'! testAddNewElementIncrementsSize | added oldSize | oldSize := self collectionWithoutElement size. self deny: (self collectionWithoutElement includes: self element). added := self collectionWithoutElement add: self element. self assert: added = self element. self assert: (self collectionWithoutElement includes: self element). self assert: self collectionWithoutElement size = (oldSize + 1)! ! !SetTest methodsFor: 'tests - adding uniquely'! testTAddIfNotPresentWithNewElement | added oldSize | oldSize := self collectionWithoutElement size. self deny: (self collectionWithoutElement includes: self element). added := self collectionWithoutElement addIfNotPresent: self element. self assert: added = self element. self assert: (self collectionWithoutElement includes: self element). self assert: self collectionWithoutElement size = (oldSize + 1)! ! !SetTest methodsFor: 'tests - as sorted collection'! testAsSortedArray | result collection | collection := self collectionWithSortableElements . result := collection asArray sort. self assert: (result class includesBehavior: Array). self assert: result isSorted. self assert: result size = collection size! ! !SetTest methodsFor: 'tests - growable'! testAddEmptyGrows "self debug: #testAddEmptyGrows" | oldSize | oldSize := self empty size. self empty add: self element. self assert: (self empty size) = (oldSize + 1).! ! !SetTest methodsFor: 'tests - copy'! testCopyEmptyWithout "self debug: #testCopyEmptyWithout" | res | res := self empty copyWithout: self elementToAdd. self assert: res size = self empty size. self deny: (res includes: self elementToAdd)! ! !SetTest methodsFor: 'tests - copy'! testCopyNonEmptyWithoutAll "self debug: #testCopyNonEmptyWithoutAll" | res | res := self nonEmpty copyWithoutAll: self collectionWithElementsToRemove. "here we do not test the size since for a non empty set we would get a problem. Then in addition copy is not about duplicate management. The element should be in at the end." self collectionWithElementsToRemove do: [ :each | self deny: (res includes: (each)) ]. self nonEmpty do: [ :each | (self collectionWithElementsToRemove includes: each) ifFalse: [ self assert: (res includes: each) ] ]! ! !SetTest methodsFor: 'tests - copy'! testCopyEmptyWithoutAll "self debug: #testCopyEmptyWithoutAll" | res | res := self empty copyWithoutAll: self collectionWithElementsToRemove. self assert: res size = self empty size. self collectionWithElementsToRemove do: [ :each | self deny: (res includes: each) ]! ! !SetTest methodsFor: 'tests - copy'! testCopyNonEmptyWithoutNotIncluded "self debug: #testCopyNonEmptyWithoutNotIncluded" | res | res := self nonEmpty copyWithout: self elementToAdd. "here we do not test the size since for a non empty set we would get a problem. Then in addition copy is not about duplicate management. The element should be in at the end." self nonEmpty do: [ :each | self assert: (res includes: each) ]! ! !SetTest methodsFor: 'tests - adding uniquely'! testAddNewElementIncrementsSize | added oldSize | oldSize := self collectionWithoutElement size. self deny: (self collectionWithoutElement includes: self element). added := self collectionWithoutElement add: self element. self assert: added = self element. self assert: (self collectionWithoutElement includes: self element). self assert: self collectionWithoutElement size = (oldSize + 1)! ! !SetTest methodsFor: 'tests - adding uniquely'! testTAddIfNotPresentWithNewElement | added oldSize | oldSize := self collectionWithoutElement size. self deny: (self collectionWithoutElement includes: self element). added := self collectionWithoutElement addIfNotPresent: self element. self assert: added = self element. self assert: (self collectionWithoutElement includes: self element). self assert: self collectionWithoutElement size = (oldSize + 1)! ! !SetTest methodsFor: 'tests - as sorted collection'! testAsSortedArray | result collection | collection := self collectionWithSortableElements . result := collection asArray sort. self assert: (result class includesBehavior: Array). self assert: result isSorted. self assert: result size = collection size! ! BagTest removeSelector: #expectedElementByDetect! BagTest removeSelector: #testAsSortedArray! BagTest removeSelector: #testCopyEmptyWith! BagTest removeSelector: #testCopyEmptyWithout! BagTest removeSelector: #testCopyEmptyWithoutAll! BagTest removeSelector: #testCopyNonEmptyWith! BagTest removeSelector: #testCopyNonEmptyWithoutAll! BagTest removeSelector: #testCopyNonEmptyWithoutNotIncluded! BagTest removeSelector: #testRemoveAllError! BagTest removeSelector: #testRemoveAllFoundIn! SetTest removeSelector: #test0TSizeTest! !SetTest reorganize! ('requirements' anotherElementOrAssociationNotIn result nonEmptyWithoutEqualElements secondCollection collectionWithSortableElements element collectionMoreThan5Elements collectionInForIncluding collectionWithoutNilElements collection firstCollection collectionWithoutElement nonEmpty1Element integerCollectionWithoutEqualElements collectionWithElementsToRemove collectionWithoutEqualElements collectionWithElement collectionOfFloat anotherElementOrAssociationIn collectionWithCopyNonIdentical collectionNotIncluded elementInForIncludesTest) ('tests - size capacity' emptyButAllocatedWith20 sizeCollection) ('tests - copy - clone' testCopyNonEmpty testCopyCreatesNewObject testCopyEmpty) ('tests' testRemoveAll) ('tests - converting' assertNonDuplicatedContents:whenConvertedTo: testAsOrderedCollection testAsByteArray testAsArray assertNoDuplicates:whenConvertedTo: testAsBag assertSameContents:whenConvertedTo: testAsIdentitySet) ('test - iterate' speciesClass selectedNumber expectedSizeAfterReject testDoWithoutNoDuplicates) ('tests - as string comma delimiter sequenceable' testAsStringOnDelimiterLastMore testAsStringOnDelimiterMore testAsStringOnDelimiterLastEmpty testAsStringOnDelimiterEmpty testAsCommaStringOne testAsStringOnDelimiterOne testAsCommaStringEmpty testAsCommaStringMore testAsStringOnDelimiterLastOne) ('tests - growable' testAddEmptyGrows testAddNonEmptyGrowsWhenNewElement) ('tests - empty' nonEmpty empty) ('tests - copy' testCopySameClass testCopyEmptyWithout testCopyNonEmptyWithoutAll testCopyNonEmptyWithoutAllNotIncluded testCopyEmptyWith testCopyNonEmptyWith testCopyEmptyWithoutAll testCopyNotSame testCopyEquals testCopyNonEmptyWithoutNotIncluded testCopyNonEmptyWithout) ('tests - adding uniquely' testAddAlreadyThereDoesNotCount testTAddIfNotPresentWithElementAlreadyIn testAddNewElementIncrementsSize testTAddIfNotPresentWithNewElement) ('tests - occurrencesOf' testOccurrencesOfNotIn testOccurrencesOf testOccurrencesOfEmpty) ('test - equality' testEqualSignOfIdenticalCollectionObjects testEqualSignIsTrueForNonIdenticalButEqualCollections testEqualSign) (#coverage classToBeTested) ('test - creation' testWithWithWith testWithAll testWith testWithWithWithWithWith testWithWith testWithWithWithWith) ('tests - with nil' testAllowInclusionOfNils) ('test - copy' elementToAdd) ('tests - set arithmetic' testDifferenceWithSeparateCollection containsAll:of:andOf: testDifference testUnionOfEmpties testIntersectionEmpty testIntersectionItself testIntersectionBasic testIntersectionTwoSimilarElementsInIntersection numberOfSimilarElementsInIntersection testDifferenceWithNonNullIntersection) ('tests - as sorted collection' testAsSortedCollection testAsSortedCollectionWithSortBlock testAsSortedArray) ('tests - printing' testPrintOnDelimiter testPrintOnDelimiterLast testPrintElementsOn testPrintOn testPrintNameOn testStoreOn) ('initialize' setUp) ('tests - concatenation' testConcatenationWithEmpty testConcatenation testConcatenationWithDuplicate) ('tests - includes' elementNotInForOccurrences testIncludesAnyNoneThere testIncludesElementIsNotThere testIncludesElementIsThere testIdentityIncludes anotherElementNotIn testIncludesAllNoneThere testIdentityIncludesNonSpecificComportement testIncludesAnyAllThere) ('tests - remove' testRemoveElementThatExists testRemoveElementReallyRemovesElement testRemoveAllFoundIn testRemoveElementFromEmpty testRemoveAllError testRemoveAllSuchThat) ('tests - fixture' test0FixtureRequirementsOfTGrowableTest test0FixtureAsStringCommaAndDelimiterTest test0FixtureConverAsSortedTest test0CopyTest test0FixtureSetAritmeticTest test0FixtureTRemoveTest test0TStructuralEqualityTest test0FixtureConcatenationTest test0FixtureIncludeTest test0FixtureCloneTest test0FixturePrintTest test0FixtureOccurrencesTest test0FixtureTConvertTest test0FixtureAddForUniquenessTest test0FixtureIncludeWithIdentityTest test0FixtureCreationWithTest) ('sunit original tests' testIncludes testIllegal testAdd testGrow testRemove testOccurrences) ('tests - iterating' testCollect) ('ambiguous' elementNotIn) ('some tests' testLike testSize2 testCopy testUnion testRemoveIfAbsent testDo2 testCollect2 testAsSet testIntersection testAddWithOccurences testAllSetsAreHealthy testCopyWithout testAtRandom) ! OrderedCollectionTest removeSelector: #collectionWithCopy! OrderedCollectionTest removeSelector: #collectionWithIdentical! OrderedCollectionTest removeSelector: #element! OrderedCollectionTest removeSelector: #testAsSortedArray! OrderedCollectionTest removeSelector: #testCopyEmptyWith! OrderedCollectionTest removeSelector: #testCopyEmptyWithout! OrderedCollectionTest removeSelector: #testCopyEmptyWithoutAll! OrderedCollectionTest removeSelector: #testCopyNonEmptyWith! OrderedCollectionTest removeSelector: #testCopyNonEmptyWithoutAll! OrderedCollectionTest removeSelector: #testCopyNonEmptyWithoutNotIncluded! OrderedCollectionTest removeSelector: #testIdentityIndexOf! OrderedCollectionTest removeSelector: #testIdentityIndexOfIAbsent! OrderedCollectionTest removeSelector: #testIndexOf! OrderedCollectionTest removeSelector: #testIndexOfIfAbsent! OrderedCollectionTest removeSelector: #testIndexOfStartingAt! OrderedCollectionTest removeSelector: #testIndexOfSubCollectionStartingAt! OrderedCollectionTest removeSelector: #testIndexOfSubCollectionStartingAtIfAbsent! OrderedCollectionTest removeSelector: #testLastIndexOf! OrderedCollectionTest removeSelector: #testLastIndexOfIfAbsent! OrderedCollectionTest removeSelector: #testLastIndexOfStartingAt! OrderedCollectionTest removeSelector: #testRemoveAllError! OrderedCollectionTest removeSelector: #testRemoveAllFoundIn! OrderedCollectionTest removeSelector: #testSwapWith! WeakKeyToCollectionDictionaryTest class removeSelector: #shouldInheritSelectors! WeakIdentityKeyDictionaryTest class removeSelector: #shouldInheritSelectors! DictionaryTest removeSelector: #collectionClass! DictionaryTest removeSelector: #testAsSortedArray! DictionaryTest removeSelector: #testDictionaryConcatenationWithoutCommonKeys! LinkedListTest removeSelector: #testIdentityIndexOf! LinkedListTest removeSelector: #testIdentityIndexOfIAbsent! LinkedListTest removeSelector: #testIndexOf! LinkedListTest removeSelector: #testIndexOfIfAbsent! LinkedListTest removeSelector: #testIndexOfStartingAt! LinkedListTest removeSelector: #testIndexOfSubCollectionStartingAt! LinkedListTest removeSelector: #testIndexOfSubCollectionStartingAtIfAbsent! LinkedListTest removeSelector: #testLastIndexOf! LinkedListTest removeSelector: #testLastIndexOfIfAbsent! LinkedListTest removeSelector: #testLastIndexOfStartingAt! LinkedListTest removeSelector: #testRemoveAllError! LinkedListTest removeSelector: #testRemoveAllFoundIn! FloatArrayTest removeSelector: #testIsEmpty! !FloatArrayTest reorganize! ('tests - concatenation' testConcatenationWithEmpty testConcatenation) ('tests - equality' testEqualSignForSequenceableCollections testHasEqualElementsIsTrueForNonIdenticalButEqualCollections testHasEqualElementsOfIdenticalCollectionObjects testHasEqualElements) ('tests - index accessing for multipliness' testIndexOfIfAbsentDuplicate testLastIndexOfDuplicate testLastIndexOfStartingAtDuplicate testLastIndexOfIfAbsentDuplicate testIndexOfDuplicate testIndexOfStartingAtDuplicate) ('tests - copying part of sequenceable' testCopyUpToLastEmpty testCopyAfter testCopyAfterEmpty testCopyUpToLast testCopyAfterLastEmpty testCopyAfterLast testCopyUpTo testCopyEmptyMethod testCopyFromTo testCopyUpToEmpty) ('tests - as sorted collection' testAsSortedCollection testAsSortedCollectionWithSortBlock testAsSortedArray) ('tests - copying with replacement' testCopyReplaceAllWithManyOccurence testCopyReplaceFromToWith firstIndexesOf:in: testCopyReplaceFromToWithInsertion testCopyReplaceAllWith1Occurence) ('tests - fixture' test0FixtureCopyWithOrWithoutSpecificElementsTest test0FixtureCopySameContentsTest test0FixtureCreationWithTest test0FixtureTConvertAsSetForMultiplinessTest test0TSequencedStructuralEqualityTest test0FixtureAsStringCommaAndDelimiterTest test0FixtureSetAritmeticTest test0FixtureIterateSequencedReadableTest test0FixtureIncludeTest test0FixtureCopyWithReplacementTest howMany:in: test0FixtureBeginsEndsWithTest test0FixtureTConvertTest test0TStructuralEqualityTest test0FixtureCloneTest test0FixtureCopyPartOfForMultipliness test0FixtureIndexAccessFotMultipliness test0FixtureIndexAccessTest test0FixtureIncludeWithIdentityTest test0FixtureSequencedConcatenationTest testOFixtureReplacementSequencedTest test0FixtureSequencedElementAccessTest test0CopyTest test0FixturePrintTest test0FixturePutOneOrMoreElementsTest test0FixtureAsSetForIdentityMultiplinessTest test0FixtureCopyPartOfSequenceableTest test0FixturePutTest test0FixtureSubcollectionAccessTest test0FixtureConverAsSortedTest test0SortingArrayedTest) ('tests - puting with indexes' testFromToPut testAtLastPut testSwapWith testAtAllIndexesPut testAtAllPut testAtWrapPut testAtAllPutAll) ('tests - printing' testPrintOnDelimiter testPrintOnDelimiterLast testPrintElementsOn testPrintOn testPrintNameOn testStoreOn) ('tests - including with identity' testIdentityIncludes) ('tests - copying with or without' testCopyWithoutFirst testCopyWithoutIndex testForceToPaddingStartWith testCopyWithFirst testForceToPaddingWith testCopyWithSequenceable) ('tests - copying same contents' testShuffled testShallowCopy testReversed testReverse testShallowCopyEmpty) ('tests - copying part of sequenceable for multipliness' testCopyAfterWithDuplicate testCopyUpToWithDuplicate testCopyUpToLastWithDuplicate testCopyAfterLastWithDuplicate) ('as yet unclassified' testStreamContentsProtocol testStreamContents testStreamContentsSized) ('tests - element accessing' testAtWrap testAtRandom testLast testAtLast testAfterIfAbsent testAtAll testAtPin testAtOutOfBounds testAtLastIfAbsent testAtIfAbsent testAt testBefore testFirstSecondThird testMiddle testAtLastError testBeforeIfAbsent testAfter) ('*Collections-arithmetic-testing' testArithmeticCoercion) ('tests - as identity set' testAsIdentitySetWithoutIdentityEqualsElements) ('test - creation' testWithWithWith testWithAll testOfSize testWith testWithWith testWithWithWithWithWith testWithWithWithWith) ('testing' testFloatArrayPluginPrimitiveAt testFloatArrayPluginPrimitiveAtPut) ('tests - iterate on sequenced reable collections' testPairsDo testReverseWithDo testFindFirstNotIn testAllButLastDo testWithIndexCollect testReverseDoEmpty testFindLast testFromToDo testWithIndexDo testWithDoError testAllButFirstDo testDetectSequenced testFindFirst testWithCollectError testKeysAndValuesDoEmpty testCollectFromTo testDo testFindLastNotIn testReverseDo testKeysAndValuesDo testPairsCollect testWithDo testWithCollect) ('tests - set arithmetic' testDifferenceWithNonNullIntersection testUnion testIntersectionBasic testIntersectionTwoSimilarElementsInIntersection containsAll:of:andOf: testDifferenceWithSeparateCollection numberOfSimilarElementsInIntersection testIntersectionItself testUnionOfEmpties testIntersectionEmpty testDifference) ('tests - replacing' testReplaceFromToWith testReplaceFromToWithStartingAt testReplaceAllWith) ('tests - copy' testCopySameClass testCopyEmptyWithout testCopyNonEmptyWithoutAll testCopyNonEmptyWithoutAllNotIncluded testCopyEmptyWith testCopyNonEmptyWith testCopyEmptyWithoutAll testCopyNotSame testCopyEquals testCopyNonEmptyWithoutNotIncluded testCopyNonEmptyWithout) ('tests - converting' assertNonDuplicatedContents:whenConvertedTo: testAsOrderedCollection testAsSet testAsArray assertNoDuplicates:whenConvertedTo: testAsBag assertSameContents:whenConvertedTo: testAsIdentitySet) ('requirements' collectionWith1TimeSubcollection anotherElementOrAssociationNotIn elementInForIndexAccessing newElement elementsCopyNonIdenticalWithoutEqualElements withEqualElements anotherValue moreThan4Elements oldSubCollection nonEmpty collectionWithSortableElements collectionWithoutNilElements collectionWith2TimeSubcollection secondIndex elementNotInForElementAccessing valueArray indexInForCollectionWithoutDuplicates collectionMoreThan5Elements anIndex collectionWithIdentical collectionWithElementsToRemove unsortedCollection aValue subCollectionNotIn empty sizeCollection sortedInAscendingOrderCollection collectionWithoutEqualElements secondCollection collectionMoreThan1NoDuplicates indexArray collection anotherElementOrAssociationIn firstIndex replacementCollection collectionWithSameAtEndAndBegining elementToAdd collectionWithNonIdentitySameAtEndAndBegining replacementCollectionSameSize elementNotIn indexInNonEmpty anotherElementNotIn collectionWithCopy elementInForReplacement moreThan3Elements collectionWithCopyNonIdentical collectionNotIncluded nonEmptyMoreThan1Element elementNotInForIndexAccessing firstCollection nonEmpty1Element collectionClass elementInForElementAccessing) ('tests - at put' testAtPut testAtPutTwoValues testAtPutOutOfBounds) ('tests - comma and delimiter' testAsStringOnDelimiterLastMore testAsStringOnDelimiterMore testAsStringOnDelimiterLastEmpty testAsStringOnDelimiterEmpty testAsCommaStringOne testAsStringOnDelimiterOne testAsCommaStringEmpty testAsCommaStringMore testAsStringOnDelimiterLastOne) ('tests - sorting' testIsSortedBy testSortUsingSortBlock testSortedUsingBlock testSorted testSort testIsSorted) ('tests - subcollections access' testAllButFirst testAllButLastNElements testFirstNElements testAllButFirstNElements testAllButLast testLastNElements) ('tests - includes' testIncludesAnyAllThere testIncludesElementIsNotThere testIncludesAnyNoneThere testIncludesAllNoneThere testIncludesElementIsThere) ('tests - index access' testIndexOfSubCollectionStartingAt testLastIndexOfStartingAt testIndexOfSubCollectionStartingAtIfAbsent testIndexOfIfAbsent testIndexOf testLastIndexOfIfAbsent testIndexOfStartingAtIfAbsent testLastIndexOf testIndexOfStartingAt) ('tests - begins ends with' testsBeginsWith testsEndsWith testsBeginsWithEmpty testsEndsWithEmpty) ('tests - copy - clone' testCopyNonEmpty testCopyCreatesNewObject testCopyEmpty) ('test - equality' testEqualSignOfIdenticalCollectionObjects testEqualSignIsTrueForEmptyButNonIdenticalCollections testEqualSignIsTrueForNonIdenticalButEqualCollections testEqualSign) ('running' setUp) ('tests - as set tests' testAsSetWithEqualsElements) ! SymbolTest removeSelector: #integerCollectionWithoutEqualElements! SymbolTest removeSelector: #testAsSortedArray! SymbolTest removeSelector: #testCopyEmptyWith! SymbolTest removeSelector: #testCopyEmptyWithout! SymbolTest removeSelector: #testCopyEmptyWithoutAll! SymbolTest removeSelector: #testCopyNonEmptyWith! SymbolTest removeSelector: #testCopyNonEmptyWithoutAll! SymbolTest removeSelector: #testCopyNonEmptyWithoutNotIncluded! !SymbolTest reorganize! ('tests - as sorted collection' testAsSortedCollection testAsSortedCollectionWithSortBlock testAsSortedArray) ('*System-Support' testAsClassIfPresent testAsClassIfAbsent testAsClass) ('tests' testNumArgsKeyword2 testNumArgsUnary testWithFirstCharacterDownshifted testAsMutator testNumArgsKeyword1 testCapitalized testNumArgsBinary testNumArgs2) ('as yet unclassified' testStreamContentsProtocol testStreamContents testStreamContentsSized) ('tests - begins ends with' testsBeginsWith testsEndsWith testsBeginsWithEmpty testsEndsWithEmpty) ('test - equality' testEqualSignOfIdenticalCollectionObjects testEqualSignIsTrueForEmptyButNonIdenticalCollections testEqualSignIsTrueForNonIdenticalButEqualCollections testEqualSign) ('tests - copy - clone' testCopyNonEmpty testCopyEmpty) ('tests - copying with or without' testCopyWithoutFirst testCopyWithoutIndex testForceToPaddingStartWith testCopyWithFirst testForceToPaddingWith testCopyWithSequenceable) ('tests - copying part of sequenceable for multipliness' testCopyAfterWithDuplicate testCopyUpToWithDuplicate testCopyUpToLastWithDuplicate testCopyAfterLastWithDuplicate) ('tests - as set tests' testAsIdentitySetWithEqualsElements testAsSetWithEqualsElements) ('tests - copying with replacement' testCopyReplaceAllWithManyOccurence testCopyReplaceFromToWith firstIndexesOf:in: testCopyReplaceFromToWithInsertion testCopyReplaceAllWith1Occurence) ('tests - equality' testEqualSignForSequenceableCollections testHasEqualElementsIsTrueForNonIdenticalButEqualCollections testHasEqualElementsOfIdenticalCollectionObjects testHasEqualElements) ('tests - index access' testIndexOfSubCollectionStartingAtIfAbsent testLastIndexOfStartingAt testLastIndexOfIfAbsent testIndexOfStartingAtIfAbsent testIndexOfSubCollectionStartingAt testIndexOf testIndexOfStartingAt testIndexOfIfAbsent testIdentityIndexOf testIdentityIndexOfIAbsent testLastIndexOf) ('tests - occurrencesOf for multipliness' testOccurrencesOfForMultipliness) ('tests - iterate on sequenced reable collections' testPairsDo testReverseWithDo testFindFirstNotIn testAllButLastDo testWithIndexCollect testReverseDoEmpty testFindLast testFromToDo testWithIndexDo testWithDoError testAllButFirstDo testDetectSequenced testFindFirst testWithCollectError testKeysAndValuesDoEmpty testCollectFromTo testDo testFindLastNotIn testReverseDo testKeysAndValuesDo testPairsCollect testWithDo testWithCollect) ('tests - printing' testPrintOnDelimiter testPrintOnDelimiterLast testPrintElementsOn testPrintOn testPrintNameOn testStoreOn) ('tests - subcollections access' testAllButFirst testAllButLastNElements testFirstNElements testAllButFirstNElements testAllButLast testLastNElements) ('tests - comma and delimiter' testAsStringOnDelimiterLastMore testAsStringOnDelimiterMore testAsStringOnDelimiterLastEmpty testAsStringOnDelimiterEmpty testAsCommaStringOne testAsStringOnDelimiterOne testAsCommaStringEmpty testAsCommaStringMore testAsStringOnDelimiterLastOne) ('tests - converting' assertNonDuplicatedContents:whenConvertedTo: testAsOrderedCollection testAsSet testAsArray assertNoDuplicates:whenConvertedTo: testAsBag assertSameContents:whenConvertedTo: testAsIdentitySet) ('tests - copying part of sequenceable' testCopyUpToLastEmpty testCopyAfterEmpty testCopyFromTo testCopyUpToLast testCopyAfterLastEmpty testCopyAfterLast testCopyUpTo testCopyAfter testCopyUpToEmpty) ('tests - occurrencesOf' testOccurrencesOfNotIn testOccurrencesOf testOccurrencesOfEmpty) ('test - set arithmetic' collectionClass) ('tests - copy' testCopySameClass testCopyNonEmptyWithoutAll testCopyEmptyWithout testCopyNonEmptyWithoutAllNotIncluded testCopyEmptyWith testCopyNonEmptyWith testCopyEmptyWithoutAll testCopyNotSame testCopyEquals testCopyNonEmptyWithoutNotIncluded testCopyNonEmptyWithout testCopyReturnsIdentity) ('tests - includes' testIncludesElementIsThere testIncludesAllNoneThere testIncludesAnyAllThere testIncludesElementIsNotThere testIdentityIncludesNonSpecificComportement testIncludesAnyNoneThere) ('tests - index accessing for multipliness' testIndexOfIfAbsentDuplicate testLastIndexOfDuplicate testLastIndexOfStartingAtDuplicate testLastIndexOfIfAbsentDuplicate testIndexOfDuplicate testIndexOfStartingAtDuplicate) ('requirements' indexInForCollectionWithoutDuplicates collectionWithSortableElements replacementCollection testNew anotherElementOrAssociationNotIn collectionWithSameAtEndAndBegining elementNotInForIndexAccessing anotherElementNotIn anotherElementOrAssociationIn elementInForElementAccessing elementNotInForElementAccessing nonEmptyMoreThan1Element empty secondCollection elementNotInForOccurrences elementInForIndexAccessing withEqualElements firstCollection subCollectionNotIn indexInNonEmpty elementTwiceInForOccurrences collectionMoreThan1NoDuplicates collectionWith1TimeSubcollection sizeCollection collectionNotIncluded elementNotIn nonEmpty1Element collectionWithElementsToRemove collectionWithEqualElements collectionWithoutEqualElements nonEmpty collectionWithoutNilElements collectionWith2TimeSubcollection collection moreThan4Elements moreThan3Elements oldSubCollection) ('test - copy' elementToAdd) ('tests - concatenation' testConcatenationWithEmpty testConcatenation) ('setup' setUp) ('tests - set arithmetic' testDifferenceWithSeparateCollection containsAll:of:andOf: testDifference testUnionOfEmpties testIntersectionEmpty testIntersectionItself testUnion testIntersectionBasic numberOfSimilarElementsInIntersection testIntersectionTwoSimilarElementsInIntersection) ('tests - copying same contents' testShallowCopy testReversed testReverse testShallowCopyEmpty) ('tests - fixture' test0FixtureIterateSequencedReadableTest test0FixtureTConvertTest test0FixtureCopyPartOfSequenceableTest test0FixtureSequencedElementAccessTest test0FixtureIndexAccessFotMultipliness test0FixtureSetAritmeticTest test0FixtureSubcollectionAccessTest test0FixtureCopyWithReplacementTest test0FixtureIndexAccessTest test0FixtureOccurrencesForMultiplinessTest howMany:in: test0FixtureConverAsSortedTest test0FixtureCloneTest test0TStructuralEqualityTest test0FixtureBeginsEndsWithTest test0FixtureTConvertAsSetForMultiplinessTest test0FixtureOccurrencesTest test0CopyTest test0FixtureCopyPartOfForMultipliness test0FixtureIncludeTest test0FixtureAsStringCommaAndDelimiterTest test0FixtureCopyWithOrWithoutSpecificElementsTest test0FixtureSequencedConcatenationTest test0FixturePrintTest test0TSequencedStructuralEqualityTest test0FixtureCopySameContentsTest) ('testing' testReadFrom expectedBehavior testIsLiteralSymbol) ('tests - element accessing' testAtWrap testAtRandom testLast testAtLast testAfterIfAbsent testAtAll testAtPin testAtOutOfBounds testAtLastIfAbsent testAtIfAbsent testAt testBefore testFirstSecondThird testMiddle testAtLastError testBeforeIfAbsent testAfter) ! HeapTest removeSelector: #testAsSortedArray! HeapTest removeSelector: #testRemoveAll! HeapTest removeSelector: #testRemoveAllError! HeapTest removeSelector: #testRemoveAllFoundIn! IntervalTest removeSelector: #expectedElementByDetect! IntervalTest removeSelector: #testAsSortedArray! IntervalTest removeSelector: #testCopyEmptyWith! IntervalTest removeSelector: #testCopyEmptyWithout! IntervalTest removeSelector: #testCopyEmptyWithoutAll! IntervalTest removeSelector: #testCopyNonEmptyWith! IntervalTest removeSelector: #testCopyNonEmptyWithoutAll! IntervalTest removeSelector: #testCopyNonEmptyWithoutNotIncluded! IntervalTest removeSelector: #testIdentityIndexOf! IntervalTest removeSelector: #testIdentityIndexOfIAbsent! IntervalTest removeSelector: #testIndexOf! IntervalTest removeSelector: #testIndexOfIfAbsent! IntervalTest removeSelector: #testIndexOfStartingAt! IntervalTest removeSelector: #testIndexOfSubCollectionStartingAt! IntervalTest removeSelector: #testIndexOfSubCollectionStartingAtIfAbsent! IntervalTest removeSelector: #testLastIndexOf! IntervalTest removeSelector: #testLastIndexOfIfAbsent! StringTest removeSelector: #testAsSortedArray! StringTest removeSelector: #testCopyEmptyWith! StringTest removeSelector: #testCopyEmptyWithout! StringTest removeSelector: #testCopyEmptyWithoutAll! StringTest removeSelector: #testCopyNonEmptyWith! StringTest removeSelector: #testCopyNonEmptyWithoutAll! StringTest removeSelector: #testCopyNonEmptyWithoutNotIncluded! SortedCollectionTest removeSelector: #testIsEmpty! !SortedCollectionTest reorganize! ('tests - copying part of sequenceable for multipliness' testCopyAfterWithDuplicate testCopyUpToWithDuplicate testCopyUpToLastWithDuplicate testCopyAfterLastWithDuplicate) ('test - creation' testWithWithWith testWithAll testOfSize testWith testWithWith testWithWithWithWithWith testWithWithWithWith) ('tests - begins ends with' testsBeginsWith testsEndsWith testsBeginsWithEmpty testsEndsWithEmpty) ('tests - fixture' test0FixtureOccurrencesTest test0FixtureCopyPartOfForMultipliness test0FixtureIncludeWithIdentityTest test0FixtureCopyPartOfSequenceableTest test0FixtureTConvertTest test0TSequencedStructuralEqualityTest test0FixtureCopySameContentsTest test0FixtureBeginsEndsWithTest test0TStructuralEqualityTest test0CopyTest test0FixtureTRemoveTest test0FixtureCreationWithTest test0FixturePrintTest test0FixtureRequirementsOfTAddTest test0FixtureSetAritmeticTest test0FixtureOccurrencesForMultiplinessTest test0FixtureCopyWithOrWithoutSpecificElementsTest test0FixtureAsSetForIdentityMultiplinessTest test0FixtureIncludeTest test0FixtureIndexAccessFotMultipliness test0FixtureAsStringCommaAndDelimiterTest test0FixtureSequencedElementAccessTest test0FixtureCopyWithReplacementForSorted test0FixtureConverAsSortedTest test0FixtureTConvertAsSetForMultiplinessTest test0FixtureSubcollectionAccessTest test0FixtureRemoveByIndexTest test0FixtureIterateSequencedReadableTest) ('tests - occurrencesOf for multipliness' testOccurrencesOfForMultipliness) ('tests - copying same contents' testShallowCopy testReversed testReverse testShallowCopyEmpty) ('tests - as set tests' testAsIdentitySetWithEqualsElements testAsSetWithEqualsElements) ('tests - printing' testPrintOnDelimiter testPrintOnDelimiterLast testPrintElementsOn testPrintOn testPrintNameOn testStoreOn) ('tests - copying with or without' testCopyWithoutFirst testCopyWithSequenceable) ('tests - as sorted collection' testAsSortedCollection testAsSortedCollectionWithSortBlock testAsSortedArray) ('tests - index access' testIdentityIndexOfIAbsent testIndexOfSubCollectionStartingAt testLastIndexOfStartingAt testIndexOfSubCollectionStartingAtIfAbsent testIndexOfIfAbsent testIdentityIndexOf testIndexOf testLastIndexOfIfAbsent testIndexOfStartingAt testLastIndexOf) ('tests - comma and delimiter' testAsStringOnDelimiterLastMore testAsStringOnDelimiterMore testAsStringOnDelimiterLastEmpty testAsStringOnDelimiterEmpty testAsCommaStringOne testAsStringOnDelimiterOne testAsCommaStringEmpty testAsCommaStringMore testAsStringOnDelimiterLastOne) ('tests - set arithmetic' testDifferenceWithNonNullIntersection testUnion testIntersectionBasic testIntersectionTwoSimilarElementsInIntersection containsAll:of:andOf: testDifferenceWithSeparateCollection numberOfSimilarElementsInIntersection testIntersectionItself testUnionOfEmpties testIntersectionEmpty testDifference) ('requirements' collectionOfSize5 moreThan3Elements collectionWithElementsToRemove otherCollection collectionWithoutEqualElements nonEmpty1Element replacementCollection empty nonEmpty collectionWithSortableElements elementInForIndexAccessing collectionWithEqualElements anotherElementOrAssociationNotIn elementTwiceInForOccurrences collectionWithSameAtEndAndBegining oldSubCollection speciesClass elementNotIn collectionWithNonIdentitySameAtEndAndBegining collectionWithCopyNonIdentical accessCollection nonEmptyMoreThan1Element indexInNonEmpty collectionWith2TimeSubcollection floatCollectionWithSameAtEndAndBegining element collectionWithCopy anotherElementOrAssociationIn collectionOfFloat elementInForIncludesTest result withEqualElements collectionWith5Elements elementInForElementAccessing expectedSizeAfterReject collectionWith1TimeSubcollection elementInCollectionOfFloat nonEmptyWithoutEqualElements collectionClass integerCollection elementToAdd anotherElementNotIn sizeCollection collectionWithElement elementNotInForOccurrences collectionWithoutNilElements moreThan4Elements collection indexInForCollectionWithoutDuplicates subCollectionNotIn collectionNotIncluded collectionMoreThan5Elements collectionWithIdentical elementNotInForIndexAccessing collectionMoreThan1NoDuplicates elementsCopyNonIdenticalWithoutEqualElements integerCollectionWithoutEqualElements elementNotInForElementAccessing) ('setup' setUp) ('tests - converting' testAsArray testAsBag assertNonDuplicatedContents:whenConvertedTo: testAsByteArray testAsIdentitySet assertSameContents:whenConvertedTo: testAsOrderedCollection assertNoDuplicates:whenConvertedTo: testAsSet) ('tests - element accessing' testAtWrap testAtRandom testLast testAtLast testAfterIfAbsent testAtPin testAtOutOfBounds testAtLastIfAbsent testAtIfAbsent testAt testBefore testFirstSecondThird testMiddle testAtLastError testBeforeIfAbsent testAfter) ('tests - occurrencesOf' testOccurrencesOfNotIn testOccurrencesOf testOccurrencesOfEmpty) ('tests - removing by index' testRemoveAtNotPresent testRemoveFirstNotPresent testRemoveLast testRemoveLastNElements testRemoveAt testRemoveLastNElementsNElements testRemoveFirstNElementsNotPresent testRemoveLastNotPresent testRemoveFirstNElements testRemoveFirst) ('tests - copying part of sequenceable' testCopyUpToLastEmpty testCopyAfter testCopyAfterEmpty testCopyUpToLast testCopyAfterLastEmpty testCopyAfterLast testCopyUpTo testCopyEmptyMethod testCopyFromTo testCopyUpToEmpty) ('tests - subcollections access' testAllButFirst testAllButLastNElements testFirstNElements testAllButFirstNElements testAllButLast testLastNElements) ('test - iterate' testDo2) ('tests - as identity set' testAsIdentitySetWithoutIdentityEqualsElements testAsIdentitySetWithIdentityEqualsElements) ('tests - copy' testCopySameClass testCopyEmptyWithout testCopyNonEmptyWithoutAll testCopyNonEmptyWithoutAllNotIncluded testCopyEmptyWith testCopyNonEmptyWith testCopyEmptyWithoutAll testCopyNotSame testCopyEquals testCopyNonEmptyWithoutNotIncluded testCopyNonEmptyWithout) ('tests - includes' testIncludesElementIsThere testIdentityIncludes testIncludesAllNoneThere testIncludesAnyAllThere testIncludesElementIsNotThere testIdentityIncludesNonSpecificComportement testIncludesAnyNoneThere) ('tests - equality' testEqualSignForSequenceableCollections testHasEqualElementsIsTrueForNonIdenticalButEqualCollections testHasEqualElementsOfIdenticalCollectionObjects testHasEqualElements) ('tests - index accessing for multipliness' testIndexOfIfAbsentDuplicate testLastIndexOfDuplicate testLastIndexOfStartingAtDuplicate testIdentityIndexOfDuplicate testIdentityIndexOfIAbsentDuplicate testIndexOfDuplicate testLastIndexOfIfAbsentDuplicate testIndexOfStartingAtDuplicate) ('tests - adding' testTAddWithOccurences testTAddIfNotPresentWithNewElement testTAdd testTWriteTwice testTAddIfNotPresentWithElementAlreadyIn testTWrite testTAddTwice testTAddAll) ('test - equality' testEqualSignOfIdenticalCollectionObjects testEqualSignIsTrueForEmptyButNonIdenticalCollections testEqualSignIsTrueForNonIdenticalButEqualCollections testEqualSign) ('tests - iterate on sequenced reable collections' testPairsDo testReverseWithDo testFindFirstNotIn testAllButLastDo testWithIndexCollect testReverseDoEmpty testFindLast testFromToDo testWithIndexDo testWithDoError testAllButFirstDo testDetectSequenced testFindFirst testWithCollectError testKeysAndValuesDoEmpty testCollectFromTo testDo testFindLastNotIn testReverseDo testKeysAndValuesDo testPairsCollect testWithDo testWithCollect) ('tests - copying with replacement for sorted' testCopyFromToWithForSorted testCopyReplaceAllWithForSorted) ('tests - remove' testRemoveElementThatExists testRemoveIfAbsent testRemoveElementReallyRemovesElement testRemoveAllFoundIn testRemoveElementFromEmpty testRemoveAllError testRemoveAllSuchThat) ('basic' testMedian testCopy testCreation testRemoveAll testAdd testAddAll2 testEquals testAddAll testSpeciesLooseSortBlock testSortBlock testCollect testSort) ! ArrayTest removeSelector: #collectionWithCopy! ArrayTest removeSelector: #collectionWithIdentical! ArrayTest removeSelector: #element! ArrayTest removeSelector: #test0FixtureSequencedConcatenationTest! ArrayTest removeSelector: #testAsArray! ArrayTest removeSelector: #testAsSortedArray! ArrayTest removeSelector: #testAt! ArrayTest removeSelector: #testCopyEmptyWith! ArrayTest removeSelector: #testCopyEmptyWithout! ArrayTest removeSelector: #testCopyEmptyWithoutAll! ArrayTest removeSelector: #testCopyNonEmptyWith! ArrayTest removeSelector: #testCopyNonEmptyWithoutAll! ArrayTest removeSelector: #testCopyNonEmptyWithoutNotIncluded! ArrayTest removeSelector: #testIndexOf! ArrayTest removeSelector: #testIndexOfIfAbsent! ArrayTest removeSelector: #testIndexOfStartingAt! ArrayTest removeSelector: #testIndexOfSubCollectionStartingAt! ArrayTest removeSelector: #testIndexOfSubCollectionStartingAtIfAbsent! ArrayTest removeSelector: #testLastIndexOf! ArrayTest removeSelector: #testLastIndexOfIfAbsent! ArrayTest removeSelector: #testLastIndexOfStartingAt! ArrayTest removeSelector: #testSwapWith! CollectionRootTest removeSelector: #testDoSeparatedBy! AthensCairoText removeSelector: #nbLibraryNameOrHandle! !AthensCairoText reorganize! ('library path' nbLibraryNameOrHandle) ('accessing' asString text text:) ('as yet unclassified' initialize) ('drawing' loadOn: drawOn: showOn:) ('font description' fontWeight beSlantNormal fontFamily fontFamily: fontWeight: beNormal fontSize: readFrom: fontSlant: fontSlant beBold fontSize) ('private' slantFrom: primSetFontSize:on: primShowText:on: weightFrom: primSelectFont:slant:weight:on:) ! AthensCairoPDFSurface removeSelector: #newCanvas! AthensCairoSurface removeSelector: #nbLibraryNameOrHandle! ParseNode removeSelector: #isLiteral! FileReference removeSelector: #resolve:! Gofer class removeSelector: #new! WarpBlt class removeSelector: #current! AGroupHasBeenRegistered removeSelector: #group! AGroupHasBeenRegistered removeSelector: #group:! DynamicGroup removeSelector: #sortBlock:! AGroupHasBeenUnregistered removeSelector: #group! AGroupHasBeenUnregistered removeSelector: #group:! RBCollectionCopyEmptyRule class removeSelector: #identifierMinorVersionNumber! RBClassInstVarNotInitializedRule class removeSelector: #identifierMinorVersionNumber! RBClassVariableCapitalizationRule class removeSelector: #identifierMinorVersionNumber! RBSearchingLiteralRule class removeSelector: #identifierMinorVersionNumber! RBUnoptimizedAndOrRule class removeSelector: #identifierMinorVersionNumber! RBAssignmentInIfTrueRule class removeSelector: #identifierMinorVersionNumber! RBAssignmentInBlockRule class removeSelector: #identifierMinorVersionNumber! RBToDoRule class removeSelector: #identifierMinorVersionNumber! RBAsOrderedCollectionNotNeededRule class removeSelector: #identifierMinorVersionNumber! RBPlatformDependentUserInteractionRule class removeSelector: #identifierMinorVersionNumber! RBSubclassResponsibilityNotDefinedRule class removeSelector: #identifierMinorVersionNumber! RBMissingYourselfRule class removeSelector: #identifierMinorVersionNumber! RBUnpackagedCodeRule class removeSelector: #identifierMinorVersionNumber! RBDetectContainsRule class removeSelector: #identifierMinorVersionNumber! RBUnnecessaryAssignmentRule class removeSelector: #identifierMinorVersionNumber! RBRefersToClassRule class removeSelector: #identifierMinorVersionNumber! RBDetectIfNoneRule class removeSelector: #identifierMinorVersionNumber! RBBooleanPrecedenceRule class removeSelector: #identifierMinorVersionNumber! RBBetweenAndRule class removeSelector: #identifierMinorVersionNumber! RBTranslateLiteralsInMenusRule class removeSelector: #identifierMinorVersionNumber! RBCodeCruftLeftInMethodsRule class removeSelector: #identifierMinorVersionNumber! RBGuardClauseRule class removeSelector: #identifierMinorVersionNumber! RBUnderscoreAssignmentRule class removeSelector: #identifierMinorVersionNumber! RBCascadedNextPutAllsRule class removeSelector: #identifierMinorVersionNumber! RBThemeAPIUpdateRule class removeSelector: #identifierMinorVersionNumber! RBAtIfAbsentRule class removeSelector: #identifierMinorVersionNumber! RBNotEliminationRule class removeSelector: #identifierMinorVersionNumber! RBUnwindBlocksRule class removeSelector: #identifierMinorVersionNumber! RBSuperSendsRule class removeSelector: #identifierMinorVersionNumber! RBAllAnyNoneSatisfyRule class removeSelector: #identifierMinorVersionNumber! RBMinMaxRule class removeSelector: #identifierMinorVersionNumber! RBEqualNilRule class removeSelector: #identifierMinorVersionNumber! RBTransformationRule class removeSelector: #identifierMinorVersionNumber! RBIfTrueReturnsRule class removeSelector: #identifierMinorVersionNumber! RBExcessiveInheritanceRule class removeSelector: #identifierMinorVersionNumber! RBSendsUnknownMessageToGlobalRule class removeSelector: #identifierMinorVersionNumber! RBVariableNotDefinedRule class removeSelector: #identifierMinorVersionNumber! RBToDoWithIncrementRule class removeSelector: #identifierMinorVersionNumber! RBTemporaryVariableCapitalizationRule class removeSelector: #identifierMinorVersionNumber! RBNoClassCommentRule class removeSelector: #identifierMinorVersionNumber! RBFloatEqualityComparisonRule class removeSelector: #identifierMinorVersionNumber! RBInstanceVariableCapitalizationRule class removeSelector: #identifierMinorVersionNumber! RBWhileTrueRule class removeSelector: #identifierMinorVersionNumber! RBMethodHasNoTimeStampRule class removeSelector: #identifierMinorVersionNumber! RBExcessiveVariablesRule class removeSelector: #identifierMinorVersionNumber! RBOnlyReadOrWrittenVariableRule class removeSelector: #identifierMinorVersionNumber! RBUnconditionalRecursionRule class removeSelector: #identifierMinorVersionNumber! RBMissingSuperSendsRule class removeSelector: #identifierMinorVersionNumber! RBYourselfNotUsedRule class removeSelector: #identifierMinorVersionNumber! RBExcessiveMethodsRule class removeSelector: #identifierMinorVersionNumber! RBEqualsTrueRule class removeSelector: #identifierMinorVersionNumber! RBClassNotReferencedRule class removeSelector: #identifierMinorVersionNumber! RBMissingSubclassResponsibilityRule class removeSelector: #identifierMinorVersionNumber! RBMethodModifierOverrideRule class removeSelector: #identifierMinorVersionNumber! RBAbstractClassRule class removeSelector: #identifierMinorVersionNumber! RBTempVarOverridesInstVarRule class removeSelector: #identifierMinorVersionNumber! RBContainsRule class removeSelector: #identifierMinorVersionNumber! RBMethodModifierFinalRule class removeSelector: #identifierMinorVersionNumber! RBFileBlocksRule class removeSelector: #identifierMinorVersionNumber! RBUnclassifiedMethodsRule class removeSelector: #identifierMinorVersionNumber! RBModifiesCollectionRule class removeSelector: #identifierMinorVersionNumber! RBLiteralArrayContainsSuspiciousTrueFalseOrNilRule class removeSelector: #identifierMinorVersionNumber! RBImplementedNotSentRule class removeSelector: #identifierMinorVersionNumber! RBInstVarInSubclassesRule class removeSelector: #identifierMinorVersionNumber! RBSuperSendsNewRule class removeSelector: #identifierMinorVersionNumber! RBSizeCheckRule class removeSelector: #identifierMinorVersionNumber! RBExcessiveArgumentsRule class removeSelector: #identifierMinorVersionNumber! RBVariableAssignedLiteralRule class removeSelector: #identifierMinorVersionNumber! RBGuardingClauseRule class removeSelector: #identifierMinorVersionNumber! RBEmptyExceptionHandlerRule class removeSelector: #identifierMinorVersionNumber! RBAssignmentWithoutEffectRule class removeSelector: #identifierMinorVersionNumber! RBLiteralArrayCharactersRule class removeSelector: #identifierMinorVersionNumber! RBCollectionMessagesToExternalObjectRule class removeSelector: #identifierMinorVersionNumber! RBCollectionProtocolRule class removeSelector: #identifierMinorVersionNumber! RBUsesAddRule class removeSelector: #identifierMinorVersionNumber! RBCollectSelectNotUsedRule class removeSelector: #identifierMinorVersionNumber! RBPrecedenceRule class removeSelector: #identifierMinorVersionNumber! RBUnoptimizedToDoRule class removeSelector: #identifierMinorVersionNumber! RBMissingTranslationsInMenusRule class removeSelector: #identifierMinorVersionNumber! RBEqualNotUsedRule class removeSelector: #identifierMinorVersionNumber! RBReturnsIfTrueRule class removeSelector: #identifierMinorVersionNumber! RBToDoCollectRule class removeSelector: #identifierMinorVersionNumber! RBReturnInEnsureRule class removeSelector: #identifierMinorVersionNumber! RBExtraBlockRule class removeSelector: #identifierMinorVersionNumber! RBEndTrueFalseRule class removeSelector: #identifierMinorVersionNumber! RBOnlyReadOrWrittenTemporaryRule class removeSelector: #identifierMinorVersionNumber! RBIfTrueBlocksRule class removeSelector: #identifierMinorVersionNumber! RBThreeElementPointRule class removeSelector: #identifierMinorVersionNumber! RBSendsDeprecatedMethodToGlobalRule class removeSelector: #identifierMinorVersionNumber! RBConsistencyCheckRule class removeSelector: #identifierMinorVersionNumber! RBStringConcatenationRule class removeSelector: #identifierMinorVersionNumber! RBParseTreeLintRule class removeSelector: #identifierMinorVersionNumber! RBUnreferencedVariablesRule class removeSelector: #identifierMinorVersionNumber! RBVariableReferencedOnceRule class removeSelector: #identifierMinorVersionNumber! RBOverridesSpecialMessageRule class removeSelector: #identifierMinorVersionNumber! RBJustSendsSuperRule class removeSelector: #identifierMinorVersionNumber! RBDefinesEqualNotHashRule class removeSelector: #identifierMinorVersionNumber! RBLiteralArrayContainsCommaRule class removeSelector: #identifierMinorVersionNumber! RBLongMethodsRule class removeSelector: #identifierMinorVersionNumber! RBReturnsBooleanAndOtherRule class removeSelector: #identifierMinorVersionNumber! RBUndeclaredReferenceRule class removeSelector: #identifierMinorVersionNumber! RBEquivalentSuperclassMethodsRule class removeSelector: #identifierMinorVersionNumber! RBClassNameInSelectorRule class removeSelector: #identifierMinorVersionNumber! RBAddRemoveDependentsRule class removeSelector: #identifierMinorVersionNumber! RBSentNotImplementedRule class removeSelector: #identifierMinorVersionNumber! RBMethodModifierSuperRule class removeSelector: #identifierMinorVersionNumber! RBBadMessageRule class removeSelector: #identifierMinorVersionNumber! RBSendsDifferentSuperRule class removeSelector: #identifierMinorVersionNumber! RBUsesTrueRule class removeSelector: #identifierMinorVersionNumber! RBInconsistentMethodClassificationRule class removeSelector: #identifierMinorVersionNumber! RBTempsReadBeforeWrittenRule class removeSelector: #identifierMinorVersionNumber! RBUtilityMethodsRule class removeSelector: #identifierMinorVersionNumber! RBUncommonMessageSendRule class removeSelector: #identifierMinorVersionNumber! RBMethodSourceContainsLinefeedsRule class removeSelector: #identifierMinorVersionNumber! RBBlockLintRule class removeSelector: #identifierMinorVersionNumber! RBBasicLintRule class removeSelector: #identifierMinorVersionNumber! RBCompositeLintRule class removeSelector: #identifierMinorVersionNumber! !CriticBrowser methodsFor: 'initialization' stamp: 'SimonAllier 2/5/2013 11:39'! initialize "Initialization code for CriticRulesBrowser" super initialize. cache := CriticsCache new. checker := SmalllintManifestChecker new. cache checker: checker. cache browser: self. criticModel cache: cache. ! ! !CriticBrowser methodsFor: 'initialization' stamp: 'SimonAllier 2/5/2013 11:39'! initialize "Initialization code for CriticRulesBrowser" super initialize. cache := CriticsCache new. checker := SmalllintManifestChecker new. cache checker: checker. cache browser: self. criticModel cache: cache. ! ! SingleRuleCriticBrowser removeSelector: #perform:orSendTo:! SelectRuleBrowser class removeSelector: #defaultSpec! MetacelloProjectSpecLoadError removeSelector: #isResumable! !PharoUser methodsFor: 'initialize' stamp: 'BenjaminVanRyseghem 5/16/2012 15:55'! initialize "Initialization code for PharoUser" super initialize. avatar := self defaultAvatar. self updateGravatarFor: ''. keychain := KeyChain new. unlockedKeychain := UnlockedKeyChain new.! ! !PharoUser methodsFor: 'initialize' stamp: 'BenjaminVanRyseghem 5/16/2012 15:55'! initialize "Initialization code for PharoUser" super initialize. avatar := self defaultAvatar. self updateGravatarFor: ''. keychain := KeyChain new. unlockedKeychain := UnlockedKeyChain new.! ! !SwitchUsers methodsFor: 'initialize' stamp: 'BenjaminVanRyseghem 8/2/2012 15:40'! initialize "Initialization code for SwitchUsers" usersManager := nil asValueHolder. selectedUser := nil asValueHolder. super initialize.! ! !SwitchUsers methodsFor: 'initialize' stamp: 'BenjaminVanRyseghem 8/2/2012 15:40'! initialize "Initialization code for SwitchUsers" usersManager := nil asValueHolder. selectedUser := nil asValueHolder. super initialize.! ! !UserManager methodsFor: 'initialize' stamp: 'BenjaminVanRyseghem 5/16/2012 15:19'! initialize "Initialization code for UsersManager" super initialize. users := SortedCollection new sortBlock: [:a :b | a username printString < b username printString ]; asValueHolder. currentUser := nil. self addDefaultUser.! ! !UserManager methodsFor: 'initialize' stamp: 'BenjaminVanRyseghem 5/16/2012 15:19'! initialize "Initialization code for UsersManager" super initialize. users := SortedCollection new sortBlock: [:a :b | a username printString < b username printString ]; asValueHolder. currentUser := nil. self addDefaultUser.! ! !KeychainEditor methodsFor: 'initialize' stamp: 'BenjaminVanRyseghem 8/2/2012 15:21'! initialize "Initialization code for KeychainEditor" keychainEditingWrapper := nil asValueHolder. super initialize.! ! !KeychainEditor methodsFor: 'initialize' stamp: 'BenjaminVanRyseghem 8/2/2012 15:21'! initialize "Initialization code for KeychainEditor" keychainEditingWrapper := nil asValueHolder. super initialize.! ! !PasswordInitializationDialogWindow methodsFor: 'initialize' stamp: 'EstebanLorenzano 5/14/2013 09:43'! initialize "Initialization code for PasswordInitializationDialogWindow" super initialize. self textFont: Smalltalk ui theme textFont.! ! !PasswordInitializationDialogWindow methodsFor: 'initialize' stamp: 'EstebanLorenzano 5/14/2013 09:43'! initialize "Initialization code for PasswordInitializationDialogWindow" super initialize. self textFont: Smalltalk ui theme textFont.! ! !UserEditor methodsFor: 'initialize' stamp: 'BenjaminVanRyseghem 8/2/2012 15:24'! initialize "Initialization code for UserEditor" usersManager := nil asValueHolder. user := nil asValueHolder. super initialize.! ! !UserEditor methodsFor: 'initialize' stamp: 'BenjaminVanRyseghem 8/2/2012 15:24'! initialize "Initialization code for UserEditor" usersManager := nil asValueHolder. user := nil asValueHolder. super initialize.! ! !Cookie methodsFor: 'initialize' stamp: 'MarcusDenker 7/18/2013 11:23'! initialize "Initialization code for Cookie" super initialize. timeToLive := self defaultTimeToLive. defaultValue := nil. contents := defaultValue.! ! !Cookie methodsFor: 'initialize' stamp: 'MarcusDenker 7/18/2013 11:23'! initialize "Initialization code for Cookie" super initialize. timeToLive := self defaultTimeToLive. defaultValue := nil. contents := defaultValue.! ! !PharoUserPermissions methodsFor: 'initialize' stamp: 'BenjaminVanRyseghem 5/7/2013 18:57'! initialize "Initialization code for PharoUserPermissions" super initialize. canBrowse := false. canDebug := false. canDropOSFile := false. canEditCode := false. canEvaluateCode := false. canInspect := false. canRunStartupScript := false. canShowMorphHalo := false. canEditUser := false. canSaveImage := false.! ! !PharoUserPermissions methodsFor: 'initialize' stamp: 'BenjaminVanRyseghem 5/7/2013 18:57'! initialize "Initialization code for PharoUserPermissions" super initialize. canBrowse := false. canDebug := false. canDropOSFile := false. canEditCode := false. canEvaluateCode := false. canInspect := false. canRunStartupScript := false. canShowMorphHalo := false. canEditUser := false. canSaveImage := false.! ! !PermissionsEditor methodsFor: 'initialize' stamp: 'BenjaminVanRyseghem 8/2/2012 16:23'! initialize "Initialization code for PermissionsEditor" lock := false. user := nil asValueHolder. super initialize.! ! !PermissionsEditor methodsFor: 'initialize' stamp: 'BenjaminVanRyseghem 8/2/2012 16:23'! initialize "Initialization code for PermissionsEditor" lock := false. user := nil asValueHolder. super initialize.! ! !KeyChainViewer methodsFor: 'initialize' stamp: 'BenjaminVanRyseghem 8/2/2012 15:27'! initialize "Initialization code for KeyChainViewer" keychain := nil asValueHolder. super initialize.! ! !KeyChainViewer methodsFor: 'initialize' stamp: 'BenjaminVanRyseghem 8/2/2012 16:27'! initializeWidgets "Initialization code for KeyChainViewer" self instantiateModels: #( add ButtonModel edit ButtonModel list MultiColumnListModel ok OkToolbar remove ButtonModel ). self initializeAdd. self initializeEdit. self initializeRemove. ok okButton label: 'Close'. list displayBlock: [ :item | self wrapItem: item ]. keychain whenChangedDo: [:kc | add enabled: kc notNil. list resetSelection. self updateTitle. list items: kc bindings associations ]. list whenSelectedItemChanged: [:it | edit enabled: it notNil. remove enabled: it notNil ]. self focusOrder add: list; add: add; add: edit; add: remove; add: ok.! ! !KeyChainViewer methodsFor: 'initialize' stamp: 'BenjaminVanRyseghem 8/2/2012 15:27'! initialize "Initialization code for KeyChainViewer" keychain := nil asValueHolder. super initialize.! ! !KeyChainViewer methodsFor: 'initialize' stamp: 'BenjaminVanRyseghem 8/2/2012 16:27'! initializeWidgets "Initialization code for KeyChainViewer" self instantiateModels: #( add ButtonModel edit ButtonModel list MultiColumnListModel ok OkToolbar remove ButtonModel ). self initializeAdd. self initializeEdit. self initializeRemove. ok okButton label: 'Close'. list displayBlock: [ :item | self wrapItem: item ]. keychain whenChangedDo: [:kc | add enabled: kc notNil. list resetSelection. self updateTitle. list items: kc bindings associations ]. list whenSelectedItemChanged: [:it | edit enabled: it notNil. remove enabled: it notNil ]. self focusOrder add: list; add: add; add: edit; add: remove; add: ok.! ! KeychainEditor removeSelector: #cancelled! ClassTestCase subclass: #MetaclassTest instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'KernelTests-Classes'! ClassTestCase subclass: #BehaviorTest instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'KernelTests-Classes'! BehaviorTest class instanceVariableNames: ''! ClassTestCase subclass: #ClassTest instanceVariableNames: 'className renamedName ' classVariableNames: '' poolDictionaries: '' category: 'KernelTests-Classes'! ClassTest class instanceVariableNames: ''! !MetaclassTest methodsFor: 'tests' stamp: 'SebastianTleye 7/19/2013 15:24'! testMetaclassAndTraitClassRespectsPolymorphismRules | repeatedMethodsThatDoNotAccessInstanceVariables differentMethodsWithSameSelector | "If the method is in Metaclass and ClassTrait it must access some instance variable, otherwise the method can be implemented in TApplyingOnClassSide" repeatedMethodsThatDoNotAccessInstanceVariables := self repeatedMethodsThatDoNotAccessInstanceVariablesBetween: Metaclass and: ClassTrait. self assert: repeatedMethodsThatDoNotAccessInstanceVariables size = 0. "If the method is in Metaclass and ClassTrait, and they have different implementations, it must be declared in TApplyingOnClassSide as an explicitRequirement method" differentMethodsWithSameSelector := self differentMethodsWithSameSelectorBetween: Metaclass and: ClassTrait. differentMethodsWithSameSelector do: [ :selector | self shouldnt: [ (TApplyingOnClassSide>>selector) sourceCode ] raise: Error. self assert: (TApplyingOnClassSide>>selector) isRequired. ]. "Only a few methods are allowed to belong to one class and not to the other It would be excelent to remove these methods somehow, but is NOT good idea add methods to this list" "basicLocalSelectors basicLocalSelectors: localSelectors localSelectors: traitComposition traitComposition: -> accessors to instance variables that do not belong to ClassTrait baseClass classClass -> they have their equivalent for ClassTraits (baseTrait classTrait) environment postCopy -> the implementation for ClassTrait is in TBehavior veryDeepCopyWith: -> the implementation for ClassTraits is in Object fileOutOn:moveSource:toFile: fileOutOn:moveSource:toFile:initializing: -> the implementation for ClassTraits is in TClassDescription" self assert: (Metaclass localSelectors difference: ClassTrait localSelectors) = {#baseClass. #basicLocalSelectors. #basicLocalSelectors:. #classClass. #environment. #fileOutOn:moveSource:toFile:. #fileOutOn:moveSource:toFile:initializing:. #localSelectors. #localSelectors:. #postCopy. #traitComposition. #traitComposition:. #veryDeepCopyWith:.} asSet. "initializeWithBaseTrait: asMCDefinition -> has no equivalent in classes baseTrait isClassTrait classTrait baseTrait isBaseTrait classTrait: -> they have their equivalent for Metaclasses compile:classified:withStamp:notifying:logSource: -> the implementation for Metaclasses is in TClassDescription copy -> the implementation for Metaclasses is in Object" self assert: (ClassTrait localSelectors difference: Metaclass localSelectors) = {#initializeWithBaseTrait:. #asMCDefinition. #baseTrait:. #isClassTrait. #classTrait. #baseTrait. #compile:classified:withStamp:notifying:logSource:. #isBaseTrait. #copy. #classTrait:.} asSet. ! ! !MetaclassTest methodsFor: 'tests' stamp: 'SebastianTleye 7/19/2013 15:24'! testMetaclassAndTraitClassRespectsPolymorphismRules | repeatedMethodsThatDoNotAccessInstanceVariables differentMethodsWithSameSelector | "If the method is in Metaclass and ClassTrait it must access some instance variable, otherwise the method can be implemented in TApplyingOnClassSide" repeatedMethodsThatDoNotAccessInstanceVariables := self repeatedMethodsThatDoNotAccessInstanceVariablesBetween: Metaclass and: ClassTrait. self assert: repeatedMethodsThatDoNotAccessInstanceVariables size = 0. "If the method is in Metaclass and ClassTrait, and they have different implementations, it must be declared in TApplyingOnClassSide as an explicitRequirement method" differentMethodsWithSameSelector := self differentMethodsWithSameSelectorBetween: Metaclass and: ClassTrait. differentMethodsWithSameSelector do: [ :selector | self shouldnt: [ (TApplyingOnClassSide>>selector) sourceCode ] raise: Error. self assert: (TApplyingOnClassSide>>selector) isRequired. ]. "Only a few methods are allowed to belong to one class and not to the other It would be excelent to remove these methods somehow, but is NOT good idea add methods to this list" "basicLocalSelectors basicLocalSelectors: localSelectors localSelectors: traitComposition traitComposition: -> accessors to instance variables that do not belong to ClassTrait baseClass classClass -> they have their equivalent for ClassTraits (baseTrait classTrait) environment postCopy -> the implementation for ClassTrait is in TBehavior veryDeepCopyWith: -> the implementation for ClassTraits is in Object fileOutOn:moveSource:toFile: fileOutOn:moveSource:toFile:initializing: -> the implementation for ClassTraits is in TClassDescription" self assert: (Metaclass localSelectors difference: ClassTrait localSelectors) = {#baseClass. #basicLocalSelectors. #basicLocalSelectors:. #classClass. #environment. #fileOutOn:moveSource:toFile:. #fileOutOn:moveSource:toFile:initializing:. #localSelectors. #localSelectors:. #postCopy. #traitComposition. #traitComposition:. #veryDeepCopyWith:.} asSet. "initializeWithBaseTrait: asMCDefinition -> has no equivalent in classes baseTrait isClassTrait classTrait baseTrait isBaseTrait classTrait: -> they have their equivalent for Metaclasses compile:classified:withStamp:notifying:logSource: -> the implementation for Metaclasses is in TClassDescription copy -> the implementation for Metaclasses is in Object" self assert: (ClassTrait localSelectors difference: Metaclass localSelectors) = {#initializeWithBaseTrait:. #asMCDefinition. #baseTrait:. #isClassTrait. #classTrait. #baseTrait. #compile:classified:withStamp:notifying:logSource:. #isBaseTrait. #copy. #classTrait:.} asSet. ! ! !BehaviorTest methodsFor: 'tests' stamp: 'SebastianTleye 7/19/2013 15:16'! testBehaviorRespectsPolymorphismWithTraitBehavior | repeatedMethodsThatDoNotAccessInstanceVariables differentMethodsWithSameSelector | "If the method is in Behavior and TraitBehavior it must access some instance variable, otherwise the method can be implemented in TBehavior" repeatedMethodsThatDoNotAccessInstanceVariables := self repeatedMethodsThatDoNotAccessInstanceVariablesBetween: Behavior and: TraitBehavior. self assert: repeatedMethodsThatDoNotAccessInstanceVariables size equals: 0. "If the method is in Behavior and TraitBehavior, and they have different implementations, it must be declared in TBehavior as an explicitRequirement method" differentMethodsWithSameSelector := self differentMethodsWithSameSelectorBetween: Behavior and: TraitBehavior. differentMethodsWithSameSelector do: [ :selector | self shouldnt: [ (TBehavior>>selector) sourceCode ] raise: Error. self assert: (TBehavior>>selector) isRequired. ]. "Only a few methods are allowed to belong to one class and not to the other" "If you want to remove methods for this list, then go ahead. But is NOT good idea add methods to this list" "format -> the instance variable format belongs to Behavior but not to TraitBehavior, if we add the getter to TraitBehavior, what should we return? isBehavior -> returns true for all the classes but false for the traits, the implementation for traits (and the rest of the objects) is implemented in Object>>isBehavior layout -> is an instance variable of Behavior but not of TraitBehavior" self assert: (Behavior localSelectors difference: TraitBehavior localSelectors) equals: #(#format #isBehavior layout) asSet. "localSelectors, localSelectors:, basicLocalSelectors, basicLocalSelectors: -> the instance variable localSelectors belongs to TraitBehavior but not to Behavior" "browse is implemeted differently for traits, the implementation for classes is in Object" "isTrait answers true for traits, for the rest of objects answer false, the implementation is in Object" self assert: (TraitBehavior localSelectors difference: Behavior localSelectors) equals: #(#localSelectors: #localSelectors #browse #basicLocalSelectors #basicLocalSelectors: #isTrait) asSet.! ! !BehaviorTest methodsFor: 'tests' stamp: 'SebastianTleye 7/19/2013 15:16'! testBehaviorRespectsPolymorphismWithTraitBehavior | repeatedMethodsThatDoNotAccessInstanceVariables differentMethodsWithSameSelector | "If the method is in Behavior and TraitBehavior it must access some instance variable, otherwise the method can be implemented in TBehavior" repeatedMethodsThatDoNotAccessInstanceVariables := self repeatedMethodsThatDoNotAccessInstanceVariablesBetween: Behavior and: TraitBehavior. self assert: repeatedMethodsThatDoNotAccessInstanceVariables size equals: 0. "If the method is in Behavior and TraitBehavior, and they have different implementations, it must be declared in TBehavior as an explicitRequirement method" differentMethodsWithSameSelector := self differentMethodsWithSameSelectorBetween: Behavior and: TraitBehavior. differentMethodsWithSameSelector do: [ :selector | self shouldnt: [ (TBehavior>>selector) sourceCode ] raise: Error. self assert: (TBehavior>>selector) isRequired. ]. "Only a few methods are allowed to belong to one class and not to the other" "If you want to remove methods for this list, then go ahead. But is NOT good idea add methods to this list" "format -> the instance variable format belongs to Behavior but not to TraitBehavior, if we add the getter to TraitBehavior, what should we return? isBehavior -> returns true for all the classes but false for the traits, the implementation for traits (and the rest of the objects) is implemented in Object>>isBehavior layout -> is an instance variable of Behavior but not of TraitBehavior" self assert: (Behavior localSelectors difference: TraitBehavior localSelectors) equals: #(#format #isBehavior layout) asSet. "localSelectors, localSelectors:, basicLocalSelectors, basicLocalSelectors: -> the instance variable localSelectors belongs to TraitBehavior but not to Behavior" "browse is implemeted differently for traits, the implementation for classes is in Object" "isTrait answers true for traits, for the rest of objects answer false, the implementation is in Object" self assert: (TraitBehavior localSelectors difference: Behavior localSelectors) equals: #(#localSelectors: #localSelectors #browse #basicLocalSelectors #basicLocalSelectors: #isTrait) asSet.! ! !ClassTest methodsFor: 'testing' stamp: 'SebastianTleye 7/19/2013 15:21'! testClassRespectsPolymorphismWithTrait | repeatedMethodsThatDoNotAccessInstanceVariables differentMethodsWithSameSelector | "If the method is in Class and Trait it must access some instance variable, otherwise the method can be implemented in TClass" repeatedMethodsThatDoNotAccessInstanceVariables := self repeatedMethodsThatDoNotAccessInstanceVariablesBetween: Class and: Trait. self assert: repeatedMethodsThatDoNotAccessInstanceVariables size equals: 0. "If the method is in Class and Trait, and they have different implementations, it must be declared in TClass as an explicitRequirement method" differentMethodsWithSameSelector := self differentMethodsWithSameSelectorBetween: Class and: Trait. differentMethodsWithSameSelector do: [ :selector | self shouldnt: [ (TClass>>selector) sourceCode ] raise: Error. self assert: (TClass>>selector) isRequired. ]. "Only a few methods are allowed to belong to one class and not to the other" "It would be excelent to remove these methods somehow, but is NOT good idea add methods to this list" "traitComposition traitComposition: localSelectors localSelectors: basicLocalSelectors basicLocalSelectors -> accessors to instance variables that do not belong to Trait" "baseClass classClass have their equivalent in Trait, but the problem is the name of the selector, they are bad names" "addInstVarNamed: for traits is implemeted in TraitDescription" self assert: (Class localSelectors difference: Trait localSelectors) equals: #(#traitComposition: #baseClass #basicLocalSelectors #classClass #localSelectors #localSelectors: #basicLocalSelectors: #traitComposition #addInstVarNamed:) asSet. "classTrait: isClassTrait classTrait isBaseTrait baseTrait -> they have their equivalent for classes but with different name" "nautilusIcon initialize is implemented differently for traits, classes have their implentation in Object" self assert: (Trait localSelectors difference: Class localSelectors) equals: #(#classTrait: #isClassTrait #classTrait #nautilusIcon #isBaseTrait #initialize #baseTrait) asSet. ! ! !ClassTest methodsFor: 'testing' stamp: 'SebastianTleye 7/19/2013 15:21'! testClassRespectsPolymorphismWithTrait | repeatedMethodsThatDoNotAccessInstanceVariables differentMethodsWithSameSelector | "If the method is in Class and Trait it must access some instance variable, otherwise the method can be implemented in TClass" repeatedMethodsThatDoNotAccessInstanceVariables := self repeatedMethodsThatDoNotAccessInstanceVariablesBetween: Class and: Trait. self assert: repeatedMethodsThatDoNotAccessInstanceVariables size equals: 0. "If the method is in Class and Trait, and they have different implementations, it must be declared in TClass as an explicitRequirement method" differentMethodsWithSameSelector := self differentMethodsWithSameSelectorBetween: Class and: Trait. differentMethodsWithSameSelector do: [ :selector | self shouldnt: [ (TClass>>selector) sourceCode ] raise: Error. self assert: (TClass>>selector) isRequired. ]. "Only a few methods are allowed to belong to one class and not to the other" "It would be excelent to remove these methods somehow, but is NOT good idea add methods to this list" "traitComposition traitComposition: localSelectors localSelectors: basicLocalSelectors basicLocalSelectors -> accessors to instance variables that do not belong to Trait" "baseClass classClass have their equivalent in Trait, but the problem is the name of the selector, they are bad names" "addInstVarNamed: for traits is implemeted in TraitDescription" self assert: (Class localSelectors difference: Trait localSelectors) equals: #(#traitComposition: #baseClass #basicLocalSelectors #classClass #localSelectors #localSelectors: #basicLocalSelectors: #traitComposition #addInstVarNamed:) asSet. "classTrait: isClassTrait classTrait isBaseTrait baseTrait -> they have their equivalent for classes but with different name" "nautilusIcon initialize is implemented differently for traits, classes have their implentation in Object" self assert: (Trait localSelectors difference: Class localSelectors) equals: #(#classTrait: #isClassTrait #classTrait #nautilusIcon #isBaseTrait #initialize #baseTrait) asSet. ! ! !ClassDescriptionTest methodsFor: 'tests' stamp: 'SebastianTleye 7/19/2013 15:18'! testClassDescriptionRespectsPolymorphismWithTraitDescription | repeatedMethodsThatDoNotAccessInstanceVariables differentMethodsWithSameSelector | "If the method is in ClassDescription and TraitDescription it must access some instance variable, otherwise the method can be implemented in TClassDescription" repeatedMethodsThatDoNotAccessInstanceVariables := self repeatedMethodsThatDoNotAccessInstanceVariablesBetween: ClassDescription and: TraitDescription. self assert: repeatedMethodsThatDoNotAccessInstanceVariables size = 0. "If the method is in ClassDescription and TraitDescription, and they have different implementations, it must be declared in TClassDescription as an explicitRequirement method" differentMethodsWithSameSelector := self differentMethodsWithSameSelectorBetween: ClassDescription and: TraitDescription. differentMethodsWithSameSelector do: [ :selector | self shouldnt: [ (TClassDescription>>selector) sourceCode ] raise: Error. self assert: (TClassDescription>>selector) isRequired. ]. "Only a few methods are allowed to belong to one class and not to the other If you want to remove methods for this list, then go ahead. But is NOT good idea add methods to this list" "superclass:layout, initializeLayout, initializeLayoutWithSlots:, layoutSized -> the access instance variables that are in ClassDescription but not in TraitDescription layout is the getter of the instance variable layout (which is in ClassDescription but not in TraitDescription) baseClass classClass classVersion -> they have their equivalens in TraitDescription (baseTrait classTrait traitVersion)" self assert: (ClassDescription localSelectors difference: TraitDescription localSelectors) equals: #(#superclass:layout: #initializeLayout #baseClass #superclass:withLayoutType:slots: #classClass #initializeLayoutWithSlots: #layoutSized: #classVersion) asSet. "isClassTrait, baseTrait, traitVersion, isBaseTrait, classTrait -> They have their equivalents in ClassDescription but with different name, the problem comes from the name of the selector, they are not good names copyTraitExpresion addExclusionOf: have no equivalent in classes" self assert: (TraitDescription localSelectors difference: ClassDescription localSelectors) equals: #(#isClassTrait #addExclusionOf: #copyTraitExpression #baseTrait #- #traitVersion #isBaseTrait #classTrait) asSet. ! ! !ClassDescriptionTest methodsFor: 'tests' stamp: 'SebastianTleye 7/19/2013 15:18'! testClassDescriptionRespectsPolymorphismWithTraitDescription | repeatedMethodsThatDoNotAccessInstanceVariables differentMethodsWithSameSelector | "If the method is in ClassDescription and TraitDescription it must access some instance variable, otherwise the method can be implemented in TClassDescription" repeatedMethodsThatDoNotAccessInstanceVariables := self repeatedMethodsThatDoNotAccessInstanceVariablesBetween: ClassDescription and: TraitDescription. self assert: repeatedMethodsThatDoNotAccessInstanceVariables size = 0. "If the method is in ClassDescription and TraitDescription, and they have different implementations, it must be declared in TClassDescription as an explicitRequirement method" differentMethodsWithSameSelector := self differentMethodsWithSameSelectorBetween: ClassDescription and: TraitDescription. differentMethodsWithSameSelector do: [ :selector | self shouldnt: [ (TClassDescription>>selector) sourceCode ] raise: Error. self assert: (TClassDescription>>selector) isRequired. ]. "Only a few methods are allowed to belong to one class and not to the other If you want to remove methods for this list, then go ahead. But is NOT good idea add methods to this list" "superclass:layout, initializeLayout, initializeLayoutWithSlots:, layoutSized -> the access instance variables that are in ClassDescription but not in TraitDescription layout is the getter of the instance variable layout (which is in ClassDescription but not in TraitDescription) baseClass classClass classVersion -> they have their equivalens in TraitDescription (baseTrait classTrait traitVersion)" self assert: (ClassDescription localSelectors difference: TraitDescription localSelectors) equals: #(#superclass:layout: #initializeLayout #baseClass #superclass:withLayoutType:slots: #classClass #initializeLayoutWithSlots: #layoutSized: #classVersion) asSet. "isClassTrait, baseTrait, traitVersion, isBaseTrait, classTrait -> They have their equivalents in ClassDescription but with different name, the problem comes from the name of the selector, they are not good names copyTraitExpresion addExclusionOf: have no equivalent in classes" self assert: (TraitDescription localSelectors difference: ClassDescription localSelectors) equals: #(#isClassTrait #addExclusionOf: #copyTraitExpression #baseTrait #- #traitVersion #isBaseTrait #classTrait) asSet. ! ! ProcessTest removeSelector: #tearDown! SubclassPoolUser class removeSelector: #author! SubclassPoolUser class removeSelector: #gloups! ClassTestCase subclass: #ClassTest instanceVariableNames: 'className renamedName' classVariableNames: '' poolDictionaries: '' category: 'KernelTests-Classes'! DatePrintFormatTester removeSelector: #executeShould:inScopeOf:withDescriptionContaining:! DatePrintFormatTester removeSelector: #executeShould:inScopeOf:withDescriptionNotContaining:! !NonBooleanReceiver methodsFor: 'signaledexception' stamp: 'hmm 7/29/2001 21:37'! isResumable ^true! ! !NonBooleanReceiver methodsFor: 'signaledexception' stamp: 'hmm 7/29/2001 21:37'! isResumable ^true! ! !BlockCannotReturn methodsFor: 'exceptiondescription' stamp: 'tfei 4/2/1999 15:49'! isResumable ^true! ! !BlockCannotReturn methodsFor: 'exceptiondescription' stamp: 'tfei 3/30/1999 12:55'! defaultAction self messageText: 'Block cannot return'. ^super defaultAction! ! !BlockCannotReturn methodsFor: 'exceptiondescription' stamp: 'tfei 4/2/1999 15:49'! isResumable ^true! ! !BlockCannotReturn methodsFor: 'exceptiondescription' stamp: 'tfei 3/30/1999 12:55'! defaultAction self messageText: 'Block cannot return'. ^super defaultAction! ! Class class removeSelector: #allSuperclassesFor:cache:! Class class removeSelector: #doesNotIncludeInstanceOrSuperclassesFor:in:cache:! Class class removeSelector: #fileOutPool:! Class class removeSelector: #hasNoDependenciesFor:in:cache:! Class class removeSelector: #hasNoDependenciesForMetaclass:in:cache:! Class class removeSelector: #hasNoSuperclassesOf:in:cache:! Class class removeSelector: #rootsOfTheWorld! Class class removeSelector: #superclassOrder:! Class class removeSelector: #template:! Class class removeSelector: #templateForSubclassOf:category:! ExtendedNumberParser removeSelector: #nextInteger! !BlockCannotReturn reorganize! (#exceptiondescription isResumable defaultAction) ('accessing' result: deadHome deadHome: result) ! !NonBooleanReceiver reorganize! (#signaledexception isResumable) ('accessing' object object:) ! Integer removeSelector: #asFloat! Smalltalk removeClassNamed: #InvalidArgument!