MCDependencySorterTest.st
author Claus Gittinger <cg@exept.de>
Mon, 14 May 2018 02:21:18 +0200
changeset 1048 582b3a028cbc
parent 302 46cd82921877
permissions -rw-r--r--
#FEATURE by cg class: MCMethodDefinition changed: #postloadOver:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
302
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/monticello' }"
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
TestCase subclass:#MCDependencySorterTest
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:''
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'Monticello-Tests'
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!MCDependencySorterTest methodsFor:'asserting'!
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
assertItems: anArray orderAs: depOrder withRequired: missingDeps toLoad: unloadableItems
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
	self assertItems: anArray orderAs: depOrder withRequired: missingDeps  toLoad: unloadableItems  extraProvisions: #()
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
!
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
assertItems: anArray orderAs: depOrder withRequired: missingDeps toLoad: unloadableItems extraProvisions: provisions
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	| order sorter items missing unloadable |
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	items := anArray collect: [:ea | self itemWithSpec: ea].
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	sorter := MCDependencySorter items: items.
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
	sorter addExternalProvisions: provisions.
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	order := (sorter orderedItems collect: [:ea | ea name]) asArray.
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
	self assert: order = depOrder.
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
	missing := sorter externalRequirements.
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
	self assert: missing asSet = missingDeps asSet.
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
	unloadable := (sorter itemsWithMissingRequirements collect: [:ea | ea name]) asArray.
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
	self assert: unloadable asSet = unloadableItems asSet
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
! !
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
!MCDependencySorterTest methodsFor:'building'!
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
itemWithSpec: anArray
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
	^ MCMockDependentItem new
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
		name: anArray first;
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
		provides: anArray second;
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
		requires: anArray third
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
! !
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
!MCDependencySorterTest methodsFor:'tests'!
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
testCascadingUnresolved
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
	self assertItems: #(
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
		(a (x) (z))
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
		(b () (x))
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
		(c () ()))
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
	orderAs: #(c)
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
	withRequired: #(z)
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
	toLoad: #(a b)	
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
!
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
testCycle
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
	self assertItems: #(
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
		(a (x) (y))
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
		(b (y) (x)))
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
	orderAs: #()
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
	withRequired: #()
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
	toLoad: #(a b)	
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
!
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
testExtraProvisions
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
	self assertItems:
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
		#((a (x) (z))
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
		(b () (x)))
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
	orderAs: #(a b)
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
	withRequired: #()
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
	toLoad: #()	
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
	extraProvisions: #(x z)
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
!
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
testMultiRequirementOrdering
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
	self assertItems: #(
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
		(a (x) (z))
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
		(b (y) ())
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
		(c (z) ())
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
		(d () (x y z)))
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
		orderAs: #(b c a d)
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
		withRequired: #()
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
		toLoad: #()
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
!
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
testSimpleOrdering
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
	self assertItems: #((a (x) ())
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
								 (c () (y))
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
								 (b (y) (x)))
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
		orderAs: #(a b c)
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
		withRequired: #()
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
		toLoad: #()
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
!
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
testSimpleUnresolved
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
	self assertItems: #(
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
		(a () (z)))
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
	orderAs: #()
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
	withRequired: #(z)
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
	toLoad: #(a)
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
		
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
!
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
testUnusedAlternateProvider
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
	self assertItems: #(
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
		(a (x) (z))
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
		(b () (x))
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
		(c (x) ()))
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
	orderAs: #(c b)
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
	withRequired: #(z)
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
	toLoad: #(a)	
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
! !
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
!MCDependencySorterTest class methodsFor:'documentation'!
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
version
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCDependencySorterTest.st,v 1.1 2011-08-20 12:20:16 cg Exp $'
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
!
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
version_CVS
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCDependencySorterTest.st,v 1.1 2011-08-20 12:20:16 cg Exp $'
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
!
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
version_SVN
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
    ^ '§Id: MCDependencySorterTest.st 5 2010-08-29 07:30:29Z vranyj1 §'
46cd82921877 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
! !