Skip to content

Commit

Permalink
Issue checkstyle#12331: Test cases add to kill mutation for ModifedCo…
Browse files Browse the repository at this point in the history
…ntrolVariableCheck
  • Loading branch information
Kevin222004 committed Jan 11, 2023
1 parent 8bfa87c commit bcfc443
Show file tree
Hide file tree
Showing 3 changed files with 131 additions and 198 deletions.
198 changes: 0 additions & 198 deletions config/pitest-suppressions/pitest-coding-2-suppressions.xml
Expand Up @@ -153,204 +153,6 @@
<lineContent>this.query = query;</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>leaveToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_10</mutator>
<description>RemoveSwitch 10 (case value 102)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>leaveToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_11</mutator>
<description>RemoveSwitch 11 (case value 103)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>leaveToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_12</mutator>
<description>RemoveSwitch 12 (case value 104)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>leaveToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_13</mutator>
<description>RemoveSwitch 13 (case value 105)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>leaveToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_14</mutator>
<description>RemoveSwitch 14 (case value 106)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>leaveToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_15</mutator>
<description>RemoveSwitch 15 (case value 107)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>leaveToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_16</mutator>
<description>RemoveSwitch 16 (case value 108)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>leaveToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_2</mutator>
<description>RemoveSwitch 2 (case value 26)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>leaveToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_7</mutator>
<description>RemoveSwitch 7 (case value 99)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>leaveToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_8</mutator>
<description>RemoveSwitch 8 (case value 100)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>leaveToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_9</mutator>
<description>RemoveSwitch 9 (case value 101)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>visitToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_10</mutator>
<description>RemoveSwitch 10 (case value 102)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>visitToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_11</mutator>
<description>RemoveSwitch 11 (case value 103)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>visitToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_12</mutator>
<description>RemoveSwitch 12 (case value 104)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>visitToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_13</mutator>
<description>RemoveSwitch 13 (case value 105)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>visitToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_14</mutator>
<description>RemoveSwitch 14 (case value 106)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>visitToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_15</mutator>
<description>RemoveSwitch 15 (case value 107)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>visitToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_16</mutator>
<description>RemoveSwitch 16 (case value 108)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>visitToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_2</mutator>
<description>RemoveSwitch 2 (case value 26)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>visitToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_7</mutator>
<description>RemoveSwitch 7 (case value 99)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>visitToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_8</mutator>
<description>RemoveSwitch 8 (case value 100)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>ModifiedControlVariableCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck</mutatedClass>
<mutatedMethod>visitToken</mutatedMethod>
<mutator>org.pitest.mutationtest.engine.gregor.mutators.experimental.RemoveSwitchMutator_9</mutator>
<description>RemoveSwitch 9 (case value 101)</description>
<lineContent>switch (ast.getType()) {</lineContent>
</mutation>

<mutation unstable="false">
<sourceFile>MultipleStringLiteralsCheck.java</sourceFile>
<mutatedClass>com.puppycrawl.tools.checkstyle.checks.coding.MultipleStringLiteralsCheck</mutatedClass>
Expand Down
Expand Up @@ -131,6 +131,38 @@ public void testImproperToken() {
}
}

@Test
public void testMutation() throws Exception {

final String[] expected = {
"15:15: " + getCheckMessage(MSG_KEY, "i"),
"16:15: " + getCheckMessage(MSG_KEY, "k"),
"23:15: " + getCheckMessage(MSG_KEY, "i"),
"24:15: " + getCheckMessage(MSG_KEY, "k"),
"31:15: " + getCheckMessage(MSG_KEY, "i"),
"32:15: " + getCheckMessage(MSG_KEY, "k"),
"39:15: " + getCheckMessage(MSG_KEY, "i"),
"40:15: " + getCheckMessage(MSG_KEY, "k"),
"47:15: " + getCheckMessage(MSG_KEY, "i"),
"48:15: " + getCheckMessage(MSG_KEY, "k"),
"55:15: " + getCheckMessage(MSG_KEY, "i"),
"56:15: " + getCheckMessage(MSG_KEY, "k"),
"63:15: " + getCheckMessage(MSG_KEY, "i"),
"64:15: " + getCheckMessage(MSG_KEY, "k"),
"71:15: " + getCheckMessage(MSG_KEY, "i"),
"72:15: " + getCheckMessage(MSG_KEY, "k"),
"79:15: " + getCheckMessage(MSG_KEY, "i"),
"80:15: " + getCheckMessage(MSG_KEY, "k"),
"87:15: " + getCheckMessage(MSG_KEY, "i"),
"88:15: " + getCheckMessage(MSG_KEY, "k"),
"95:14: " + getCheckMessage(MSG_KEY, "i"),
"96:14: " + getCheckMessage(MSG_KEY, "k"),
};
verifyWithInlineConfigParser(
getPath("InputModifiedControlVariableKillMutation.java"),
expected);
}

/**
* We cannot reproduce situation when visitToken is called and leaveToken is not.
* So, we have to use reflection to be sure that even in such situation
Expand Down
@@ -0,0 +1,99 @@
/*
ModifiedControlVariable
skipEnhancedForLoopVariable = (default)false
*/

package com.puppycrawl.tools.checkstyle.checks.coding.modifiedcontrolvariable;

public class InputModifiedControlVariableKillMutation {

// case value 99 --> MINUS_ASSIGN
void method() {
for (int i=0,k=0; i<10 && k < 10; ++i,++k) {
i -= 3; // violation
k -= 4; // violation
}
}

// case value 100 --> STAR_ASSIGN
void method1() {
for (int i=0,k=0; i<10 && k < 10; ++i,++k) {
i *= 3; // violation
k *= 4; // violation
}
}

// case value 101 --> DIV_ASSIGN
void method2() {
for (int i=0,k=0; i<10 && k < 10; ++i,++k) {
i /= 3; // violation
k /= 4; // violation
}
}

// case value 102 --> MOD_ASSIGN
void method3() {
for (int i=0,k=0; i<10 && k < 10; ++i,++k) {
i %= 3; // violation
k %= 4; // violation
}
}

// case value 103 --> SR_ASSIGN
void method4() {
for (int i=0,k=0; i<10 && k < 10; ++i,++k) {
i >>= 3; // violation
k >>= 4; // violation
}
}

// case value 104 --> BSR_ASSIGN
void method5() {
for (int i=0,k=0; i<10 && k < 10; ++i,++k) {
i >>>= 3; // violation
k >>>= 4; // violation
}
}

// case value 105 --> SL_ASSIGN
void method6() {
for (int i=0,k=0; i<10 && k < 10; ++i,++k) {
i <<= 3; // violation
k <<= 4; // violation
}
}

// case value 106 --> BAND_ASSIGN
void method7() {
for (int i=0,k=0; i<10 && k < 10; ++i,++k) {
i &= 3; // violation
k &= 4; // violation
}
}

// case value 107 --> BXOR_ASSIGN
void method8() {
for (int i=0,k=0; i<10 && k < 10; ++i,++k) {
i ^= 3; // violation
k ^= 4; // violation
}
}

// case value 108 --> BOR_ASSIGN
void method9() {
for (int i=0,k=0; i<10 && k < 10; ++i,++k) {
i |= 3; // violation
k |= 4; // violation
}
}

// case value 26 --> BOR_ASSIGN
void method10() {
for (int i=0,k=0; i<10 && k < 10; ++i,++k) {
i--; // violation
k--; // violation
}
}
}

0 comments on commit bcfc443

Please sign in to comment.