Skip to content

tests for rules from the General-Rules package #16474

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
May 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions src/General-Rules-Tests/ReClassNotCategorizedRuleTest.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
Class {
#name : 'ReClassNotCategorizedRuleTest',
#superclass : 'ReAbstractRuleTestCase',
#instVars : [
'classFactory'
],
#category : 'General-Rules-Tests-Migrated',
#package : 'General-Rules-Tests',
#tag : 'Migrated'
}

{ #category : 'running' }
ReClassNotCategorizedRuleTest >> setUp [

super setUp.
classFactory := ClassFactoryForTestCase new
]

{ #category : 'running' }
ReClassNotCategorizedRuleTest >> tearDown [

classFactory cleanUp.
super tearDown
]

{ #category : 'tests' }
ReClassNotCategorizedRuleTest >> testAllClassesAreNotTagged [

| critiques aClass anotherClass |
aClass := classFactory make: [ :builder |
builder package: 'aPackage' ].
anotherClass := classFactory make: [ :builder |
builder package: 'aPackage' ].
critiques := self myCritiquesOnClass: aClass.
self assertEmpty: critiques.
critiques := self myCritiquesOnClass: anotherClass.
self assertEmpty: critiques
]

{ #category : 'tests' }
ReClassNotCategorizedRuleTest >> testRule [

| classCatorized classNotCatorized critiques |
classCatorized := classFactory make: [ :builder |
builder
tag: 'aTag';
package: 'aPackage' ].
classNotCatorized := classFactory make: [ :builder |
builder package: 'aPackage' ].
critiques := self myCritiquesOnClass: classNotCatorized.
self assert: critiques size equals: 1
]

{ #category : 'tests' }
ReClassNotCategorizedRuleTest >> testRuleNotViolated [

| classCatorized anotherClassCatorized critiques |
classCatorized := classFactory make: [ :builder |
builder
tag: 'aTag';
package: 'aPackage' ].
anotherClassCatorized := classFactory make: [ :builder |
builder
tag: 'aTag';
package: 'aPackage' ].
critiques := self myCritiquesOnClass: anotherClassCatorized.
self assertEmpty: critiques
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
Class {
#name : 'ReClassVariableCapitalizationRuleTest',
#superclass : 'ReAbstractRuleTestCase',
#instVars : [
'classFactory'
],
#category : 'General-Rules-Tests-Migrated',
#package : 'General-Rules-Tests',
#tag : 'Migrated'
}

{ #category : 'running' }
ReClassVariableCapitalizationRuleTest >> setUp [

super setUp.
classFactory := ClassFactoryForTestCase new
"Put here a common initialization logic for tests"
]

{ #category : 'running' }
ReClassVariableCapitalizationRuleTest >> tearDown [
classFactory cleanUp.
super tearDown
]

{ #category : 'tests' }
ReClassVariableCapitalizationRuleTest >> testPoolVariableNameStartWithLowerCase [

| critiques myClass |
myClass := classFactory make: [ :builder |
builder sharedVariables: { #pool }].
critiques := self myCritiquesOnClass: myClass.
self assert: critiques size equals: 1
]

{ #category : 'tests' }
ReClassVariableCapitalizationRuleTest >> testRuleNotViolated [

| critiques myClass |
myClass := classFactory make: [ :builder |
builder sharedVariables: { #Pool } ].
critiques := self myCritiquesOnClass: myClass.
self assertEmpty: critiques
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
Class {
#name : 'ReEquivalentSuperclassMethodsRuleTest',
#superclass : 'ReAbstractRuleTestCase',
#category : 'General-Rules-Tests-Migrated',
#package : 'General-Rules-Tests',
#tag : 'Migrated'
}

{ #category : 'tests' }
ReEquivalentSuperclassMethodsRuleTest >> testRule [

| critiques |
self class compile: 'myCritiques ^ self myCritiquesOnMethod: self class >> #sampleMethod'.
critiques := self myCritiquesOnMethod: self class >> #myCritiques.
self assert: critiques size equals: 1.
[ "code of the test" ] ensure: [ (self class >> #myCritiques ) removeFromSystem ]
]

{ #category : 'tests' }
ReEquivalentSuperclassMethodsRuleTest >> testRuleNotViolated [

| critiques |
self class compile: 'myCritiques ^true'.
critiques := self myCritiquesOnMethod: self class >> #myCritiques.
self assertEmpty: critiques.
[ "code of the test" ] ensure: [ (self class >> #myCritiques ) removeFromSystem ]
]
72 changes: 72 additions & 0 deletions src/General-Rules-Tests/ReExcessiveInheritanceRuleTest.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
Class {
#name : 'ReExcessiveInheritanceRuleTest',
#superclass : 'ReAbstractRuleTestCase',
#instVars : [
'classFactory'
],
#category : 'General-Rules-Tests-Migrated',
#package : 'General-Rules-Tests',
#tag : 'Migrated'
}

{ #category : 'running' }
ReExcessiveInheritanceRuleTest >> setUp [

super setUp.
classFactory := ClassFactoryForTestCase new
]

{ #category : 'running' }
ReExcessiveInheritanceRuleTest >> tearDown [

classFactory cleanUp.
super tearDown
]

{ #category : 'tests' }
ReExcessiveInheritanceRuleTest >> testRule [
"the superclass of ClassFactoryForTestCase is Object so the inheritance depth start at 2"
| critiques aClass subClass1 subClass2 subClass3 subClass4 subClass5 subClass6 subClass7 myClass |
aClass := classFactory make: [ :builder | builder ].
subClass1 := classFactory make: [ :builder |
builder superclass: aClass ].
subClass2 := classFactory make: [ :builder |
builder superclass: subClass1 ].
subClass3 := classFactory make: [ :builder |
builder superclass: subClass2 ].
subClass4 := classFactory make: [ :builder |
builder superclass: subClass3 ].
subClass5 := classFactory make: [ :builder |
builder superclass: subClass4 ].
subClass6 := classFactory make: [ :builder |
builder superclass: subClass5 ].
subClass7 := classFactory make: [ :builder |
builder superclass: subClass6 ].
myClass := classFactory make: [ :builder |
builder superclass: subClass7 ].
critiques := self myCritiquesOnClass: myClass.
self assert: critiques size equals: 1
]

{ #category : 'tests' }
ReExcessiveInheritanceRuleTest >> testRuleNotViolated [

| critiques aClass subClass1 subClass2 subClass3 subClass4 subClass5 subClass6 myClass |
aClass := classFactory make: [ :builder | builder ].
subClass1 := classFactory make: [ :builder |
builder superclass: aClass ].
subClass2 := classFactory make: [ :builder |
builder superclass: subClass1 ].
subClass3 := classFactory make: [ :builder |
builder superclass: subClass2 ].
subClass4 := classFactory make: [ :builder |
builder superclass: subClass3 ].
subClass5 := classFactory make: [ :builder |
builder superclass: subClass4 ].
subClass6 := classFactory make: [ :builder |
builder superclass: subClass5 ].
myClass := classFactory make: [ :builder |
builder superclass: subClass6 ].
critiques := self myCritiquesOnClass: myClass.
self assertEmpty: critiques
]
43 changes: 43 additions & 0 deletions src/General-Rules-Tests/ReExcessiveVariablesRuleTest.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
Class {
#name : 'ReExcessiveVariablesRuleTest',
#superclass : 'ReAbstractRuleTestCase',
#instVars : [
'classFactory'
],
#category : 'General-Rules-Tests-Migrated',
#package : 'General-Rules-Tests',
#tag : 'Migrated'
}

{ #category : 'running' }
ReExcessiveVariablesRuleTest >> setUp [
super setUp.
classFactory := ClassFactoryForTestCase new
]

{ #category : 'running' }
ReExcessiveVariablesRuleTest >> tearDown [
classFactory cleanUp.
super tearDown
]

{ #category : 'tests' }
ReExcessiveVariablesRuleTest >> testRule [

| critiques myClass |
myClass := classFactory make: [ :builder |
builder slots:
{ #a. #b. #c. #d. #e. #f. #g. #h. #i. #j. #k } ].
critiques := self myCritiquesOnClass: myClass.
self assert: critiques size equals: 1
]

{ #category : 'tests' }
ReExcessiveVariablesRuleTest >> testRuleNotViolated [

| critiques myClass |
myClass := classFactory make: [ :builder |
builder slots: { #a. #b. #c } ].
critiques := self myCritiquesOnClass: myClass.
self assertEmpty: critiques
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
Class {
#name : 'ReInconsistentMethodClassificationRuleTest',
#superclass : 'ReAbstractRuleTestCase',
#category : 'General-Rules-Tests-Migrated',
#package : 'General-Rules-Tests',
#tag : 'Migrated'
}

{ #category : 'tests' }
ReInconsistentMethodClassificationRuleTest >> testRule [

| critiques |
self class
compile: 'myCritiques super myCritiques'
classified: 'accessing'.
[ critiques := self myCritiquesOnMethod: self class >> #myCritiques.
self assert: critiques size equals: 1 ] ensure: [
(self class >> #myCritiques) removeFromSystem ].
self class
compile: 'initialize super initialize'
classified: 'accessing'.
[ critiques := self myCritiquesOnMethod: self class >> #initialize.
self assert: critiques size equals: 1 ] ensure: [
(self class >> #initialize) removeFromSystem ]
]

{ #category : 'tests' }
ReInconsistentMethodClassificationRuleTest >> testRuleNotViolated [

| critiques |
self class
compile: 'initialize super initialize'
classified: 'initialization'.
[ critiques := self myCritiquesOnMethod: self class >> #initialize.
self assertEmpty: critiques ] ensure: [
(self class >> #initialize) removeFromSystem ]
]
76 changes: 76 additions & 0 deletions src/General-Rules-Tests/ReLongMethodsRuleTest.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
Class {
#name : 'ReLongMethodsRuleTest',
#superclass : 'ReAbstractRuleTestCase',
#category : 'General-Rules-Tests-Migrated',
#package : 'General-Rules-Tests',
#tag : 'Migrated'
}

{ #category : 'lint' }
ReLongMethodsRuleTest >> longMethods [

| n |
n := 1.
n := 2.
n := 3.
n := 4.
n := 5.
n := 6.
n := 7.
n := 8.
n := 9.
n := 10.
n := 11.
n := 12.
n := 13.
n := 14.
n := 15.
n := 16.
n := 16.
n := 17.
n := 18.
n := 19
]

{ #category : 'lint' }
ReLongMethodsRuleTest >> smallMethod [

| n |
n := 1.
n := 2.
n := 3.
n := 4.
n := 5.
n := 6.
n := 7.
n := 8.
n := 9.
n := 10.
n := 11.
n := 12.
n := 13.
n := 14.
n := 15.
n := 16.
n := 16.
n := 17.
n := 18
]

{ #category : 'tests' }
ReLongMethodsRuleTest >> testRule [
|critiques|
critiques := self myCritiquesOnMethod: self class >> #longMethods.
self assert: critiques size equals: 1


]

{ #category : 'tests' }
ReLongMethodsRuleTest >> testRuleNotViolated [
|critiques|
critiques := self myCritiquesOnMethod: self class >> #smallMethod.
self assertEmpty: critiques


]
3 changes: 2 additions & 1 deletion src/General-Rules-Tests/ReRefersToClassRuleTest.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ Class {

{ #category : 'testing' }
ReRefersToClassRuleTest class >> isAbstract [
"I can refer to RBRefersToClassRuleTest without error"
"I can refer to RBRefersToClassRuleTest without error
This method is present for the test of this class"
'It is ok to refert to', ReRefersToClassRuleTest name.
^ false
]
Expand Down
Loading