[squeak-dev] The Trunk: Tests-dtl.380.mcz

commits at source.squeak.org commits at source.squeak.org
Sun Aug 6 16:18:59 UTC 2017


David T. Lewis uploaded a new version of Tests to project The Trunk:
http://source.squeak.org/trunk/Tests-dtl.380.mcz

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

Name: Tests-dtl.380
Author: dtl
Time: 6 August 2017, 12:18:36.034473 pm
UUID: a7c7e81f-c7f5-425f-8301-2e289bde3da1
Ancestors: Tests-eem.379

CompiledCode and its subclasses are a special case, and are identified as class type #compiledMethod rather than #bytes. An MCClassDefinition should identify this type correctly, otherwise changes to these classes may not be saved and reloaded correctly.

Add tests to verify this for MCClassDefinition, and categorize the tests.

=============== Diff against Tests-eem.379 ===============

Item was changed:
  SystemOrganization addCategory: #'Tests-Bugs'!
  SystemOrganization addCategory: #'Tests-Compiler'!
  SystemOrganization addCategory: #'Tests-Dependencies'!
  SystemOrganization addCategory: #'Tests-Digital Signatures'!
  SystemOrganization addCategory: #'Tests-Environments'!
  SystemOrganization addCategory: #'Tests-Exceptions'!
  SystemOrganization addCategory: #'Tests-FilePackage'!
  SystemOrganization addCategory: #'Tests-Files'!
  SystemOrganization addCategory: #'Tests-Finalization'!
  SystemOrganization addCategory: #'Tests-Hex'!
  SystemOrganization addCategory: #'Tests-Installer-Core'!
  SystemOrganization addCategory: #'Tests-Localization'!
  SystemOrganization addCategory: #'Tests-Monticello'!
  SystemOrganization addCategory: #'Tests-Monticello-Mocks'!
  SystemOrganization addCategory: #'Tests-Monticello-Utils'!
  SystemOrganization addCategory: #'Tests-Object Events'!
  SystemOrganization addCategory: #'Tests-ObjectsAsMethods'!
  SystemOrganization addCategory: #'Tests-PrimCallController'!
  SystemOrganization addCategory: #'Tests-Release'!
  SystemOrganization addCategory: #'Tests-System-Object Storage'!
  SystemOrganization addCategory: #'Tests-System-Support'!
  SystemOrganization addCategory: #'Tests-Utilities'!
  SystemOrganization addCategory: #'Tests-VM'!
  SystemOrganization addCategory: #'Tests-System-Digital Signatures'!
  SystemOrganization addCategory: #'Tests-System-Preferences'!
- SystemOrganization addCategory: #'Tests-MonticelloMocks'!

Item was changed:
+ ----- Method: MCClassDefinitionTest>>classAComment (in category 'running') -----
- ----- Method: MCClassDefinitionTest>>classAComment (in category 'as yet unclassified') -----
  classAComment
  	^ self class classAComment!

Item was changed:
+ ----- Method: MCClassDefinitionTest>>creationMessage (in category 'running') -----
- ----- Method: MCClassDefinitionTest>>creationMessage (in category 'as yet unclassified') -----
  creationMessage
  	^ MessageSend
  		receiver: MCClassDefinition
  		selector: #name:superclassName:category:instVarNames:classVarNames:poolDictionaryNames:classInstVarNames:type:comment:commentStamp:!

Item was changed:
+ ----- Method: MCClassDefinitionTest>>tearDown (in category 'running') -----
- ----- Method: MCClassDefinitionTest>>tearDown (in category 'as yet unclassified') -----
  tearDown
  
  	super tearDown.
  	Smalltalk at: 'MCMockClassC' ifPresent: [:c | c removeFromSystem]!

Item was changed:
+ ----- Method: MCClassDefinitionTest>>testCannotLoad (in category 'testing') -----
- ----- Method: MCClassDefinitionTest>>testCannotLoad (in category 'as yet unclassified') -----
  testCannotLoad
  	| d |
  	d :=  self mockClass: 'MCMockClassC' super: 'NotAnObject'.
  	self should: [d load] raise: Error.
  	self deny: (Smalltalk hasClassNamed: 'MCMockClassC').!

Item was changed:
+ ----- Method: MCClassDefinitionTest>>testComparison (in category 'testing') -----
- ----- Method: MCClassDefinitionTest>>testComparison (in category 'as yet unclassified') -----
  testComparison
  	| d1 d2 d3 d4 |
  	d1 := self mockClass: 'A' super: 'X'.
  	d2 := self mockClass: 'A' super: 'Y'.
  	d3 := self mockClass: 'B' super: 'X'.
  	d4 := self mockClass: 'B' super: 'X'.
  	
  	self assert: (d1 isRevisionOf: d2).
  	self deny: (d1 isSameRevisionAs: d2).
  
  	self assert: (d3 isRevisionOf: d4).
  	self assert: (d3 isSameRevisionAs: d4).
  	
  	self deny: (d1 isRevisionOf: d3).
  	self deny: (d4 isRevisionOf: d2).!

Item was changed:
+ ----- Method: MCClassDefinitionTest>>testCreation (in category 'testing') -----
- ----- Method: MCClassDefinitionTest>>testCreation (in category 'as yet unclassified') -----
  testCreation
  	| d |
  	d :=  self mockClassA asClassDefinition.
  	self assert: d className = #MCMockClassA.
  	self assert: d superclassName = #MCMock.
  	self assert: d type = #normal.
  	self assert: d category = self mockCategoryName.
  	self assert: d instVarNames asArray = #('ivar').
  	self assert: d classVarNames asArray = #('CVar').
  	self assert: d classInstVarNames asArray = #().
  	self assert: d comment isString.
  	self assert: d comment = self classAComment.
  	self assert: d commentStamp = self mockClassA organization commentStamp!

Item was changed:
+ ----- Method: MCClassDefinitionTest>>testDefinitionString (in category 'testing') -----
- ----- Method: MCClassDefinitionTest>>testDefinitionString (in category 'as yet unclassified') -----
  testDefinitionString
  	| d |
  	d := self mockClassA asClassDefinition.
  	self assert: d definitionString = self mockClassA definition.!

Item was changed:
+ ----- Method: MCClassDefinitionTest>>testEquals (in category 'testing') -----
- ----- Method: MCClassDefinitionTest>>testEquals (in category 'as yet unclassified') -----
  testEquals
  	| a b |
  	a := self mockClass: 'ClassA' super: 'SuperA'.
  	b := self mockClass: 'ClassA' super: 'SuperA'.
  	self assert: a = b!

Item was changed:
+ ----- Method: MCClassDefinitionTest>>testEqualsSensitivity (in category 'testing') -----
- ----- Method: MCClassDefinitionTest>>testEqualsSensitivity (in category 'as yet unclassified') -----
  testEqualsSensitivity
  	| message a b defA args defB |
  	message := self creationMessage.
  	a := #(ClassA SuperA CategoryA #(iVarA) #(CVarA) #(PoolA) #(ciVarA)
  			typeA 'A comment' 'A').
  	b := #(ClassB SuperB CategoryB #(iVarB) #(CVarB) #(PoolB) #(ciVarB)
  			typeB 'B comment' 'B').
  	
  	defA := message valueWithArguments: a.
  	1 to: 8 do: [:index |
  				args := a copy.
  				args at: index put: (b at: index).
  				defB := message valueWithArguments: args.
  				self deny: defA = defB.]!

Item was changed:
+ ----- Method: MCClassDefinitionTest>>testKindOfSubclass (in category 'testing - class type') -----
- ----- Method: MCClassDefinitionTest>>testKindOfSubclass (in category 'as yet unclassified') -----
  testKindOfSubclass
  	{self mockClassA. String. ByteString. WideString. BlockClosure. WeakArray. BoxedFloat64. SmallFloat64. CompiledMethod. ByteArray. DoubleByteArray. IntegerArray. DoubleWordArray. }
  		do: [:c |
  			self assert: c asClassDefinition kindOfSubclass equals: c kindOfSubclass]!

Item was added:
+ ----- Method: MCClassDefinitionTest>>testKindOfSubclassForCompiledBlock (in category 'testing - class type') -----
+ testKindOfSubclassForCompiledBlock
+ 	"CompiledCode and its subclasses are a special case."
+ 	| classDef |
+ 	"CompiledBlock should be like CompiledMethod, both now are subclassed from CompiledCode"
+ 	classDef := self mockClass: #CompiledBlock super: #CompiledCode type: #bytes.
+ 	self assert: #compiledMethod equals: classDef type.
+ 	self assert: CompiledBlock typeOfClass equals: classDef type.
+ !

Item was added:
+ ----- Method: MCClassDefinitionTest>>testKindOfSubclassForCompiledCode (in category 'testing - class type') -----
+ testKindOfSubclassForCompiledCode
+ 	"CompiledCode and its subclasses are a special case."
+ 	| classDef |
+ 	"CompiledMethod is now a subclass of CompiledCode, which is also of type #compiledMethod"
+ 	classDef := self mockClass: #CompiledCode super: #ByteArray type: #bytes.
+ 	self assert: #compiledMethod equals: classDef type.
+ 	self assert: CompiledCode typeOfClass equals: classDef type.
+ 
+ !

Item was added:
+ ----- Method: MCClassDefinitionTest>>testKindOfSubclassForCompiledMethod (in category 'testing - class type') -----
+ testKindOfSubclassForCompiledMethod
+ 	"CompiledCode and its subclasses are a special case."
+ 	| classDef |
+ 	classDef := self mockClass: #CompiledMethod super: #CompiledCode type: #bytes.
+ 	self assert: #compiledMethod equals: classDef type.
+ 	self assert: CompiledMethod typeOfClass equals: classDef type.
+ !

Item was added:
+ ----- Method: MCClassDefinitionTest>>testKindOfSubclassForSocketAddress (in category 'testing - class type') -----
+ testKindOfSubclassForSocketAddress
+ 	"A subclass of ByteArray that is not treated specially"
+ 	| classDef |
+ 	classDef := self mockClass: #SocketAddress super: #ByteArray type: #bytes.
+ 	self assert: #bytes equals: classDef type.
+ 	self assert: SocketAddress typeOfClass equals: classDef type.
+ 
+ !

Item was changed:
+ ----- Method: MCClassDefinitionTest>>testLoadAndUnload (in category 'testing') -----
- ----- Method: MCClassDefinitionTest>>testLoadAndUnload (in category 'as yet unclassified') -----
  testLoadAndUnload
  	| d c |
  	d :=  self mockClass: 'MCMockClassC' super: 'Object'.
  	d load.
  	self assert: (Smalltalk hasClassNamed: 'MCMockClassC').
  	c := (Smalltalk classNamed: 'MCMockClassC').
  	self assert: (c isKindOf: Class).
  	self assert: c superclass = Object.
  	self assert: c instVarNames isEmpty.
  	self assert: c classVarNames isEmpty.
  	self assert: c sharedPools isEmpty.
  	self assert: c category = self mockCategoryName.
  	self assert: c organization classComment = (self commentForClass: 'MCMockClassC').
  	self assert: c organization commentStamp = (self commentStampForClass: 'MCMockClassC').
  	d unload.
  	self deny: (Smalltalk hasClassNamed: 'MCMockClassC').!

Item was changed:
  ----- Method: MCTestCase>>mockClass:super: (in category 'mocks') -----
  mockClass: className super: superclassName
+ 	^ self mockClass: className super: superclassName type: #normal
+ !
- 	^ MCClassDefinition
- 		name:  className
- 		superclassName:  superclassName
- 		category: self mockCategoryName
- 		instVarNames: #()
- 		classVarNames: #()
- 		poolDictionaryNames: #()
- 		classInstVarNames: #()
- 		type: #normal
- 		comment: (self commentForClass: className)
- 		commentStamp: (self commentStampForClass: className)!

Item was added:
+ ----- Method: MCTestCase>>mockClass:super:type: (in category 'mocks') -----
+ mockClass: className super: superclassName type: typeSymbol
+ 	^ MCClassDefinition
+ 		name:  className
+ 		superclassName:  superclassName
+ 		category: self mockCategoryName
+ 		instVarNames: #()
+ 		classVarNames: #()
+ 		poolDictionaryNames: #()
+ 		classInstVarNames: #()
+ 		type: typeSymbol
+ 		comment: (self commentForClass: className)
+ 		commentStamp: (self commentStampForClass: className)!



More information about the Squeak-dev mailing list