package examples.stringswitch;
import java.util.HashMap;
import java.util.Map;
import utils.Timer;
public class SwitchTest extends StringSwitch {
static SwitchTest st;
static Timer timer;
static int COUNT;
static final int ITER = 20;
public final int QUIT = 0;
public final int DIR = 1;
public final int RUN = 2;
public final int STOP = 3;
public final int DEBUG = 4;
public final int FWD = 5;
public static final int REV = 6;
static Map hashMap = new HashMap();
public SwitchTest() {
add("quit", 0);
add("dir", 1);
add("run", 2);
add("stop", 3);
add("debug", 4);
add("forward", 5);
add("reverse", 6);
initTypes();
}
public static void main(String[] args) {
COUNT = 1000000;
System.out.println("COUNT = " + COUNT + "\n");
getSwitchTest();
int id = st.getIdForString("TIFF_BIG_ENDIAN");
System.out.println("id="+id);
timer = new Timer();
ifTestBottom();
ifTestTop();
ifTestSwitch();
ifTestInt();
ifTestFast();
}
private static void getSwitchTest() {
st = new SwitchTest();
st.addKeyValue("quit", 0);
st.addKeyValue("dir", 1);
st.addKeyValue("run", 2);
st.addKeyValue("stop", 3);
st.addKeyValue("debug", 4);
st.addKeyValue("forward", 5);
st.addKeyValue("reverse", 6);
}
private static void ifTestBottom() {
System.out.println("\nTesting if-then (Bottom)");
for (int i = 0; i < ITER; i++) {
timer.clear();
timer.mark();
for (int j = 0; j < COUNT; j++) {
st.doIf("reverse");
}
timer.record();
System.out.println(timer.elapsed());
}
}
private static void ifTestFast() {
System.out.println("\nTesting Switch with a (String) <fast>");
for (int i = 0; i < ITER; i++) {
timer.clear();
timer.mark();
for (int j = 0; j < COUNT; j++)
st.fastSwitch("reverse");
timer.record();
System.out.println(timer.elapsed());
}
}
private static void ifTestInt() {
System.out.println("\nTesting Switch with an (int)");
for (int i = 0; i < ITER; i++) {
timer.clear();
timer.mark();
for (int j = 0; j < COUNT; j++) {
st.doSwitch2(REV);
}
timer.record();
System.out.println(timer.elapsed());
}
}
private static void ifTestSwitch() {
System.out.println("\nTesting Switch with a (String)");
for (int i = 0; i < ITER; i++) {
timer.clear();
timer.mark();
for (int j = 0; j < COUNT; j++) {
st.doSwitch("reverse");
}
timer.record();
System.out.println(timer.elapsed());
}
}
private static void ifTestTop() {
System.out.println("\nTesting if-then (Top)");
for (int i = 0; i < ITER; i++) {
timer.clear();
timer.mark();
for (int j = 0; j < COUNT; j++) {
st.doIf("quit");
}
timer.record();
System.out.println(timer.elapsed());
}
}
private void doSwitch(String s) {
switch (getIdForString(s)) {
case QUIT:
break;
case DIR:
break;
case RUN:
break;
case STOP:
break;
case DEBUG:
break;
case FWD:
break;
case REV:
break;
}
}
private void doSwitch2(int i) {
switch (i) {
case QUIT:
break;
case DIR:
break;
case RUN:
break;
case STOP:
break;
case DEBUG:
break;
case FWD:
break;
case REV:
break;
}
}
private void fastSwitch(String s) {
switch (((Integer) hashMap.get(s)).intValue()) {
case QUIT:
break;
case DIR:
break;
case RUN:
break;
case STOP:
break;
case DEBUG:
break;
case FWD:
break;
case REV:
break;
}
}
private void doIf(String s) {
if (s.equals("quit")) {
} else if (s.equals("dir")) {
} else if (s.equals("run")) {
} else if (s.equals("stop")) {
} else if (s.equals("debug")) {
} else if (s.equals("forward")) {
} else if (s.equals("reverse")) {
}
}
public String getStringForId(int id) {
return (String) hashMap.get(new Integer(id));
}
public int getIdForString(String s) {
Integer i = (Integer) hashMap.get(s);
return i.intValue();
}
private void addKeyValue(String s, final int id) {
hashMap.put(s, new Integer(id));
}
private void initTypes() {
add(TYPENOTFOUND, "TYPENOTFOUND");
add(UUENCODED, "UUENCODED");
add(BTOAD, "BTOAD");
add(PBM, "PBM");
add(PGM, "PGM");
add(PPM, "PPM");
add(PBM_RAWBITS, "PBM_RAWBITS");
add(PGM_RAWBITS, "PGM_RAWBITS");
add(PPM_RAWBITS, "PPM_RAWBITS");
add(MGR_BITMAP, "MGR_BITMAP");
add(GIF87a, "GIF87a");
add(GIF89a, "GIF89a");
add(IFF_ILBM, "IFF_ILBM");
add(SUNRASTER, "SUNRASTER");
add(SGI_IMAGE, "SGI_IMAGE");
add(CMU_WINDOW_MANAGER_BITMAP, "CMU_WINDOW_MANAGER_BITMAP");
add(SUN, "SUN");
add(TIFF_BIG_ENDIAN, "TIFF_BIG_ENDIAN");
add(TIFF_LITTLE_ENDIAN, "TIFF_LITTLE_ENDIAN");
add(FLI, "FLI");
add(MPEG, "MPEG");
add(SUN_NEXT_AUDIO, "SUN_NEXT_AUDIO");
add(STANDARD_MIDI, "STANDARD_MIDI");
add(MICROSOFT_RIFF, "MICROSOFT_RIFF");
add(BZIP, "BZIP");
add(IFF_DATA, "IFF_DATA");
add(NIFF_IMAGE, "NIFF_IMAGE");
add(PC_BITMAP, "PC_BITMAP");
add(PDF_DOCUMENT, "PDF_DOCUMENT");
add(POSTSCRIPT_DOCUMENT, "POSTSCRIPT_DOCUMENT");
add(SILICON_GRAPHICS_MOVIE, "SILICON_GRAPHICS_MOVIE");
add(APPLE_QUICKTIME_MOVIE, "APPLE_QUICKTIME_MOVIE");
add(ZIP_ARCHIVE, "ZIP_ARCHIVE");
add(UNIX_COMPRESS, "UNIX_COMPRESS");
add(GZIP, "GZIP");
add(HUFFMAN, "HUFFMAN");
add(PNG_IMAGE, "PNG_IMAGE");
add(JPEG, "JPEG");
add(JPG, "JPG");
add(PSHOP8, "Photo Shop...8 bits per pel");
add(ZIP, "Zip file...Wavelet encoded image sequence?");
}
public int ifTest(String s) {
if (s.startsWith( "TYPENOTFOUND"))
return TYPENOTFOUND;
if (s.startsWith( "UUENCODED"))
return UUENCODED;
if (s.startsWith( "BTOAD"))
return BTOAD;
if (s.startsWith( "PBM"))
return PBM;
if (s.startsWith( "PGM"))
return PGM;
if (s.startsWith( "PPM"))
return PPM;
if (s.startsWith( "PBM_RAWBITS"))
return PBM_RAWBITS;
if (s.startsWith( "PGM_RAWBITS"))
return PGM_RAWBITS;
if (s.startsWith( "PPM_RAWBITS"))
return PPM_RAWBITS;
if (s.startsWith( "MGR_BITMAP"))
return MGR_BITMAP;
if (s.startsWith( "GIF87a"))
return GIF87a;
if (s.startsWith( "GIF89a"))
return GIF89a;
if (s.startsWith( "IFF_ILBM"))
return IFF_ILBM;
if (s.startsWith( "SUNRASTER"))
return SUNRASTER;
if (s.startsWith( "SGI_IMAGE"))
return SGI_IMAGE;
if (s.startsWith( "CMU_WINDOW_MANAGER_BITMAP"))
return CMU_WINDOW_MANAGER_BITMAP;
if (s.startsWith( "SUN"))
return SUN;
if (s.startsWith( "TIFF_BIG_ENDIAN"))
return TIFF_BIG_ENDIAN;
if (s.startsWith( "TIFF_LITTLE_ENDIAN"))
return TIFF_LITTLE_ENDIAN;
if (s.startsWith( "FLI"))
return FLI;
if (s.startsWith( "MPEG"))
return MPEG;
if (s.startsWith( "SUN_NEXT_AUDIO"))
return SUN_NEXT_AUDIO;
if (s.startsWith( "STANDARD_MIDI"))
return STANDARD_MIDI;
if (s.startsWith( "MICROSOFT_RIFF"))
return MICROSOFT_RIFF;
if (s.startsWith( "BZIP"))
return BZIP;
if (s.startsWith( "IFF_DATA"))
return IFF_DATA;
if (s.startsWith( "NIFF_IMAGE"))
return NIFF_IMAGE;
if (s.startsWith( "PC_BITMAP"))
return PC_BITMAP;
if (s.startsWith( "PDF_DOCUMENT"))
return PDF_DOCUMENT;
if (s.startsWith( "POSTSCRIPT_DOCUMENT"))
return POSTSCRIPT_DOCUMENT;
if (s.startsWith( "SILICON_GRAPHICS_MOVIE"))
return SILICON_GRAPHICS_MOVIE;
if (s.startsWith( "APPLE_QUICKTIME_MOVIE"))
return APPLE_QUICKTIME_MOVIE;
if (s.startsWith( "ZIP_ARCHIVE"))
return ZIP_ARCHIVE;
if (s.startsWith( "UNIX_COMPRESS"))
return UNIX_COMPRESS;
if (s.startsWith( "GZIP"))
return GZIP;
if (s.startsWith( "HUFFMAN"))
return HUFFMAN;
if (s.startsWith( "PNG_IMAGE"))
return PNG_IMAGE;
if (s.startsWith( "JPEG"))
return JPEG;
if (s.startsWith( "JPG"))
return JPG;
if (s.startsWith( "Photo Shop...8 bits per pel"))
return PSHOP8;
if (s.startsWith( "Zip file...Wavelet encoded image sequence?"))
return ZIP;
else
return -1;
}
protected void add(int i, String s) {
hashMap.put(s, new Integer(i));
}
public static final int TYPENOTFOUND = 0;
public static final int UUENCODED = 1;
public static final int BTOAD = 2;
public static final int PBM = 3;
public static final int PGM = 4;
public static final int PPM = 5;
public static final int PBM_RAWBITS = 6;
public static final int PGM_RAWBITS = 7;
public static final int PPM_RAWBITS = 8;
public static final int MGR_BITMAP = 9;
public static final int GIF87a = 10;
public static final int GIF89a = 11;
public static final int IFF_ILBM = 12;
public static final int SUNRASTER = 13;
public static final int SGI_IMAGE = 14;
public static final int CMU_WINDOW_MANAGER_BITMAP = 15;
public static final int SUN = 16;
public static final int TIFF_BIG_ENDIAN = 17;
public static final int TIFF_LITTLE_ENDIAN = 18;
public static final int FLI = 19;
public static final int MPEG = 20;
public static final int SUN_NEXT_AUDIO = 21;
public static final int STANDARD_MIDI = 22;
public static final int MICROSOFT_RIFF = 23;
public static final int BZIP = 24;
public static final int IFF_DATA = 25;
public static final int NIFF_IMAGE = 26;
public static final int PC_BITMAP = 27;
public static final int PDF_DOCUMENT = 28;
public static final int POSTSCRIPT_DOCUMENT = 29;
public static final int SILICON_GRAPHICS_MOVIE = 30;
public static final int APPLE_QUICKTIME_MOVIE = 31;
public static final int ZIP_ARCHIVE = 32;
public static final int UNIX_COMPRESS = 33;
public static final int GZIP = 34;
public static final int HUFFMAN = 35;
public static final int PNG_IMAGE = 38;
public static final int JPEG = 39;
public static final int JPG = 40;
public static final int PSHOP8 = 41;
public static final int ZIP = 42;
}