Skip to content

Commit

Permalink
test: test transformation rule order
Browse files Browse the repository at this point in the history
  • Loading branch information
jaburjak committed May 2, 2024
1 parent a318aa4 commit 37d5818
Show file tree
Hide file tree
Showing 12 changed files with 281 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
"
Provides utility method for asserting the order of transformation rules.
"
Trait {
#name : #MocoTransformationRulePriorityTestTrait,
#category : #'Moco-Core-Tests-Trait'
}

{ #category : #asserting }
MocoTransformationRulePriorityTestTrait >> assertRule: aClass isAfter: aCollection [
"Asserts that the given transformation rule has lower priority than all rules in the given collection."

| testEngine rule |
testEngine := MocoTestTransformationEngine new.

rule := aClass newWithEngine: testEngine.

aCollection do: [ :each |
self assert: (((each newWithEngine: testEngine) priority) > (rule priority))
]
]

{ #category : #asserting }
MocoTransformationRulePriorityTestTrait >> assertRule: aClass isBefore: aCollection [
"Asserts that the given transformation rule has greater priority than all rules in the given collection."

| testEngine rule |
testEngine := MocoTestTransformationEngine new.

rule := aClass newWithEngine: testEngine.

aCollection do: [ :each |
self assert: (((each newWithEngine: testEngine) priority) < (rule priority))
]
]

{ #category : #asserting }
MocoTransformationRulePriorityTestTrait >> assertRuleOrder: aCollection [
"Asserts that when sorted by their priority, the rules remain in the same order as given in the collection."

| testEngine expected actual |
testEngine := MocoTestTransformationEngine new.

expected := aCollection asOrderedCollection.

actual := expected collect: [ :each | { each. ((each newWithEngine: testEngine) priority) } ].
actual := actual sorted: [ :a :b | (a second) > (b second) ].
actual := actual collect: [ :each | each first ].

self assert: actual equals: expected
]
26 changes: 26 additions & 0 deletions src/Moco-D2S-Tests/MocoD2SRulePriorityTest.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
Class {
#name : #MocoD2SRulePriorityTest,
#superclass : #MocoTransformationRuleTestCase,
#traits : 'MocoTransformationRulePriorityTestTrait',
#classTraits : 'MocoTransformationRulePriorityTestTrait classTrait',
#category : #'Moco-D2S-Tests-Rule'
}

{ #category : #tests }
MocoD2SRulePriorityTest >> testForeignKeyPriority [
self assertRule: MocoRdbForeignKeyTransformationRule
isAfter: { MocoRdbTableTransformationRule }
]

{ #category : #tests }
MocoD2SRulePriorityTest >> testTablePriority [
self assertRule: MocoRdbTableTransformationRule
isBefore: { MocoRdbForeignKeyTransformationRule.
MocoRdbOclEnumerationTransformationRule.
MocoRdbOclExclusiveAssociationTransformationRule.
MocoRdbOclGeneralizationSetTransformationRule.
MocoRdbOclImmutableAssociationDeleteTransformationRule.
MocoRdbOclImmutableColumnTransformationRule.
MocoRdbOclMandatoryMultiplicityTransformationRule.
MocoRdbOclSpecialMultiplicityTransformationRule }
]
3 changes: 2 additions & 1 deletion src/Moco-D2S-Tests/MocoD2STestSuite.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ MocoD2STestSuite >> initialize [
MocoRdbOclMandatoryMultiplicityTransformationRuleTest.
MocoRdbOclSpecialMultiplicityTransformationRuleTest.
MocoRdbOclImmutableAssociationDeleteTransformationRuleTest.
MocoRdbOclImmutableColumnTransformationRuleTest }.
MocoRdbOclImmutableColumnTransformationRuleTest.
MocoD2SRulePriorityTest }.

suites do: [ :each | self addTest: each suite ]
]
67 changes: 67 additions & 0 deletions src/Moco-O2U-Tests/MocoO2URulePriorityTest.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
Class {
#name : #MocoO2URulePriorityTest,
#superclass : #MocoTransformationRuleTestCase,
#traits : 'MocoTransformationRulePriorityTestTrait',
#classTraits : 'MocoTransformationRulePriorityTestTrait classTrait',
#category : #'Moco-O2U-Tests-Rule'
}

{ #category : #tests }
MocoO2URulePriorityTest >> testAssociationStereotypePriority [
self assertRule: MocoOntoUmlAssociationTransformationRule
isAfter: { MocoOntoUmlCharacterizationAssociationTransformationRule.
MocoOntoUmlMaterialAssociationTransformationRule.
MocoOntoUmlMediationAssociationTransformationRule.
MocoOntoUmlPartWholeAssociationTransformationRule.
MocoOntoUmlContainmentAssociationTransformationRule }.

self assertRule: MocoOntoUmlPartWholeAssociationTransformationRule
isAfter: { MocoOntoUmlContainmentAssociationTransformationRule }
]

{ #category : #tests }
MocoO2URulePriorityTest >> testClassPriority [
self assertRule: MocoOntoUmlClassTransformationRule
isBefore: { MocoOntoUmlAssociationTransformationRule.
MocoOntoUmlEnumerationTransformationRule.
MocoOntoUmlGeneralizationTransformationRule.
MocoOntoUmlGeneralizationSetTransformationRule.
MocoOntoUmlRelatorOptimizationTransformationRule.
MocoOntoUmlRoleOptimizationTransformationRule }
]

{ #category : #tests }
MocoO2URulePriorityTest >> testClassStereotypePriority [
self assertRule: MocoOntoUmlClassTransformationRule
isAfter: { MocoOntoUmlCategoryTransformationRule.
MocoOntoUmlCollectiveTransformationRule.
MocoOntoUmlKindTransformationRule.
MocoOntoUmlMixinTransformationRule.
MocoOntoUmlPhaseMixinTransformationRule.
MocoOntoUmlRoleMixinTransformationRule.
MocoOntoUmlModeTransformationRule.
MocoOntoUmlPhaseTransformationRule.
MocoOntoUmlQualityTransformationRule.
MocoOntoUmlQuantityTransformationRule.
MocoOntoUmlRelatorTransformationRule.
MocoOntoUmlRoleTransformationRule.
MocoOntoUmlSubKindTransformationRule }
]

{ #category : #tests }
MocoO2URulePriorityTest >> testGeneralizationPriority [
self assertRule: MocoOntoUmlGeneralizationTransformationRule
isBefore: { MocoOntoUmlGeneralizationSetTransformationRule }
]

{ #category : #tests }
MocoO2URulePriorityTest >> testOptimizationPriority [
| after |
after := { MocoOntoUmlClassTransformationRule.
MocoOntoUmlAssociationTransformationRule.
MocoOntoUmlGeneralizationTransformationRule.
MocoOntoUmlGeneralizationSetTransformationRule }.

self assertRule: MocoOntoUmlRelatorOptimizationTransformationRule isAfter: after;
assertRule: MocoOntoUmlRoleOptimizationTransformationRule isAfter: after
]
3 changes: 2 additions & 1 deletion src/Moco-O2U-Tests/MocoO2UTestSuite.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ MocoO2UTestSuite >> initialize [
MocoOntoUmlGeneralizationTransformationRuleTest.
MocoOntoUmlGeneralizationSetTransformationRuleTest.
MocoOntoUmlRelatorOptimizationTransformationRuleTest.
MocoOntoUmlRoleOptimizationTransformationRuleTest }.
MocoOntoUmlRoleOptimizationTransformationRuleTest.
MocoO2URulePriorityTest }.

suites do: [ :each | self addTest: each suite ]
]
22 changes: 22 additions & 0 deletions src/Moco-OpenPonk-Tests/MocoOpenPonkRulePriorityTest.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
Class {
#name : #MocoOpenPonkRulePriorityTest,
#superclass : #MocoTransformationRuleTestCase,
#traits : 'MocoTransformationRulePriorityTestTrait',
#classTraits : 'MocoTransformationRulePriorityTestTrait classTrait',
#category : #'Moco-OpenPonk-Tests-Rule'
}

{ #category : #tests }
MocoOpenPonkRulePriorityTest >> testClassPriority [
self assertRule: MocoOpenPonkOntoUmlClassTransformationRule
isBefore: { MocoOpenPonkOntoUmlAssociationTransformationRule.
MocoOpenPonkOntoUmlEnumerationTransformationRule.
MocoOpenPonkOntoUmlGeneralizationTransformationRule.
MocoOpenPonkOntoUmlGeneralizationSetTransformationRule }
]

{ #category : #tests }
MocoOpenPonkRulePriorityTest >> testGeneralizationPriority [
self assertRule: MocoOpenPonkOntoUmlGeneralizationTransformationRule
isBefore: { MocoOpenPonkOntoUmlGeneralizationSetTransformationRule }
]
14 changes: 14 additions & 0 deletions src/Moco-OpenPonk-Tests/MocoOpenPonkRuleRdbPriorityTest.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
Class {
#name : #MocoOpenPonkRuleRdbPriorityTest,
#superclass : #MocoTransformationRuleTestCase,
#traits : 'MocoTransformationRulePriorityTestTrait',
#classTraits : 'MocoTransformationRulePriorityTestTrait classTrait',
#category : #'Moco-OpenPonk-Tests-Rule-Rdb'
}

{ #category : #tests }
MocoOpenPonkRuleRdbPriorityTest >> testTablePriority [
self assertRule: MocoOpenPonkRdbTableTransformationRule
isBefore: { MocoOpenPonkRdbForeignKeyTransformationRule.
MocoOpenPonkRdbOclTransformationRule }
]
27 changes: 27 additions & 0 deletions src/Moco-OpenPonk-Tests/MocoOpenPonkRuleUmlPriorityTest.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
Class {
#name : #MocoOpenPonkRuleUmlPriorityTest,
#superclass : #MocoTransformationRuleTestCase,
#traits : 'MocoTransformationRulePriorityTestTrait',
#classTraits : 'MocoTransformationRulePriorityTestTrait classTrait',
#category : #'Moco-OpenPonk-Tests-Rule-Uml'
}

{ #category : #tests }
MocoOpenPonkRuleUmlPriorityTest >> testClassPriority [
self assertRule: MocoOpenPonkUmlClassTransformationRule
isBefore: { MocoOpenPonkUmlAssociationTransformationRule.
MocoOpenPonkUmlGeneralizationTransformationRule.
MocoOpenPonkUmlOclTransformationRule }
]

{ #category : #tests }
MocoOpenPonkRuleUmlPriorityTest >> testEnumerationPriority [
self assertRule: MocoOpenPonkUmlEnumerationTransformationRule
isBefore: { MocoOpenPonkUmlAssociationTransformationRule }
]

{ #category : #tests }
MocoOpenPonkRuleUmlPriorityTest >> testGeneralizationPriority [
self assertRule: MocoOpenPonkUmlGeneralizationTransformationRule
isBefore: { MocoOpenPonkUmlGeneralizationSetTransformationRule }
]
5 changes: 4 additions & 1 deletion src/Moco-OpenPonk-Tests/MocoOpenPonkTestSuite.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,18 @@ MocoOpenPonkTestSuite >> initialize [
MocoOpenPonkOntoUmlEnumerationTransformationRuleTest.
MocoOpenPonkOntoUmlGeneralizationTransformationRuleTest.
MocoOpenPonkOntoUmlGeneralizationSetTransformationRuleTest.
MocoOpenPonkRulePriorityTest.
MocoOpenPonkUmlClassTransformationRuleTest.
MocoOpenPonkUmlAssociationTransformationRuleTest.
MocoOpenPonkUmlEnumerationTransformationRuleTest.
MocoOpenPonkUmlGeneralizationTransformationRuleTest.
MocoOpenPonkUmlGeneralizationSetTransformationRuleTest.
MocoOpenPonkUmlOclTransformationRuleTest.
MocoOpenPonkRuleUmlPriorityTest.
MocoOpenPonkRdbTableTransformationRuleTest.
MocoOpenPonkRdbForeignKeyTransformationRuleTest.
MocoOpenPonkRdbOclTransformationRuleTest }.
MocoOpenPonkRdbOclTransformationRuleTest.
MocoOpenPonkRuleRdbPriorityTest }.

suites do: [ :each | self addTest: each suite ]
]
34 changes: 34 additions & 0 deletions src/Moco-U2D-Tests/MocoU2DRulePreprocessPriorityTest.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
Class {
#name : #MocoU2DRulePreprocessPriorityTest,
#superclass : #MocoTransformationRuleTestCase,
#traits : 'MocoTransformationRulePriorityTestTrait',
#classTraits : 'MocoTransformationRulePriorityTestTrait classTrait',
#category : #'Moco-U2D-Tests-Rule-Preprocess'
}

{ #category : #tests }
MocoU2DRulePreprocessPriorityTest >> testCopyRulePriority [
self assertRule: MocoUmlCopyTransformationRule
isBefore: { MocoUmlCopyFixReferencesTransformationRule.
MocoUmlEnumerationTransformationRule.
MocoUmlNonNativeRdbTypeTransformationRule.
MocoUmlMultiValueAttributeTransformationRule.
MocoUmlManyToManyAssociationTransformationRule }
]

{ #category : #tests }
MocoU2DRulePreprocessPriorityTest >> testFixRulePriority [
self assertRule: MocoUmlCopyFixReferencesTransformationRule
isBefore: { MocoUmlEnumerationTransformationRule.
MocoUmlNonNativeRdbTypeTransformationRule.
MocoUmlMultiValueAttributeTransformationRule.
MocoUmlManyToManyAssociationTransformationRule }
]

{ #category : #tests }
MocoU2DRulePreprocessPriorityTest >> testOrder [
self assertRuleOrder: { MocoUmlEnumerationTransformationRule.
MocoUmlNonNativeRdbTypeTransformationRule.
MocoUmlMultiValueAttributeTransformationRule.
MocoUmlManyToManyAssociationTransformationRule }
]
29 changes: 29 additions & 0 deletions src/Moco-U2D-Tests/MocoU2DRulePriorityTest.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
Class {
#name : #MocoU2DRulePriorityTest,
#superclass : #MocoTransformationRuleTestCase,
#traits : 'MocoTransformationRulePriorityTestTrait',
#classTraits : 'MocoTransformationRulePriorityTestTrait classTrait',
#category : #'Moco-U2D-Tests-Rule'
}

{ #category : #tests }
MocoU2DRulePriorityTest >> testClassRulePriority [
self assertRule: MocoUmlClassTransformationRule
isBefore: { MocoUmlAssociationTransformationRule.
MocoUmlGeneralizationTransformationRule.
MocoUmlGeneralizationSetTransformationRule.
MocoUmlOclEnumerationConstraintTransformationRule.
MocoUmlOclExclusiveAssociationConditionTransformationRule }
]

{ #category : #tests }
MocoU2DRulePriorityTest >> testGeneralizationRulePriority [
self assertRule: MocoUmlGeneralizationTransformationRule
isBefore: { MocoUmlGeneralizationSetTransformationRule }
]

{ #category : #tests }
MocoU2DRulePriorityTest >> testMediatingClassRulePriority [
self assertRule: MocoUmlAssociationTransformationRule
isBefore: { MocoUmlMediatingClassOptimizationTransformationRule }
]
5 changes: 3 additions & 2 deletions src/Moco-U2D-Tests/MocoU2DTestSuite.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,15 @@ MocoU2DTestSuite >> initialize [
MocoUmlManyToManyAssociationTransformationRuleTest.
MocoUmlNonNativeRdbTypeTransformationRuleTest.
MocoUmlMultiValueAttributeTransformationRuleTest.
MocoU2DRulePreprocessPriorityTest.
MocoUmlClassTransformationRuleTest.
MocoUmlAssociationTransformationRuleTest.
MocoUmlGeneralizationTransformationRuleTest.
MocoUmlGeneralizationSetTransformationRuleTest.
MocoUmlOclEnumerationConstraintTransformationRuleTest.
MocoUmlOclExclusiveAssociationConditionTransformationRuleTest.
MocoUmlMediatingClassOptimizationTransformationRuleTest
}.
MocoUmlMediatingClassOptimizationTransformationRuleTest.
MocoU2DRulePriorityTest }.

suites do: [ :each | self addTest: each suite ]
]

0 comments on commit 37d5818

Please sign in to comment.