import java.util.Random;
public class NumberGenerator {
public static String generateRandomByte(int idx, Random r) {
byte[] edgeCases = { Byte.MIN_VALUE, Byte.MAX_VALUE, 0};
byte b = idx < edgeCases.length ? edgeCases[idx] : (byte) r.nextInt();
return Byte.toString(b);
}
public static String generateRandomChar(int idx, Random r) {
char[] edgeCases = { Character.MIN_VALUE, Character.MAX_VALUE, 'a','b','c','d','e','f','g','h','j','k','l','A','B','C','D','E','F','G','H','J','I','0','1','2','3','4','5','6','7','8','%'};
char c = idx < edgeCases.length ? edgeCases[idx] : (char) r.nextInt();
return "0x" + Integer.toHexString(c);
}
public static String generateRandomShort(int idx, Random r) {
short[] edgeCases = { Short.MIN_VALUE, Short.MAX_VALUE, 0};
short s = idx < edgeCases.length ? edgeCases[idx] : (short) r.nextInt();
return Short.toString(s);
}
public static String generateRandomInt(int idx, Random r) {
int[] edgeCases = { Integer.MIN_VALUE, Integer.MAX_VALUE, 0};
int i = idx < edgeCases.length ? edgeCases[idx] : r.nextInt();
return Integer.toString(i);
}
public static String generateRandomLong(int idx, Random r) {
long[] edgeCases = { Long.MIN_VALUE, Long.MAX_VALUE, 0};
long l = idx < edgeCases.length ? edgeCases[idx] : (long) r.nextLong();
return Long.toString(l) + "L";
}
public static String generateRandomFloat(int idx, Random r) {
String[] edgeCases = { "Float.MIN_VALUE", "Float.MAX_VALUE", "Float.NaN", "Float.NEGATIVE_INFINITY", "Float.POSITIVE_INFINITY" };
if(idx < edgeCases.length) { return edgeCases[idx]; }
return Float.toString(r.nextFloat()) + "F";
}
public static String generateRandomDouble(int idx, Random r) {
String[] edgeCases = { "Double.MIN_VALUE", "Double.MAX_VALUE", "Double.NaN", "Double.NEGATIVE_INFINITY", "Double.POSITIVE_INFINITY" };
if(idx < edgeCases.length) { return edgeCases[idx]; }
return Double.toString(r.nextDouble());
}
public static String generateRandomValue(int idx, String type, Random r) {
Number n;
if(type.equals("byte")) {
return generateRandomByte(idx, r);
} else if(type.equals("char")) {
return generateRandomChar(idx, r);
} else if(type.equals("short")) {
return generateRandomShort(idx, r);
} else if(type.equals("int")) {
return generateRandomInt(idx, r);
} else if(type.equals("long")) {
return generateRandomLong(idx, r);
} else if(type.equals("float")) {
return generateRandomFloat(idx, r);
} else if(type.equals("double")) {
return generateRandomDouble(idx, r);
}
return null;
}
public static void main(String[] args) {
int n = 100;
if(args.length == 1) { n = Integer.parseInt(args[0]); }
System.err.println("Generating " + n + " input cases.");
Random r = new Random();
String[] types = { "byte", "short", "char", "int", "long", "float", "double" };
for(String type : types) {
System.out.print(type + "[] " + type.charAt(0) + "s = {");
for(int i=0;i!=n;++i) {
String v = generateRandomValue(i,type, r);
if(i != 0) { System.out.print(","); }
System.out.print(v);
}
System.out.println("};\n\nfor(" + type + " v : " + type.charAt(0) + "s) {\n}");
}
}
}