package jadx.samples;
public class TestInner extends AbstractTest {
public static int count = -2;
public static class MyThread extends Thread {
public MyThread(String name) {
super(name);
}
@Override
public void run() {
count++;
super.run();
}
}
public static class MyInceptionThread extends MyThread {
public static class MyThread2 extends Thread {
@Override
public void run() {
count += 2;
}
}
public MyInceptionThread() {
super("MyInceptionThread");
}
@Override
public void run() {
MyThread2 thr = new MyThread2();
thr.start();
try {
thr.join();
} catch (InterruptedException e) {
assertTrue(false);
}
}
}
public void func() {
new Runnable() {
@Override
public void run() {
count += 4;
}
}.run();
}
public void func2() {
new Runnable() {
{
count += 5;
}
@Override
public void run() {
count += 6;
}
}.run();
}
public String func3() {
return new Object() {
{
count += 7;
}
@Override
public String toString() {
count += 8;
return Integer.toString(count);
}
}.toString();
}
@SuppressWarnings("serial")
public static class MyException extends Exception {
public MyException(String str, Exception e) {
super("msg:" + str, e);
}
}
@Override
public boolean testRun() throws Exception {
TestInner c = new TestInner();
TestInner.count = 0;
c.func();
c.func2();
Runnable myRunnable = new Runnable() {
@Override
public void run() {
TestInner.count += 8;
}
};
myRunnable.run();
MyThread thread = new TestInner.MyThread("my thread");
thread.start();
MyInceptionThread thread2 = new TestInner.MyInceptionThread();
thread2.start();
thread.join();
thread2.join();
assertEquals(func3(), "41");
return TestInner.count == 41;
}
}