/** * Tests whether the refactoring * * @throws Exception In case of an unexpected exception. */ @Test public void testRefactorCaseMethodAddDifferentParam() throws Exception { VariationPoint vp = RefactoringTestUtil.getMethodAddDifferentParamCase(VariabilityType.OPTXOR); IfStaticConfigClassMethod refactoring = new IfStaticConfigClassMethod(); refactoring.refactor(vp, null); // location has two methods Class vpLocation = (Class) ((JaMoPPJavaSoftwareElement) vp.getLocation()).getJamoppElement(); assertThat(vpLocation.getMethods().size(), equalTo(2)); Method firstMethod = vpLocation.getMethods().get(0); Method secondMethod = vpLocation.getMethods().get(1); // assert number of parameters assertThat(firstMethod.getParameters().size(), anyOf(equalTo(1), equalTo(2))); assertThat(secondMethod.getParameters().size(), anyOf(equalTo(1), equalTo(2))); assertThat( firstMethod.getParameters().size(), not(equalTo(secondMethod.getParameters().size()))); // assert method names and return types assertThat(firstMethod.getName(), equalTo("someMethod")); assertThat(secondMethod.getName(), equalTo("someMethod")); assertThat(firstMethod.getTypeReference(), instanceOf(Void.class)); assertThat(secondMethod.getTypeReference(), instanceOf(Void.class)); // verify correct VPM RefactoringTestUtil.assertValidVPM(vp); }
/** * Tests whether the refactoring merges the constants of two enumerations correctly. The generated * enumeration must contain the constants from all variants. * * @throws Exception In case of an unexpected exception. */ @Test public void testRefactorCaseEnumerationAddEnumConstant() throws Exception { VariationPoint vp = RefactoringTestUtil.getEnumerationAddEnumConstantCase(VariabilityType.OPTXOR); IfStaticConfigClassEnumerationInMemberContainer refactoring = new IfStaticConfigClassEnumerationInMemberContainer(); refactoring.refactor(vp, null); // location has one member (the enumeration) MemberContainer vpLocation = (MemberContainer) ((JaMoPPJavaSoftwareElement) vp.getLocation()).getJamoppElement(); assertThat(vpLocation.getMembers().size(), equalTo(1)); // member is an enumeration assertThat(vpLocation.getMembers().get(0), instanceOf(Enumeration.class)); Enumeration enumeration = (Enumeration) vpLocation.getMembers().get(0); // enumeration has the correct name and the two constants from the base and the integration assertThat(enumeration.getName(), equalTo("A")); assertThat(enumeration.getConstants().size(), equalTo(2)); assertThat(enumeration.getConstants().get(0).getName(), anyOf(equalTo("A"), equalTo("B"))); assertThat(enumeration.getConstants().get(1).getName(), anyOf(equalTo("A"), equalTo("B"))); assertThat( enumeration.getConstants().get(0).getName(), not(equalTo(enumeration.getConstants().get(1).getName()))); // verify correct VPM RefactoringTestUtil.assertValidVPM(vp); }
/** * Tests whether the refactoring * * @throws Exception In case of an unexpected exception. */ @Test public void testRefactorCaseMethodAddSameParam() throws Exception { VariationPoint vp = RefactoringTestUtil.getMethodAddSameParamCase(VariabilityType.OPTXOR); IfStaticConfigClassMethod refactoring = new IfStaticConfigClassMethod(); refactoring.refactor(vp, null); // location has one method Class vpLocation = (Class) ((JaMoPPJavaSoftwareElement) vp.getLocation()).getJamoppElement(); assertThat(vpLocation.getMethods().size(), equalTo(1)); // assert number of parameters assertThat(vpLocation.getMethods().get(0).getParameters().size(), equalTo(0)); // assert method name and return type assertThat(vpLocation.getMethods().get(0).getTypeReference(), instanceOf(Void.class)); // verify correct VPM RefactoringTestUtil.assertValidVPM(vp); }