test/MCSortingTest.st
author Claus Gittinger <cg@exept.de>
Mon, 14 May 2018 02:21:18 +0200
changeset 1048 582b3a028cbc
parent 825 6f278dfe53c7
child 1121 c5661215109c
permissions -rw-r--r--
#FEATURE by cg class: MCMethodDefinition changed: #postloadOver:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
21
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/monticello/test' }"
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
TestCase subclass:#MCSortingTest
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:''
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
825
6f278dfe53c7 Tests moved to category SCM-Monticello-Tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
     7
	category:'SCM-Monticello-Tests'
21
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!MCSortingTest methodsFor:'actions'!
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
sortDefinitions: aCollection
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
	^ aCollection asSortedCollection asArray
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
! !
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
!MCSortingTest methodsFor:'building'!
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
classNamed: aSymbol
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	^ MCClassDefinition
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
		name: aSymbol
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
		superclassName: #Object
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
		category: ''
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
		instVarNames: #()
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
		comment: ''
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
!
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
methodNamed: aSymbol class: className meta: aBoolean
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
	^ MCMethodDefinition
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
		className: className
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
		classIsMeta: aBoolean
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
		selector: aSymbol
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
		category: ''
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
		timeStamp: ''
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
		source: ''
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
!
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
sortKeyFor: aDefinition
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
	^ String streamContents:
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
		[:s |
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
		aDefinition description
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
			do: [:ea | s nextPutAll: ea asString]
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
			separatedBy: [s nextPut: $.]]
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
! !
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
!MCSortingTest methodsFor:'tests'!
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
testConsistentSorting
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
	| definitions shuffledAndSorted|
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
	definitions _
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
		{self methodNamed: #a class: #A meta: false.
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
		self methodNamed: #a class: #A meta: true.
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
		self methodNamed: #a class: #B meta: false.
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
		self methodNamed: #b class: #A meta: false.
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
		self methodNamed: #b class: #B meta: false.
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
		self classNamed: #A.
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
		self classNamed: #B}.
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
	shuffledAndSorted _
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
		(1 to: 100) collect: [:ea | self sortDefinitions: definitions shuffled].
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
	self assert: shuffledAndSorted asSet size = 1.
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
!
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
testSortOrder
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
	| aA aAm aB bA bB A B cA bAm cAm |
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
	aA _ self methodNamed: #a class: #A meta: false.
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
	bA _ self methodNamed: #b class: #A meta: false.
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
	cA _ self methodNamed: #c class: #A meta: false.
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
	aAm _ self methodNamed: #a class: #A meta: true.
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
	bAm _ self methodNamed: #b class: #A meta: true.
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
	cAm _ self methodNamed: #c class: #A meta: true.
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
	aB _ self methodNamed: #a class: #B meta: false.
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
	bB _ self methodNamed: #b class: #B meta: false.
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
	A _ self classNamed: #A.
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
	B _ self classNamed: #B.
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
	self assert: (self sortDefinitions: {aA. aAm. cAm. aB. bAm. bA. bB. A. cA. B})
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
					= {A. aAm. bAm. cAm. aA. bA. cA. B. aB.  bB}
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
! !
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
!MCSortingTest class methodsFor:'documentation'!
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
version
825
6f278dfe53c7 Tests moved to category SCM-Monticello-Tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
    82
    ^ '$Header: /cvs/stx/stx/goodies/monticello/test/MCSortingTest.st,v 1.2 2013-05-29 00:02:42 vrany Exp $'
21
b263d80be43d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
! !
825
6f278dfe53c7 Tests moved to category SCM-Monticello-Tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
    84