The Trunk: SUnit-eem.93.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: SUnit-eem.93.mcz

commits-2
Eliot Miranda uploaded a new version of SUnit to project The Trunk:
http://source.squeak.org/trunk/SUnit-eem.93.mcz

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

Name: SUnit-eem.93
Author: eem
Time: 27 March 2013, 12:34:18.106 pm
UUID: daa99dec-920c-4091-978e-600a5d57deb3
Ancestors: SUnit-cmm.92

Move ClassTestCase to SUnit-Extensions from Tests.

=============== Diff against SUnit-cmm.92 ===============

Item was added:
+ TestCase subclass: #ClassTestCase
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'SUnit-Extensions'!
+
+ !ClassTestCase commentStamp: 'brp 7/26/2003 16:57' prior: 0!
+ This class is intended for unit tests of individual classes and their metaclasses.
+
+ It provides methods to determine the coverage of the unit tests.
+
+ Subclasses are expected to re-implement #classesToBeTested and #selectorsToBeIgnored.
+
+ They should also implement to confirm that all methods have been tested.
+
+ #testCoverage
+
+ super testCoverage.
+
+ !

Item was added:
+ ----- Method: ClassTestCase class>>isAbstract (in category 'Testing') -----
+ isAbstract
+ "Override to true if a TestCase subclass is Abstract and should not have
+ TestCase instances built from it"
+
+ ^self name = #ClassTestCase
+ !

Item was added:
+ ----- Method: ClassTestCase class>>mustTestCoverage (in category 'Testing') -----
+ mustTestCoverage
+
+ ^ false!

Item was added:
+ ----- Method: ClassTestCase>>categoriesForClass: (in category 'private') -----
+ categoriesForClass: aClass
+
+  ^ aClass organization allMethodSelectors collect:
+ [:each |  aClass organization categoryOfElement: each].
+ !

Item was added:
+ ----- Method: ClassTestCase>>classToBeTested (in category 'coverage') -----
+ classToBeTested
+
+ self subclassResponsibility!

Item was added:
+ ----- Method: ClassTestCase>>selectorsNotTested (in category 'coverage') -----
+ selectorsNotTested
+
+ ^ self selectorsToBeTested difference: self selectorsTested.
+ !

Item was added:
+ ----- Method: ClassTestCase>>selectorsTested (in category 'Coverage') -----
+ selectorsTested
+ | literals |
+ literals := Set new.
+ self class
+ selectorsAndMethodsDo: [ :s :m | (s beginsWith: 'test')
+ ifTrue: [ literals addAll: (m messages)] ].
+ ^ literals asSortedArray!

Item was added:
+ ----- Method: ClassTestCase>>selectorsToBeIgnored (in category 'coverage') -----
+ selectorsToBeIgnored
+ ^ #(#DoIt #DoItIn:)!

Item was added:
+ ----- Method: ClassTestCase>>selectorsToBeTested (in category 'coverage') -----
+ selectorsToBeTested
+
+ ^ ( { self classToBeTested. self classToBeTested class } gather: [:c | c selectors])
+ difference: self selectorsToBeIgnored!

Item was added:
+ ----- Method: ClassTestCase>>targetClass (in category 'private') -----
+ targetClass
+   |className|
+
+   className := self class name asText copyFrom: 0 to: self class name size - 4.
+   ^ Smalltalk at: (className asString asSymbol).
+ !

Item was added:
+ ----- Method: ClassTestCase>>testClassComment (in category 'tests') -----
+ testClassComment
+ self shouldnt: [self targetClass organization hasNoComment].!

Item was added:
+ ----- Method: ClassTestCase>>testCoverage (in category 'tests') -----
+ testCoverage
+
+ | untested |
+ self class mustTestCoverage ifTrue:
+ [ untested := self selectorsNotTested.
+ self assert: untested isEmpty
+ description: untested size asString, ' selectors are not covered' ]!

Item was added:
+ ----- Method: ClassTestCase>>testNew (in category 'tests') -----
+ testNew
+ self shouldnt: [self targetClass new] raise: Error.!

Item was added:
+ ----- Method: ClassTestCase>>testUnCategorizedMethods (in category 'tests') -----
+ testUnCategorizedMethods
+ | categories slips  |
+ categories := self categoriesForClass: self targetClass.
+ slips := categories select: [:each | each = #'as yet unclassified'].
+ self should: [slips isEmpty]. !