initial checkin
authorClaus Gittinger <cg@exept.de>
Wed, 22 Nov 2006 14:02:23 +0100
changeset 21 b263d80be43d
parent 20 5a87e5e6da56
child 22 94d7b29d35e9
initial checkin
test/MCSortingTest.st
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/MCSortingTest.st	Wed Nov 22 14:02:23 2006 +0100
@@ -0,0 +1,83 @@
+"{ Package: 'stx:goodies/monticello/test' }"
+
+TestCase subclass:#MCSortingTest
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Monticello-Tests'
+!
+
+
+!MCSortingTest methodsFor:'actions'!
+
+sortDefinitions: aCollection
+	^ aCollection asSortedCollection asArray
+! !
+
+!MCSortingTest methodsFor:'building'!
+
+classNamed: aSymbol
+	^ MCClassDefinition
+		name: aSymbol
+		superclassName: #Object
+		category: ''
+		instVarNames: #()
+		comment: ''
+!
+
+methodNamed: aSymbol class: className meta: aBoolean
+	^ MCMethodDefinition
+		className: className
+		classIsMeta: aBoolean
+		selector: aSymbol
+		category: ''
+		timeStamp: ''
+		source: ''
+!
+
+sortKeyFor: aDefinition
+	^ String streamContents:
+		[:s |
+		aDefinition description
+			do: [:ea | s nextPutAll: ea asString]
+			separatedBy: [s nextPut: $.]]
+! !
+
+!MCSortingTest methodsFor:'tests'!
+
+testConsistentSorting
+	| definitions shuffledAndSorted|
+	definitions _
+		{self methodNamed: #a class: #A meta: false.
+		self methodNamed: #a class: #A meta: true.
+		self methodNamed: #a class: #B meta: false.
+		self methodNamed: #b class: #A meta: false.
+		self methodNamed: #b class: #B meta: false.
+		self classNamed: #A.
+		self classNamed: #B}.
+	shuffledAndSorted _
+		(1 to: 100) collect: [:ea | self sortDefinitions: definitions shuffled].
+	self assert: shuffledAndSorted asSet size = 1.
+!
+
+testSortOrder
+	| aA aAm aB bA bB A B cA bAm cAm |
+	aA _ self methodNamed: #a class: #A meta: false.
+	bA _ self methodNamed: #b class: #A meta: false.
+	cA _ self methodNamed: #c class: #A meta: false.
+	aAm _ self methodNamed: #a class: #A meta: true.
+	bAm _ self methodNamed: #b class: #A meta: true.
+	cAm _ self methodNamed: #c class: #A meta: true.
+	aB _ self methodNamed: #a class: #B meta: false.
+	bB _ self methodNamed: #b class: #B meta: false.
+	A _ self classNamed: #A.
+	B _ self classNamed: #B.
+	self assert: (self sortDefinitions: {aA. aAm. cAm. aB. bAm. bA. bB. A. cA. B})
+					= {A. aAm. bAm. cAm. aA. bA. cA. B. aB.  bB}
+! !
+
+!MCSortingTest class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/goodies/monticello/test/MCSortingTest.st,v 1.1 2006-11-22 13:02:23 cg Exp $'
+! !