Skip to content

Commit a30ed18

Browse files
authored
Merge pull request #16474 from AngelHely/rulesTest
tests for rules from the General-Rules package
2 parents 54f2c69 + 85509a6 commit a30ed18

9 files changed

+373
-10
lines changed
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
Class {
2+
#name : 'ReClassNotCategorizedRuleTest',
3+
#superclass : 'ReAbstractRuleTestCase',
4+
#instVars : [
5+
'classFactory'
6+
],
7+
#category : 'General-Rules-Tests-Migrated',
8+
#package : 'General-Rules-Tests',
9+
#tag : 'Migrated'
10+
}
11+
12+
{ #category : 'running' }
13+
ReClassNotCategorizedRuleTest >> setUp [
14+
15+
super setUp.
16+
classFactory := ClassFactoryForTestCase new
17+
]
18+
19+
{ #category : 'running' }
20+
ReClassNotCategorizedRuleTest >> tearDown [
21+
22+
classFactory cleanUp.
23+
super tearDown
24+
]
25+
26+
{ #category : 'tests' }
27+
ReClassNotCategorizedRuleTest >> testAllClassesAreNotTagged [
28+
29+
| critiques aClass anotherClass |
30+
aClass := classFactory make: [ :builder |
31+
builder package: 'aPackage' ].
32+
anotherClass := classFactory make: [ :builder |
33+
builder package: 'aPackage' ].
34+
critiques := self myCritiquesOnClass: aClass.
35+
self assertEmpty: critiques.
36+
critiques := self myCritiquesOnClass: anotherClass.
37+
self assertEmpty: critiques
38+
]
39+
40+
{ #category : 'tests' }
41+
ReClassNotCategorizedRuleTest >> testRule [
42+
43+
| classCatorized classNotCatorized critiques |
44+
classCatorized := classFactory make: [ :builder |
45+
builder
46+
tag: 'aTag';
47+
package: 'aPackage' ].
48+
classNotCatorized := classFactory make: [ :builder |
49+
builder package: 'aPackage' ].
50+
critiques := self myCritiquesOnClass: classNotCatorized.
51+
self assert: critiques size equals: 1
52+
]
53+
54+
{ #category : 'tests' }
55+
ReClassNotCategorizedRuleTest >> testRuleNotViolated [
56+
57+
| classCatorized anotherClassCatorized critiques |
58+
classCatorized := classFactory make: [ :builder |
59+
builder
60+
tag: 'aTag';
61+
package: 'aPackage' ].
62+
anotherClassCatorized := classFactory make: [ :builder |
63+
builder
64+
tag: 'aTag';
65+
package: 'aPackage' ].
66+
critiques := self myCritiquesOnClass: anotherClassCatorized.
67+
self assertEmpty: critiques
68+
]
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
Class {
2+
#name : 'ReClassVariableCapitalizationRuleTest',
3+
#superclass : 'ReAbstractRuleTestCase',
4+
#instVars : [
5+
'classFactory'
6+
],
7+
#category : 'General-Rules-Tests-Migrated',
8+
#package : 'General-Rules-Tests',
9+
#tag : 'Migrated'
10+
}
11+
12+
{ #category : 'running' }
13+
ReClassVariableCapitalizationRuleTest >> setUp [
14+
15+
super setUp.
16+
classFactory := ClassFactoryForTestCase new
17+
"Put here a common initialization logic for tests"
18+
]
19+
20+
{ #category : 'running' }
21+
ReClassVariableCapitalizationRuleTest >> tearDown [
22+
classFactory cleanUp.
23+
super tearDown
24+
]
25+
26+
{ #category : 'tests' }
27+
ReClassVariableCapitalizationRuleTest >> testPoolVariableNameStartWithLowerCase [
28+
29+
| critiques myClass |
30+
myClass := classFactory make: [ :builder |
31+
builder sharedVariables: { #pool }].
32+
critiques := self myCritiquesOnClass: myClass.
33+
self assert: critiques size equals: 1
34+
]
35+
36+
{ #category : 'tests' }
37+
ReClassVariableCapitalizationRuleTest >> testRuleNotViolated [
38+
39+
| critiques myClass |
40+
myClass := classFactory make: [ :builder |
41+
builder sharedVariables: { #Pool } ].
42+
critiques := self myCritiquesOnClass: myClass.
43+
self assertEmpty: critiques
44+
]
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
Class {
2+
#name : 'ReEquivalentSuperclassMethodsRuleTest',
3+
#superclass : 'ReAbstractRuleTestCase',
4+
#category : 'General-Rules-Tests-Migrated',
5+
#package : 'General-Rules-Tests',
6+
#tag : 'Migrated'
7+
}
8+
9+
{ #category : 'tests' }
10+
ReEquivalentSuperclassMethodsRuleTest >> testRule [
11+
12+
| critiques |
13+
self class compile: 'myCritiques ^ self myCritiquesOnMethod: self class >> #sampleMethod'.
14+
critiques := self myCritiquesOnMethod: self class >> #myCritiques.
15+
self assert: critiques size equals: 1.
16+
[ "code of the test" ] ensure: [ (self class >> #myCritiques ) removeFromSystem ]
17+
]
18+
19+
{ #category : 'tests' }
20+
ReEquivalentSuperclassMethodsRuleTest >> testRuleNotViolated [
21+
22+
| critiques |
23+
self class compile: 'myCritiques ^true'.
24+
critiques := self myCritiquesOnMethod: self class >> #myCritiques.
25+
self assertEmpty: critiques.
26+
[ "code of the test" ] ensure: [ (self class >> #myCritiques ) removeFromSystem ]
27+
]
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
Class {
2+
#name : 'ReExcessiveInheritanceRuleTest',
3+
#superclass : 'ReAbstractRuleTestCase',
4+
#instVars : [
5+
'classFactory'
6+
],
7+
#category : 'General-Rules-Tests-Migrated',
8+
#package : 'General-Rules-Tests',
9+
#tag : 'Migrated'
10+
}
11+
12+
{ #category : 'running' }
13+
ReExcessiveInheritanceRuleTest >> setUp [
14+
15+
super setUp.
16+
classFactory := ClassFactoryForTestCase new
17+
]
18+
19+
{ #category : 'running' }
20+
ReExcessiveInheritanceRuleTest >> tearDown [
21+
22+
classFactory cleanUp.
23+
super tearDown
24+
]
25+
26+
{ #category : 'tests' }
27+
ReExcessiveInheritanceRuleTest >> testRule [
28+
"the superclass of ClassFactoryForTestCase is Object so the inheritance depth start at 2"
29+
| critiques aClass subClass1 subClass2 subClass3 subClass4 subClass5 subClass6 subClass7 myClass |
30+
aClass := classFactory make: [ :builder | builder ].
31+
subClass1 := classFactory make: [ :builder |
32+
builder superclass: aClass ].
33+
subClass2 := classFactory make: [ :builder |
34+
builder superclass: subClass1 ].
35+
subClass3 := classFactory make: [ :builder |
36+
builder superclass: subClass2 ].
37+
subClass4 := classFactory make: [ :builder |
38+
builder superclass: subClass3 ].
39+
subClass5 := classFactory make: [ :builder |
40+
builder superclass: subClass4 ].
41+
subClass6 := classFactory make: [ :builder |
42+
builder superclass: subClass5 ].
43+
subClass7 := classFactory make: [ :builder |
44+
builder superclass: subClass6 ].
45+
myClass := classFactory make: [ :builder |
46+
builder superclass: subClass7 ].
47+
critiques := self myCritiquesOnClass: myClass.
48+
self assert: critiques size equals: 1
49+
]
50+
51+
{ #category : 'tests' }
52+
ReExcessiveInheritanceRuleTest >> testRuleNotViolated [
53+
54+
| critiques aClass subClass1 subClass2 subClass3 subClass4 subClass5 subClass6 myClass |
55+
aClass := classFactory make: [ :builder | builder ].
56+
subClass1 := classFactory make: [ :builder |
57+
builder superclass: aClass ].
58+
subClass2 := classFactory make: [ :builder |
59+
builder superclass: subClass1 ].
60+
subClass3 := classFactory make: [ :builder |
61+
builder superclass: subClass2 ].
62+
subClass4 := classFactory make: [ :builder |
63+
builder superclass: subClass3 ].
64+
subClass5 := classFactory make: [ :builder |
65+
builder superclass: subClass4 ].
66+
subClass6 := classFactory make: [ :builder |
67+
builder superclass: subClass5 ].
68+
myClass := classFactory make: [ :builder |
69+
builder superclass: subClass6 ].
70+
critiques := self myCritiquesOnClass: myClass.
71+
self assertEmpty: critiques
72+
]
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
Class {
2+
#name : 'ReExcessiveVariablesRuleTest',
3+
#superclass : 'ReAbstractRuleTestCase',
4+
#instVars : [
5+
'classFactory'
6+
],
7+
#category : 'General-Rules-Tests-Migrated',
8+
#package : 'General-Rules-Tests',
9+
#tag : 'Migrated'
10+
}
11+
12+
{ #category : 'running' }
13+
ReExcessiveVariablesRuleTest >> setUp [
14+
super setUp.
15+
classFactory := ClassFactoryForTestCase new
16+
]
17+
18+
{ #category : 'running' }
19+
ReExcessiveVariablesRuleTest >> tearDown [
20+
classFactory cleanUp.
21+
super tearDown
22+
]
23+
24+
{ #category : 'tests' }
25+
ReExcessiveVariablesRuleTest >> testRule [
26+
27+
| critiques myClass |
28+
myClass := classFactory make: [ :builder |
29+
builder slots:
30+
{ #a. #b. #c. #d. #e. #f. #g. #h. #i. #j. #k } ].
31+
critiques := self myCritiquesOnClass: myClass.
32+
self assert: critiques size equals: 1
33+
]
34+
35+
{ #category : 'tests' }
36+
ReExcessiveVariablesRuleTest >> testRuleNotViolated [
37+
38+
| critiques myClass |
39+
myClass := classFactory make: [ :builder |
40+
builder slots: { #a. #b. #c } ].
41+
critiques := self myCritiquesOnClass: myClass.
42+
self assertEmpty: critiques
43+
]
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
Class {
2+
#name : 'ReInconsistentMethodClassificationRuleTest',
3+
#superclass : 'ReAbstractRuleTestCase',
4+
#category : 'General-Rules-Tests-Migrated',
5+
#package : 'General-Rules-Tests',
6+
#tag : 'Migrated'
7+
}
8+
9+
{ #category : 'tests' }
10+
ReInconsistentMethodClassificationRuleTest >> testRule [
11+
12+
| critiques |
13+
self class
14+
compile: 'myCritiques super myCritiques'
15+
classified: 'accessing'.
16+
[ critiques := self myCritiquesOnMethod: self class >> #myCritiques.
17+
self assert: critiques size equals: 1 ] ensure: [
18+
(self class >> #myCritiques) removeFromSystem ].
19+
self class
20+
compile: 'initialize super initialize'
21+
classified: 'accessing'.
22+
[ critiques := self myCritiquesOnMethod: self class >> #initialize.
23+
self assert: critiques size equals: 1 ] ensure: [
24+
(self class >> #initialize) removeFromSystem ]
25+
]
26+
27+
{ #category : 'tests' }
28+
ReInconsistentMethodClassificationRuleTest >> testRuleNotViolated [
29+
30+
| critiques |
31+
self class
32+
compile: 'initialize super initialize'
33+
classified: 'initialization'.
34+
[ critiques := self myCritiquesOnMethod: self class >> #initialize.
35+
self assertEmpty: critiques ] ensure: [
36+
(self class >> #initialize) removeFromSystem ]
37+
]
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
Class {
2+
#name : 'ReLongMethodsRuleTest',
3+
#superclass : 'ReAbstractRuleTestCase',
4+
#category : 'General-Rules-Tests-Migrated',
5+
#package : 'General-Rules-Tests',
6+
#tag : 'Migrated'
7+
}
8+
9+
{ #category : 'lint' }
10+
ReLongMethodsRuleTest >> longMethods [
11+
12+
| n |
13+
n := 1.
14+
n := 2.
15+
n := 3.
16+
n := 4.
17+
n := 5.
18+
n := 6.
19+
n := 7.
20+
n := 8.
21+
n := 9.
22+
n := 10.
23+
n := 11.
24+
n := 12.
25+
n := 13.
26+
n := 14.
27+
n := 15.
28+
n := 16.
29+
n := 16.
30+
n := 17.
31+
n := 18.
32+
n := 19
33+
]
34+
35+
{ #category : 'lint' }
36+
ReLongMethodsRuleTest >> smallMethod [
37+
38+
| n |
39+
n := 1.
40+
n := 2.
41+
n := 3.
42+
n := 4.
43+
n := 5.
44+
n := 6.
45+
n := 7.
46+
n := 8.
47+
n := 9.
48+
n := 10.
49+
n := 11.
50+
n := 12.
51+
n := 13.
52+
n := 14.
53+
n := 15.
54+
n := 16.
55+
n := 16.
56+
n := 17.
57+
n := 18
58+
]
59+
60+
{ #category : 'tests' }
61+
ReLongMethodsRuleTest >> testRule [
62+
|critiques|
63+
critiques := self myCritiquesOnMethod: self class >> #longMethods.
64+
self assert: critiques size equals: 1
65+
66+
67+
]
68+
69+
{ #category : 'tests' }
70+
ReLongMethodsRuleTest >> testRuleNotViolated [
71+
|critiques|
72+
critiques := self myCritiquesOnMethod: self class >> #smallMethod.
73+
self assertEmpty: critiques
74+
75+
76+
]

src/General-Rules-Tests/ReRefersToClassRuleTest.class.st

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ Class {
1111

1212
{ #category : 'testing' }
1313
ReRefersToClassRuleTest class >> isAbstract [
14-
"I can refer to RBRefersToClassRuleTest without error"
14+
"I can refer to RBRefersToClassRuleTest without error
15+
This method is present for the test of this class"
1516
'It is ok to refert to', ReRefersToClassRuleTest name.
1617
^ false
1718
]

0 commit comments

Comments
 (0)