package main.coding_170327.loader;
import junit.framework.TestCase;
import org.junit.Assert;
import org.junit.Test;
/**
* Created by peter on 2017/4/20.
*/
public class ClassFileLoaderTest extends TestCase {
public static final String FULL_QUALIFIED_CLASS_NAME = "main/coding_170327/Employee";
static String path1 = "E:\\IDEASpace\\coding2017\\group11\\729245768\\DataStructure\\tests";
static String path2 = "C:\temp";
@Test
public void testClassPath(){
ClassFileLoader loader = new ClassFileLoader();
loader.addClassPath(path1);
loader.addClassPath(path2);
Assert.assertEquals(path1+";"+path2,loader.getClassPath());
}
@Test
public void testClassFileLength(){
ClassFileLoader loader = new ClassFileLoader();
loader.addClassPath(path1);
String className = "main.coding_170327.Employee";
byte[] codes = loader.readBinaryCodes(className);
Assert.assertEquals(891,codes.length);
}
@Test
public void testMagicNumber(){
ClassFileLoader loader = new ClassFileLoader();
loader.addClassPath(path1);
String className = "main.coding_170327.Employee";
byte[] codes = loader.readBinaryCodes(className);
byte[] magicNumbers = new byte[]{codes[0],codes[1],codes[2],codes[3]};
String magic = byteToHexString(magicNumbers);
Assert.assertEquals("cafebabe",magic);
}
private String byteToHexString(byte[] codes ){
StringBuffer buffer = new StringBuffer();
for(int i=0;i<codes.length;i++){
byte b = codes[i];
int value = b & 0xFF;
String strHex = Integer.toHexString(value);
if(strHex.length()< 2){
strHex = "0" + strHex;
}
buffer.append(strHex);
}
return buffer.toString();
}
}