Description Provide sample and class/method full name
Test
package jadx .tests .integration .switches ;
import org .junit .jupiter .api .Test ;
import jadx .tests .api .IntegrationTest ;
import jadx .tests .api .utils .assertj .JadxAssertions ;
import static jadx .tests .api .utils .assertj .JadxAssertions .assertThat ;
public class TestSwitchOverStrings3 extends IntegrationTest {
public static class TestCls {
/**
* Switch statement reconstructed from bytecode.
* <p>
* Original:
*
* <pre>
* {@code
* // Strings 'frewhyh', 'phgafkp' and 'ucguedt' have same hash code.
* public int test(String str) {
* switch (str) {
* case "frewhyh":
* return 1;
* case "phgafkp":
* return 2;
* case "test":
* case "test2":
* return 3;
* case "other":
* return 4;
* default:
* return 0;
* }
* }
* }
* </pre>
*/
public int test (String str ) {
char c = 65535 ;
switch (str .hashCode ()) {
case -603257287 :
if (!str .equals ("phgafkp" )) {
if (str .equals ("frewhyh" )) {
c = 0 ;
break ;
}
} else {
c = 1 ;
break ;
}
break ;
case 3556498 :
if (str .equals ("test" )) {
c = 2 ;
break ;
}
break ;
case 106069776 :
if (str .equals ("other" )) {
c = 4 ;
break ;
}
break ;
case 110251488 :
if (str .equals ("test2" )) {
c = 3 ;
break ;
}
break ;
}
switch (c ) {
case 0 :
return 1 ;
case 1 :
return 2 ;
case 2 :
case 3 :
return 3 ;
case 4 :
return 4 ;
default :
return 0 ;
}
}
public void check () {
JadxAssertions .assertThat (test ("frewhyh" )).isEqualTo (1 );
JadxAssertions .assertThat (test ("phgafkp" )).isEqualTo (2 );
JadxAssertions .assertThat (test ("test" )).isEqualTo (3 );
JadxAssertions .assertThat (test ("test2" )).isEqualTo (3 );
JadxAssertions .assertThat (test ("other" )).isEqualTo (4 );
JadxAssertions .assertThat (test ("unknown" )).isEqualTo (0 );
JadxAssertions .assertThat (test ("ucguedt" )).isEqualTo (0 );
}
}
@ Test
public void test () {
assertThat (getClassNode (TestCls .class ))
.code ()
.doesNotContain ("case -603257287:" )
.doesNotContain ("c = " )
.containsOne ("case \" frewhyh\" :" )
.countString (5 , "return " );
}
}
Reactions are currently unavailable
You can’t perform that action at this time.
Provide sample and class/method full name
Test