[Pkg] The Trunk: SystemChangeNotification-Tests-laza.16.mcz

commits at source.squeak.org commits at source.squeak.org
Fri Nov 4 10:28:50 UTC 2011


Alexander Lazarević uploaded a new version of SystemChangeNotification-Tests to project The Trunk:
http://source.squeak.org/trunk/SystemChangeNotification-Tests-laza.16.mcz

==================== Summary ====================

Name: SystemChangeNotification-Tests-laza.16
Author: laza
Time: 3 November 2011, 8:09:52.984 am
UUID: 8edbb2d9-dbf3-6d44-8e0d-941702d8f7cc
Ancestors: SystemChangeNotification-Tests-laza.15

SystemOrganizer>>addCategory:before: does not trigger any notifications

=============== Diff against SystemChangeNotification-Tests-bp.11 ===============

Item was added:
+ TestCase subclass: #SystemChangeFileTest
+ 	instanceVariableNames: 'tempChangesFile'
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'SystemChangeNotification-Tests'!

Item was added:
+ ----- Method: SystemChangeFileTest>>change:verify: (in category 'testing') -----
+ change: changeBlock verify: verifyBlock
+ 	self prepare: [] change: changeBlock verify: verifyBlock!

Item was added:
+ ----- Method: SystemChangeFileTest>>createClass: (in category 'private') -----
+ createClass: name
+ 	^Object
+ 		subclass: name
+ 		instanceVariableNames: ''
+ 		classVariableNames: ''
+ 		poolDictionaries: ''
+ 		category: self genericClassCategory!

Item was added:
+ ----- Method: SystemChangeFileTest>>directory (in category 'accessing') -----
+ directory
+ 	"Where we want to place the temporary changes file"
+ 	^FileDirectory default!

Item was added:
+ ----- Method: SystemChangeFileTest>>genericClassCategory (in category 'private') -----
+ genericClassCategory
+ 	^(self prefixClassCategory, self randomString capitalized) asSymbol!

Item was added:
+ ----- Method: SystemChangeFileTest>>genericClassName (in category 'private') -----
+ genericClassName
+ 	^(self prefixClassName, self randomString capitalized) asSymbol!

Item was added:
+ ----- Method: SystemChangeFileTest>>genericInstVarName (in category 'private') -----
+ genericInstVarName
+ 	^(self prefixInstVarName, self randomString capitalized) asSymbol!

Item was added:
+ ----- Method: SystemChangeFileTest>>genericProtocol (in category 'private') -----
+ genericProtocol
+ 	^(self prefixProtocol, self randomString) asSymbol!

Item was added:
+ ----- Method: SystemChangeFileTest>>genericSelector (in category 'private') -----
+ genericSelector
+ 	^(self prefixSelector, self randomString capitalized) asSymbol!

Item was added:
+ ----- Method: SystemChangeFileTest>>prefixClassCategory (in category 'private') -----
+ prefixClassCategory
+ 	^self prefixGeneral, 'Category-'!

Item was added:
+ ----- Method: SystemChangeFileTest>>prefixClassName (in category 'private') -----
+ prefixClassName
+ 	^self prefixGeneral, 'Class'!

Item was added:
+ ----- Method: SystemChangeFileTest>>prefixGeneral (in category 'private') -----
+ prefixGeneral
+ 	^self class name select: [:each | each isUppercase]!

Item was added:
+ ----- Method: SystemChangeFileTest>>prefixInstVarName (in category 'private') -----
+ prefixInstVarName
+ 	^self prefixGeneral asLowercase, 'InstVar'!

Item was added:
+ ----- Method: SystemChangeFileTest>>prefixProtocol (in category 'private') -----
+ prefixProtocol
+ 	^self prefixGeneral asLowercase, ' protocol '!

Item was added:
+ ----- Method: SystemChangeFileTest>>prefixSelector (in category 'private') -----
+ prefixSelector
+ 	^self prefixGeneral asLowercase, 'Selector'!

Item was added:
+ ----- Method: SystemChangeFileTest>>prepare:change:verify: (in category 'testing') -----
+ prepare: prepareBlock change: changeBlock verify: verifyBlock
+ 	"All tests follow this pattern. Beware that prepareBlock (and verifyBlock) will be evalutated twice."
+ 	
+ 	"Setup the testcourt"
+ 	prepareBlock value.
+ 	
+ 	"Embrace the changeBlock so that any changes to our testcourt
+ 	gets recorded in our temporary changes file"
+ 	self useTemporaryChangesFile.
+ 	changeBlock value.
+ 	"Check if the changes we made worked as expected. We need to do
+ 	this before we switch back to the standard changes file"
+ 	"We raise an Error if this fails, because then the testcase is broken"
+ 	[verifyBlock value]
+ 		on: TestFailure
+ 		do: [self error: 'The verifyBlock needs to validate the changes made in the changeBlock'].
+ 	self useStandardChangesFile.
+ 
+ 	"Remove the testcourt completely"
+ 	self removeTestcourt.
+ 
+ 	"Setup the testcourt once again"
+ 	prepareBlock value.
+ 
+ 	"Replay the changes from the temporary changes file"
+ 	self replayChanges.
+ 
+ 	"See if we got the same changes as we did before using the changeBlock"
+ 	verifyBlock value.
+ !

Item was added:
+ ----- Method: SystemChangeFileTest>>randomString (in category 'private') -----
+ randomString
+ 	^Character alphabet shuffled!

Item was added:
+ ----- Method: SystemChangeFileTest>>removeTestcourt (in category 'private') -----
+ removeTestcourt
+ 	SystemOrganization categories do: [:each |
+ 		(each beginsWith: self prefixClassCategory) ifTrue: [
+ 			SystemOrganization removeSystemCategory: each.
+ 		].
+ 	].
+ 		
+ !

Item was added:
+ ----- Method: SystemChangeFileTest>>replayChanges (in category 'private') -----
+ replayChanges
+ 	| file |
+ 	file := FileStream fileNamed: (self directory fullNameFor: self tempChangesName).
+ 	Transcript show: file contents; cr.
+ 	file fileIn.
+ !

Item was added:
+ ----- Method: SystemChangeFileTest>>tearDown (in category 'running') -----
+ tearDown
+ 	self useStandardChangesFile.
+ 	tempChangesFile := tempChangesFile ifNotNil: [tempChangesFile close].
+ 	(self directory fileExists: self tempChangesName)
+ 		ifTrue: [self directory deleteFileNamed: self tempChangesName].
+ 	self removeTestcourt.
+ !

Item was added:
+ ----- Method: SystemChangeFileTest>>tempChangesName (in category 'accessing') -----
+ tempChangesName
+ 	^'temp.changes'!

Item was added:
+ ----- Method: SystemChangeFileTest>>testCategoryAdded (in category 'testing') -----
+ testCategoryAdded
+ 	| aClassCategory |
+ 	aClassCategory := self genericClassCategory.
+ 	self
+ 		change: [
+ 			SystemOrganization addCategory: aClassCategory.
+ 		]
+ 		verify: [
+ 			self assert: (SystemOrganization categories includes: aClassCategory).
+ 		]
+ !

Item was added:
+ ----- Method: SystemChangeFileTest>>testCategoryAddedBefore (in category 'testing') -----
+ testCategoryAddedBefore
+ 	| aClassCategory |
+ 	aClassCategory := self genericClassCategory.
+ 	self
+ 		change: [
+ 			SystemOrganization addCategory: aClassCategory before: nil.
+ 		]
+ 		verify: [
+ 			self assert: (SystemOrganization categories includes: aClassCategory).
+ 		]
+ !

Item was added:
+ ----- Method: SystemChangeFileTest>>testCategoryModified (in category 'as yet unclassified') -----
+ testCategoryModified!

Item was added:
+ ----- Method: SystemChangeFileTest>>testCategoryRemoved (in category 'testing') -----
+ testCategoryRemoved
+ 	| aClassCategory |
+ 	aClassCategory := self genericClassCategory.
+ 	self
+ 		prepare: [
+ 			SystemOrganization addCategory: aClassCategory.
+ 		]
+ 		change: [
+ 			SystemOrganization removeCategory: aClassCategory.
+ 		]
+ 		verify: [
+ 			self deny: (SystemOrganization categories includes: aClassCategory).
+ 		]
+ !

Item was added:
+ ----- Method: SystemChangeFileTest>>testCategoryRenamed (in category 'testing') -----
+ testCategoryRenamed
+ 	| aNewClassCategory anOldClassCategory |
+ 	anOldClassCategory := self genericClassCategory.
+ 	aNewClassCategory := self genericClassCategory.
+ 	self
+ 		prepare: [
+ 			SystemOrganization addCategory: anOldClassCategory.
+ 		]
+ 		change: [
+ 			SystemOrganization renameCategory: anOldClassCategory toBe: aNewClassCategory
+ 		]
+ 		verify: [
+ 			self assert: (SystemOrganization categories includes: aNewClassCategory).
+ 			self deny: (SystemOrganization categories includes: anOldClassCategory).
+ 		]
+ !

Item was added:
+ ----- Method: SystemChangeFileTest>>testClassAdded (in category 'testing') -----
+ testClassAdded
+ 	| aClassName |
+ 	aClassName := self genericClassName.
+ 	self
+ 		change: [
+ 			self createClass: aClassName.
+ 		]
+ 		verify: [
+ 			self assert: (Smalltalk keys includes: aClassName).
+ 		]
+ 
+ !

Item was added:
+ ----- Method: SystemChangeFileTest>>testClassCommented (in category 'testing') -----
+ testClassCommented
+ 	| aClass aClassName aComment |
+ 	aClassName := self genericClassName.
+ 	self
+ 		prepare: [
+ 			aClass := self createClass: aClassName.
+ 		]
+ 		change: [
+ 			aComment := self randomString.
+ 			aClass classComment: aComment.
+ 		]
+ 		verify: [
+ 			self assert: aClass organization classComment string = aComment.
+ 		].!

Item was added:
+ ----- Method: SystemChangeFileTest>>testClassModified (in category 'testing') -----
+ testClassModified
+ 	| aClass aClassName aInstVarName |
+ 	aClassName := self genericClassName.
+ 	self
+ 		prepare: [
+ 			aClass := self createClass: aClassName.
+ 		]
+ 		change: [
+ 			aInstVarName := self genericInstVarName.
+ 			aClass addInstVarName: aInstVarName.
+ 		]
+ 		verify: [
+ 			self assert: (aClass instVarNames includes: aInstVarName).
+ 		].!

Item was added:
+ ----- Method: SystemChangeFileTest>>testClassRecategorized (in category 'as yet unclassified') -----
+ testClassRecategorized!

Item was added:
+ ----- Method: SystemChangeFileTest>>testClassRemoved (in category 'testing') -----
+ testClassRemoved
+ 	| aClass aClassName |
+ 	aClassName := self genericClassName.
+ 	self
+ 		prepare: [
+ 			aClass := self createClass: aClassName.
+ 		]
+ 		change: [
+ 			aClass removeFromSystem.
+ 		]
+ 		verify: [
+ 			self deny: (Smalltalk keys includes: aClassName).
+ 		].
+ !

Item was added:
+ ----- Method: SystemChangeFileTest>>testClassRenamed (in category 'testing') -----
+ testClassRenamed
+ 	| aClass aNewClassName anOldClassName |
+ 	anOldClassName := self genericClassName.
+ 	aNewClassName := self genericClassName.
+ 	self
+ 		prepare: [
+ 			aClass := self createClass: anOldClassName.
+ 		]
+ 		change: [
+ 			aClass rename: aNewClassName.
+ 		]
+ 		verify: [
+ 			self assert: (Smalltalk keys includes: aNewClassName).
+ 			self deny: (Smalltalk keys includes: anOldClassName).
+ 		].!

Item was added:
+ ----- Method: SystemChangeFileTest>>testClassReorganized (in category 'as yet unclassified') -----
+ testClassReorganized!

Item was added:
+ ----- Method: SystemChangeFileTest>>testExpressionDoIt (in category 'testing') -----
+ testExpressionDoIt
+ 	| aClassName |
+ 	aClassName := self genericClassName..
+ 	self
+ 		prepare: [
+ 			self createClass: aClassName.
+ 		]
+ 		change: [
+ 			Compiler evaluate: '(Smalltalk at: ', aClassName storeString, ') removeFromSystem'.
+ 		]
+ 		verify: [
+ 			self deny: (Smalltalk keys includes: aClassName).
+ 		].!

Item was added:
+ ----- Method: SystemChangeFileTest>>testMethodAdded (in category 'testing') -----
+ testMethodAdded
+ 	| aClassName aClass aSelector |
+ 	aClassName := self genericClassName.
+ 	self
+ 		prepare: [
+ 			aClass := self createClass: aClassName.
+ 		]
+ 		change: [
+ 			aSelector := self genericSelector.
+ 			aClass compile: aSelector.
+ 		]
+ 		verify: [
+ 			self assert: (aClass methodDict keys includes: aSelector).
+ 		]
+ 
+ !

Item was added:
+ ----- Method: SystemChangeFileTest>>testMethodModified (in category 'testing') -----
+ testMethodModified
+ 	| aClassName aClass aSelector aMethodSource |
+ 	aClassName := self genericClassName.
+ 	aSelector := self genericSelector.
+ 	self
+ 		prepare: [
+ 			aClass := self createClass: aClassName.
+ 			aClass compile: aSelector, ' ', self randomString storeString.
+ 		]
+ 		change: [
+ 			aMethodSource := aSelector, ' ', self randomString storeString.
+ 			aClass compile: aMethodSource.
+ 		]
+ 		verify: [
+ 			self assert: (aClass sourceCodeAt: aSelector) string = aMethodSource.
+ 		]
+ 
+ !

Item was added:
+ ----- Method: SystemChangeFileTest>>testMethodRecategorized (in category 'testing') -----
+ testMethodRecategorized
+ 	| aClassName aClass aNewProtocol aSelector anOldProtocol |
+ 	aClassName := self genericClassName.
+ 	aSelector := self genericSelector.
+ 	anOldProtocol := self genericProtocol.
+ 	self
+ 		prepare: [
+ 			aClass := self createClass: aClassName.
+ 			aClass compile: aSelector classified: anOldProtocol.
+ 		]
+ 		change: [
+ 			aNewProtocol := self genericProtocol.
+ 			aClass organization classify: aSelector under: aNewProtocol.
+ 		]
+ 		verify: [
+ 			self assert: (aClass organization categoryOfElement: aSelector) = aNewProtocol
+ 		]
+ 
+ !

Item was added:
+ ----- Method: SystemChangeFileTest>>testMethodRemoved (in category 'testing') -----
+ testMethodRemoved
+ 	| aClassName aClass aSelector |
+ 	aClassName := self genericClassName.
+ 	aSelector := self genericSelector.
+ 	self
+ 		prepare: [
+ 			aClass := self createClass: aClassName.
+ 			aClass compile: aSelector.
+ 		]
+ 		change: [
+ 			aClass removeSelector: aSelector.
+ 		]
+ 		verify: [
+ 			self deny: (aClass methodDict keys includes: aSelector).
+ 		]
+ 
+ !

Item was added:
+ ----- Method: SystemChangeFileTest>>testProtocolAdded (in category 'testing') -----
+ testProtocolAdded
+ 	| aClassName aClass aProtocol |
+ 	aClassName := self genericClassName.
+ 	aProtocol := self genericProtocol.
+ 	self
+ 		prepare: [
+ 			aClass := self createClass: aClassName.
+ 		]
+ 		change: [
+ 			aClass organization addCategory: aProtocol.
+ 		]
+ 		verify: [
+ 			self assert: (aClass organization categories includes: aProtocol)
+ 		]
+ 
+ !

Item was added:
+ ----- Method: SystemChangeFileTest>>testProtocolDefault (in category 'testing') -----
+ testProtocolDefault
+ 	| aClassName aClass aSelector |
+ 	aClassName := self genericClassName.
+ 	self
+ 		prepare: [
+ 			aClass := self createClass: aClassName.
+ 		]
+ 		change: [
+ 			aSelector := self genericSelector.
+ 			aClass compile: aSelector.
+ 		]
+ 		verify: [
+ 			self assert: (aClass organization categoryOfElement: aSelector) = aClass organization class default.
+ 		]
+ 
+ !

Item was added:
+ ----- Method: SystemChangeFileTest>>testProtocolModified (in category 'as yet unclassified') -----
+ testProtocolModified!

Item was added:
+ ----- Method: SystemChangeFileTest>>testProtocolRemoved (in category 'testing') -----
+ testProtocolRemoved
+ 	| aClassName aClass aProtocol |
+ 	aClassName := self genericClassName.
+ 	aProtocol := self genericProtocol.
+ 	self
+ 		prepare: [
+ 			aClass := self createClass: aClassName.
+ 			aClass organization addCategory: aProtocol.
+ 		]
+ 		change: [
+ 			aClass organization removeCategory: aProtocol.
+ 		]
+ 		verify: [
+ 			self deny: (aClass organization categories includes: aProtocol)
+ 		]
+ 
+ !

Item was added:
+ ----- Method: SystemChangeFileTest>>testProtocolRenamed (in category 'testing') -----
+ testProtocolRenamed
+ 	| aClassName aClass anOldProtocol aNewProtocol |
+ 	aClassName := self genericClassName.
+ 	anOldProtocol := self genericProtocol.
+ 	self
+ 		prepare: [
+ 			aClass := self createClass: aClassName.
+ 			aClass organization addCategory: anOldProtocol.
+ 		]
+ 		change: [
+ 			aNewProtocol := self genericProtocol.
+ 			aClass organization renameCategory: anOldProtocol toBe: aNewProtocol.
+ 		]
+ 		verify: [
+ 			self deny: (aClass organization categories includes: anOldProtocol).
+ 			self assert: (aClass organization categories includes: aNewProtocol).
+ 		]
+ 
+ !

Item was added:
+ ----- Method: SystemChangeFileTest>>useStandardChangesFile (in category 'private') -----
+ useStandardChangesFile
+ 	Smalltalk
+ 		closeSourceFiles;
+ 		openSourceFiles!

Item was added:
+ ----- Method: SystemChangeFileTest>>useTemporaryChangesFile (in category 'private') -----
+ useTemporaryChangesFile
+ 	Smalltalk closeSourceFiles.
+ 	tempChangesFile := self directory forceNewFileNamed: self tempChangesName.
+ 	SourceFiles at: 2 put: tempChangesFile!



More information about the Packages mailing list