tests/STONTestMap.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 04 Jun 2019 12:33:53 +0100
changeset 0 8f9f6be6af89
permissions -rw-r--r--
Initial port from Pharo Based on 305ae856d4b551 from https://github.com/svenvc/ston.git
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/ston/tests' }"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: Smalltalk }"
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
Dictionary subclass:#STONTestMap
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	instanceVariableNames:''
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	category:'STON-Tests-Support'
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
!STONTestMap class methodsFor:'instance creation'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
classTree
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
	^ self classTree: Object
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
classTree: topClass
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
	| map |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
	map := IdentityDictionary new.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
	topClass withAllSubclasses do: [ :eachClass | | info |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
		(info := self new)
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
			at: #name put: eachClass name asString;
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
			at: #comment put: eachClass comment;
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
			at: #isMeta put: eachClass isMeta;
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
			at: #methods put: eachClass selectors.		
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
		map at: eachClass put: info ].
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
	map keysAndValuesDo: [ :eachClass :eachInfo |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
		eachClass == topClass
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
			ifFalse: [ eachInfo at: #superclass put: (map at: eachClass superclass) ].
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
		eachInfo at: #subclasses put: (eachClass subclasses collect: [ :subClass | map at: subClass ]) ].
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
	^ map at: topClass
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
classTreeExtended
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
	^ self classTreeExtended: Object
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
classTreeExtended: topClass
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
	| map |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
	map := IdentityDictionary new.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
	topClass withAllSubclasses do: [ :eachClass | | info methodsInfo |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
		(info := self new)
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
			at: #name put: eachClass name asString;
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
			at: #comment put: eachClass comment;
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
			at: #isMeta put: eachClass isMeta;
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
			at: #methods put: (methodsInfo := self new).
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
		eachClass methods do: [ :eachMethod | | methodInfo |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
			(methodInfo := self new)
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
				at: #name put: eachMethod selector;
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
				at: #numArgs put: eachMethod numArgs;
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
				at: #class put: info.
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
			methodsInfo at: eachMethod selector put: methodInfo ].
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
		map at: eachClass put: info ].
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
	map keysAndValuesDo: [ :eachClass :eachInfo |
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
		eachClass == topClass 
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
			ifFalse: [ eachInfo at: #superclass put: (map at: eachClass superclass) ].
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
		eachInfo at: #subclasses put: (eachClass subclasses collect: [ :subClass | map at: subClass ]) ].
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
	^ map at: topClass
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
!STONTestMap class methodsFor:'ston-core'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
stonName
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
	^ #TestMap
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
!STONTestMap methodsFor:'printing'!
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
printElementsOn: stream
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
	stream
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
		nextPut: $(;
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
		nextPut: $#;
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
		print: self size;
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
		nextPut: $)
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
! !
8f9f6be6af89 Initial port from Pharo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77