package jadx.samples;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
import java.util.Set;
public class TestEnum extends AbstractTest {
public enum Direction {
NORTH, SOUTH, EAST, WEST
}
public static final String DOG = "DOG";
public enum Animal {
CAT, DOG
}
private static int three = 3;
public enum Numbers {
ONE(1), TWO(2), THREE(three), FOUR(three + 1);
private final int num;
private Numbers(int n) {
this.num = n;
}
public int getNum() {
return num;
}
}
public enum Operation {
PLUS {
@Override
int apply(int x, int y) {
return x + y;
}
},
MINUS {
@Override
int apply(int x, int y) {
return x - y;
}
};
abstract int apply(int x, int y);
}
public interface IOps {
double apply(double x, double y);
}
public enum DoubleOperations implements IOps {
TIMES("*") {
@Override
public double apply(double x, double y) {
return x * y;
}
},
DIVIDE("/") {
@Override
public double apply(double x, double y) {
return x / y;
}
};
private final String op;
private DoubleOperations(String op) {
this.op = op;
}
public String getOp() {
return op;
}
}
public enum Types {
INT, FLOAT,
LONG, DOUBLE,
OBJECT, ARRAY;
private static Set<Types> primitives = EnumSet.of(INT, FLOAT, LONG, DOUBLE);
public static List<Types> references = new ArrayList<Types>();
static {
references.add(OBJECT);
references.add(ARRAY);
}
public static Set<Types> getPrimitives() {
return primitives;
}
}
public enum EmptyEnum {
;
public static String getOp() {
return "op";
}
}
public enum Singleton {
INSTANCE;
public String test(String arg) {
return arg.concat("test");
}
}
public String testEnumSwitch(final Direction color) {
String d;
switch (color) {
case NORTH:
d = "N";
break;
case SOUTH:
d = "S";
break;
default:
d = "<>";
break;
}
return d;
}
@Override
public boolean testRun() throws Exception {
Direction d = Direction.EAST;
assertTrue(d.toString().equals("EAST"));
assertTrue(d.ordinal() == 2);
assertTrue(Numbers.THREE.getNum() == 3);
assertTrue(Operation.PLUS.apply(2, 2) == 4);
assertTrue(DoubleOperations.TIMES.apply(1, 1) == 1);
assertTrue(Types.getPrimitives().contains(Types.INT));
assertTrue(Types.references.size() == 2);
assertTrue(EmptyEnum.values().length == 0);
assertTrue(EmptyEnum.getOp().equals("op"));
assertTrue(Singleton.INSTANCE.test("a").equals("atest"));
return true;
}
public static void main(String[] args) throws Exception {
new TestEnum().testRun();
}
}