Package jadx.tests.integration.variables

Source Code of jadx.tests.integration.variables.TestVariables4$TestCls

package jadx.tests.integration.variables;

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

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import org.junit.Test;

import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.assertThat;

public class TestVariables4 extends IntegrationTest {

  public static class TestCls {
    private static boolean runTest(String clsName) {
      try {
        boolean pass = false;
        String msg = null;
        Throwable exc = null;

        Class<?> cls = Class.forName(clsName);
        if (cls.getSuperclass() == AbstractTest.class) {
          Method mth = cls.getMethod("testRun");
          try {
            AbstractTest test = (AbstractTest) cls.getConstructor().newInstance();
            pass = (Boolean) mth.invoke(test);
          } catch (InvocationTargetException e) {
            pass = false;
            exc = e.getCause();
          } catch (Throwable e) {
            pass = false;
            exc = e;
          }
        } else {
          msg = "not extends AbstractTest";
        }
        System.err.println(">> "
            + (pass ? "PASS" : "FAIL") + "\t"
            + clsName
            + (msg == null ? "" : "\t - " + msg));
        if (exc != null) {
          exc.printStackTrace();
        }
        return pass;
      } catch (ClassNotFoundException e) {
        System.err.println("Class '" + clsName + "' not found");
      } catch (Exception e) {
        e.printStackTrace();
      }
      return false;
    }

    private static class AbstractTest {
    }
  }

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

    assertThat(code, containsString("} catch (InvocationTargetException e) {"));
    assertThat(code, containsString("pass = false;"));
    assertThat(code, containsString("exc = e.getCause();"));
    assertThat(code, containsString("System.err.println(\"Class '\" + clsName + \"' not found\");"));
    assertThat(code, containsString("return pass;"));
  }

  @Test
  public void test2() {
    noDebugInfo();
    getClassNode(TestCls.class);
  }
}
TOP

Related Classes of jadx.tests.integration.variables.TestVariables4$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.