Skip to content

Commit

Permalink
add test for formatting rules
Browse files Browse the repository at this point in the history
  • Loading branch information
AngelHely committed Jun 13, 2024
1 parent 0702e74 commit ee97386
Show file tree
Hide file tree
Showing 6 changed files with 322 additions and 0 deletions.
58 changes: 58 additions & 0 deletions src/General-Rules-Tests/ReBlockFormattingRuleTest.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
Class {
#name : 'ReBlockFormattingRuleTest',
#superclass : 'ReAbstractRuleTestCase',
#category : 'General-Rules-Tests-Migrated',
#package : 'General-Rules-Tests',
#tag : 'Migrated'
}

{ #category : 'tests' }
ReBlockFormattingRuleTest >> testRuleForBlocksWithCorrectSpaces [

| critiques |
self class
compile: 'blocksWithCorrectSpaces
#() do: [ :n | n ].
#() do: [ :n | #() do: [ :n2 | n2 ] ].
#() do: [ :n |
n foo ]'
classified: 'test-helper'.
[
critiques := self myCritiquesOnMethod: self class >> #blocksWithCorrectSpaces.
self assertEmpty: critiques ] ensure: [
(self class >> #blocksWithCorrectSpaces) removeFromSystem ]
]

{ #category : 'tests' }
ReBlockFormattingRuleTest >> testRuleForBlocksWithNoSpaces [

| critiques |
self class
compile: 'blocksWithNoSpaces
#() do: [:n|n].
#() do: [ :n | #() do: [:n2|] ].
#() do: [:n|
n foo]'
classified: 'test-helper'.
[ critiques := self myCritiquesOnMethod: self class >> #blocksWithNoSpaces.
self assert: critiques size equals: 3 ] ensure: [ (self class >> #blocksWithNoSpaces) removeFromSystem ]
]

{ #category : 'tests' }
ReBlockFormattingRuleTest >> testRuleForblocksWithInconsistentSpaces [

| critiques |
self class
compile: 'blocksWithInconsistentSpaces
#() do: [ :n|n].
#() do: [:n|n ].
#() do: [:n| n].
#() do: [ :n |
n foo]'
classified: 'test-helper'.
[ critiques := self myCritiquesOnMethod: self class >> #blocksWithInconsistentSpaces.
self assert: critiques size equals: 4 ] ensure: [ (self class >> #blocksWithInconsistentSpaces) removeFromSystem ]
]
42 changes: 42 additions & 0 deletions src/General-Rules-Tests/ReNoPeriodAfterReturnRuleTest.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
Class {
#name : 'ReNoPeriodAfterReturnRuleTest',
#superclass : 'ReAbstractRuleTestCase',
#category : 'General-Rules-Tests-Migrated',
#package : 'General-Rules-Tests',
#tag : 'Migrated'
}

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

| critiques |
self class
compile: 'periodAfterReturn
#(true false) atRandom ifTrue: [
self crTrace: ''1''.
^ self crTrace: ''2''. ].
self crTrace: ''3''.
^ self crTrace: ''4''.'
classified: 'test-helper'.
[
critiques := self myCritiquesOnMethod: self class >> #periodAfterReturn.
self assert: critiques size equals: 2 ] ensure: [ (self class >> #periodAfterReturn) removeFromSystem ]
]

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

| critiques |
self class
compile: 'lastPeriods
#(true false) atRandom ifTrue: [
self crTrace: ''1''.
self crTrace: ''2''. ].
self crTrace: ''3''.
self crTrace: ''4''.'
classified: 'test-helper'.
[ critiques := self myCritiquesOnMethod: self class >> #lastPeriods.
self assertEmpty: critiques ] ensure: [ (self class >> #lastPeriods) removeFromSystem ]
]
34 changes: 34 additions & 0 deletions src/General-Rules-Tests/ReParensFormattingRuleTest.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
Class {
#name : 'ReParensFormattingRuleTest',
#superclass : 'ReAbstractRuleTestCase',
#category : 'General-Rules-Tests-Migrated',
#package : 'General-Rules-Tests',
#tag : 'Migrated'
}

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

| critiques |
self class
compile: 'invalid
( 1 + 2).
(1 + 2 )'
classified: 'test-helper'.
[ critiques := self myCritiquesOnMethod: self class >> #invalid.
self assert: critiques size equals: 2 ] ensure: [ (self class >> #invalid) removeFromSystem ]
]

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

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

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

| critiques |

self class compile: 'invalid #(true false) atRandom ifTrue: [ ^1 ] ifFalse: [ ^ 2 ]' classified: 'test-helper'.
[ critiques := self myCritiquesOnMethod: self class >> #invalid.
self assert: critiques size equals: 2 ] ensure: [ (self class >> #invalid) removeFromSystem ]
]

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

| critiques |

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

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

| critiques |
self class
compile: 'withSeparation
"I have a comment"
| some |
some := 1.
^ some'
classified: 'test-helper'.
[ critiques := self myCritiquesOnMethod: self class >> #withSeparation.
self assertEmpty: critiques ] ensure: [ (self class >> #withSeparation) removeFromSystem ]
]

{ #category : 'tests' }
ReSeparateMethodBodyAndHeaderRuleTest >> testRuleWithComment [

| critiques |
self class
compile: 'noSeparation1
"I have a comment"
| some |
some := 1.
^ some'
classified: 'test-helper'.
self class
compile: 'noSeparation2
"I have a comment"
^ #foobar'
classified: 'test-helper'.

self class
compile: 'noSeparation3
"I have a comment"
^ #foobar'
classified: 'test-helper'.
critiques := [
critiques := self myCritiquesOnMethod:
self class >> #noSeparation1.
critiques add: (self myCritiquesOnMethod:
self class >> #noSeparation2).
critiques add: (self myCritiquesOnMethod:
self class >> #noSeparation3).
self assert: critiques size equals: 3 ] ensure: [
(self class >> #noSeparation1) removeFromSystem.
(self class >> #noSeparation2) removeFromSystem.
(self class >> #noSeparation3) removeFromSystem ]
]

{ #category : 'tests' }
ReSeparateMethodBodyAndHeaderRuleTest >> testRuleWithoutComment [

| critiques |
self class
compile: 'noSeparation1
^ 1'
classified: 'test-helper'.

self class
compile: 'noSeparation2
| some |
some := 1.
^ some'
classified: 'test-helper'.

self class
compile: 'noSeparation3
[ | some |
some := 1 ].
^ #foobar'
classified: 'test-helper'.

self class
compile: 'noSeparation4
< pragma >
^ #foobar'
classified: 'test-helper'.
critiques := [
critiques := self myCritiquesOnMethod:
self class >> #noSeparation1.
critiques add:
(self myCritiquesOnMethod: self class >> #noSeparation2).
critiques add:
(self myCritiquesOnMethod: self class >> #noSeparation3).
critiques add:
(self myCritiquesOnMethod: self class >> #noSeparation4).
self assert: critiques size equals: 4 ] ensure: [
(self class >> #noSeparation1) removeFromSystem.
(self class >> #noSeparation2) removeFromSystem.
(self class >> #noSeparation3) removeFromSystem.
(self class >> #noSeparation4) removeFromSystem ]
]
56 changes: 56 additions & 0 deletions src/General-Rules-Tests/ReTempsFormattingRuleTest.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
Class {
#name : 'ReTempsFormattingRuleTest',
#superclass : 'ReAbstractRuleTestCase',
#category : 'General-Rules-Tests-Migrated',
#package : 'General-Rules-Tests',
#tag : 'Migrated'
}

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

| critiques |

self class compile: 'valid | a b | a := 1. b := 2. ^ a + b' classified: 'test-helper'.
[ critiques := self myCritiquesOnMethod: self class >> #valid.
self assertEmpty: critiques ] ensure: [ (self class >> #valid) removeFromSystem ]
]

{ #category : 'tests' }
ReTempsFormattingRuleTest >> testRuleWithManySpace [

| critiques |
self class compile: 'invalid1 | a b | a := 1. b := 2. ^ a + b' classified: 'test-helper'.
self class compile: 'invalid2 | a b | a := 1. b := 2. ^ a + b' classified: 'test-helper'.
[
critiques := self myCritiquesOnMethod: self class >> #invalid1.
critiques add: (self myCritiquesOnMethod: self class >> #invalid2).
self assert: critiques size equals: 2 ] ensure: [
(self class >> #invalid1) removeFromSystem.
(self class >> #invalid2) removeFromSystem ]
]

{ #category : 'tests' }
ReTempsFormattingRuleTest >> testRuleWithSpaceBetweenTemps [

| critiques |
self class compile: 'invalid | a b | a := 1. b := 2. ^ a + b' classified: 'test-helper'.
[
critiques := self myCritiquesOnMethod: self class >> #invalid.
self assert: critiques size equals: 1 ] ensure: [
(self class >> #invalid) removeFromSystem. ]
]

{ #category : 'tests' }
ReTempsFormattingRuleTest >> testRuleWithoutSpace [

| critiques |
self class compile: 'invalid1 | a| a:=1. ^a' classified: 'test-helper'.
self class compile: 'invalid2 |b | b:=1. ^b' classified: 'test-helper'.
[
critiques := self myCritiquesOnMethod: self class >> #invalid1.
critiques add: (self myCritiquesOnMethod: self class >> #invalid2).
self assert: critiques size equals: 2 ] ensure: [
(self class >> #invalid1) removeFromSystem.
(self class >> #invalid2) removeFromSystem ]
]

0 comments on commit ee97386

Please sign in to comment.