Skip to content

Commit 90caa4c

Browse files
Extend tests
1 parent 43369e4 commit 90caa4c

File tree

2 files changed

+46
-5
lines changed

2 files changed

+46
-5
lines changed

core/esmf-aspect-model-java-generator/src/test/java/org/eclipse/esmf/aspectmodel/java/ExtendedStaticMetaModelFunctionalityTest.java

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,14 @@
1414
package org.eclipse.esmf.aspectmodel.java;
1515

1616
import static org.assertj.core.api.Assertions.assertThat;
17+
import static org.assertj.core.api.Assertions.assertThatThrownBy;
18+
import static org.junit.jupiter.params.provider.Arguments.arguments;
1719

1820
import java.io.IOException;
1921
import java.lang.reflect.InvocationTargetException;
2022
import java.lang.reflect.Method;
2123
import java.util.List;
24+
import java.util.stream.Stream;
2225

2326
import org.eclipse.esmf.staticmetamodel.ComputedProperty;
2427
import org.eclipse.esmf.staticmetamodel.StaticContainerProperty;
@@ -30,6 +33,9 @@
3033

3134
import org.apache.commons.lang3.reflect.ConstructorUtils;
3235
import org.junit.jupiter.api.Test;
36+
import org.junit.jupiter.params.ParameterizedTest;
37+
import org.junit.jupiter.params.provider.Arguments;
38+
import org.junit.jupiter.params.provider.MethodSource;
3339

3440
public class ExtendedStaticMetaModelFunctionalityTest extends StaticMetaModelGeneratorTest {
3541
@Test
@@ -253,10 +259,8 @@ void testCollectionPropertyPredicates() throws IOException, ReflectiveOperationE
253259
final StaticClassGenerationResult result = TestContext.generateStaticAspectCode().apply( getGenerators( aspect, false,
254260
JavaCodeGenerationConfig.SetterStyle.STANDARD ) );
255261

256-
final Class<?> aspectClass = findGeneratedClass( result, "AspectWithNestedEntityList" );
257262
final Class<?> entityClass = findGeneratedClass( result, "TestFirstEntity" );
258263
final Class<?> nestedEntityClass = findGeneratedClass( result, "TestSecondEntity" );
259-
final Class<?> metaAspectClass = findGeneratedClass( result, "MetaAspectWithNestedEntityList" );
260264
final Class<?> metaEntity = findGeneratedClass( result, "MetaTestFirstEntity" );
261265
final Class<?> metaNestedEntity = findGeneratedClass( result, "MetaTestSecondEntity" );
262266

@@ -290,4 +294,41 @@ void testCollectionPropertyPredicates() throws IOException, ReflectiveOperationE
290294
assertThat( entities.stream().filter( matchNestedEntityStringAll ) ).containsExactly( e1 );
291295
assertThat( entities.stream().filter( matchNestedEntityStringAnyWithNoneMatching ) ).isEmpty();
292296
}
297+
298+
@ParameterizedTest( name = "{0}" )
299+
@MethodSource( "mutatePropertiesInput" )
300+
void testMutatePropertiesThroughStaticProperties( final String testName, final boolean generateSetters,
301+
final JavaCodeGenerationConfig.SetterStyle setterStyle,
302+
final boolean expectException ) throws IOException, ReflectiveOperationException {
303+
final TestAspect aspect = TestAspect.ASPECT_WITH_PROPERTY;
304+
final StaticClassGenerationResult result = TestContext.generateStaticAspectCode().apply( getGenerators( aspect, generateSetters,
305+
setterStyle ) );
306+
307+
final Class<?> aspectClass = findGeneratedClass( result, "AspectWithProperty" );
308+
final Class<?> metaAspectClass = findGeneratedClass( result, "MetaAspectWithProperty" );
309+
310+
final StaticProperty<Object, Object> testProperty = (StaticProperty<Object, Object>) metaAspectClass.getField( "TEST_PROPERTY" )
311+
.get( null );
312+
313+
final String originalValue = "SOMEVALUE";
314+
final String changedValue = "CHANGEDVALUE";
315+
final Object aspectInstance = ConstructorUtils.invokeConstructor( aspectClass, "SOMEVALUE" );
316+
317+
assertThat( testProperty.getValue( aspectInstance ) ).isEqualTo( originalValue );
318+
if ( expectException ) {
319+
assertThatThrownBy( () -> testProperty.setValue( aspectInstance, changedValue ) ).isInstanceOf(
320+
UnsupportedOperationException.class );
321+
} else {
322+
testProperty.setValue( aspectInstance, changedValue );
323+
assertThat( testProperty.getValue( aspectInstance ) ).isEqualTo( changedValue );
324+
}
325+
}
326+
327+
static Stream<Arguments> mutatePropertiesInput() {
328+
return Stream.of(
329+
arguments( "Setters disabled, should fail with exception", false, null, true ),
330+
arguments( "Setters STANDARD, should succeed", true, JavaCodeGenerationConfig.SetterStyle.STANDARD, false ),
331+
arguments( "Setters FLUENT, should succeed", true, JavaCodeGenerationConfig.SetterStyle.FLUENT, false ),
332+
arguments( "Setters FLUENT_COMPACT, should succeed", true, JavaCodeGenerationConfig.SetterStyle.FLUENT_COMPACT, false ) );
333+
}
293334
}

tools/samm-cli/src/test/java/org/eclipse/esmf/SammCliTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -697,7 +697,7 @@ void testAspectToJavaWithSetters() {
697697
file -> file.getName().equals( "AspectWithEntity.java" ) || file.getName().equals( "TestEntity.java" ) );
698698

699699
final File sourceFile = directory.toPath().resolve( "AspectWithEntity.java" ).toFile();
700-
assertThat( sourceFile ).content().contains( "public void setTestProperty( final TestEntity testProperty )" );
700+
assertThat( sourceFile ).content().contains( "public void setTestProperty(final TestEntity testProperty)" );
701701
}
702702

703703
@Test
@@ -715,7 +715,7 @@ void testAspectToJavaWithFluentSetters() {
715715
file -> file.getName().equals( "AspectWithEntity.java" ) || file.getName().equals( "TestEntity.java" ) );
716716

717717
final File sourceFile = directory.toPath().resolve( "AspectWithEntity.java" ).toFile();
718-
assertThat( sourceFile ).content().contains( "public AspectWithEntity setTestProperty( final TestEntity testProperty )" );
718+
assertThat( sourceFile ).content().contains( "public AspectWithEntity setTestProperty(final TestEntity testProperty)" );
719719
}
720720

721721
@Test
@@ -733,7 +733,7 @@ void testAspectToJavaWithFluentCompactSetters() {
733733
file -> file.getName().equals( "AspectWithEntity.java" ) || file.getName().equals( "TestEntity.java" ) );
734734

735735
final File sourceFile = directory.toPath().resolve( "AspectWithEntity.java" ).toFile();
736-
assertThat( sourceFile ).content().contains( "public AspectWithEntity testProperty( final TestEntity testProperty )" );
736+
assertThat( sourceFile ).content().contains( "public AspectWithEntity testProperty(final TestEntity testProperty)" );
737737
}
738738

739739
@Test

0 commit comments

Comments
 (0)