Package jadx.tests.integration.invoke

Source Code of jadx.tests.integration.invoke.TestOverloadedMethodInvoke$TestCls

package jadx.tests.integration.invoke;

import jadx.core.dex.nodes.ClassNode;
import jadx.tests.api.IntegrationTest;

import org.junit.Test;

import static jadx.tests.api.utils.JadxMatchers.containsOne;
import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.CoreMatchers.not;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;

public class TestOverloadedMethodInvoke extends IntegrationTest {

  public static class TestCls {
    int c;

    public void method(Throwable th, int a) {
      c++;
      if (th != null) {
        c += 100;
      }
      c += a;
    }

    public void method(Exception e, int a) {
      c += 1000;
      if (e != null) {
        c += 10000;
      }
      c += a;
    }

    public void test(Throwable th, Exception e) {
      method(e, 10);
      method(th, 100);
      method((Throwable) e, 1000);
      method((Exception) th, 10000);
    }

    public void check() {
      test(null, new Exception());
      assertEquals(23212, c);
    }
  }

  @Test
  public void test() {
    ClassNode cls = getClassNode(TestCls.class);
    String code = cls.getCode().toString();

    assertThat(code, containsOne("public void test(Throwable th, Exception e) {"));
    assertThat(code, containsOne("method(e, 10);"));
    assertThat(code, containsOne("method(th, 100);"));
    assertThat(code, containsOne("method((Throwable) e, 1000);"));
    assertThat(code, containsOne("method((Exception) th, 10000);"));
    assertThat(code, not(containsString("(Exception) e")));
  }
}
TOP

Related Classes of jadx.tests.integration.invoke.TestOverloadedMethodInvoke$TestCls

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.