package com.ikokoon.toolkit;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import org.objectweb.asm.Type;
import com.ikokoon.serenity.ATest;
import com.ikokoon.target.Target;
/**
* This is the test for the utility class.
*
* @author Michael Couck
* @since 12.07.09
* @version 01.00
*/
public class ToolkitTest extends ATest {
@Test
public void slashToDot() {
String name = "com/ikokoon/target/Target";
name = Toolkit.slashToDot(name);
assertEquals(Target.class.getName(), name);
}
@Test
public void dotToSlash() {
String name = Target.class.getName();
name = Toolkit.dotToSlash(name);
assertEquals("com/ikokoon/target/Target", name);
}
@Test
public void classNameToPackageName() {
Type[] types = Type.getArgumentTypes("(Ljava/lang/Integer;Ljava/math/BigDecimal;)Ljava/lang/String;");
for (Type argumentType : types) {
logger.debug("Type : " + argumentType.getClassName() + ", " + argumentType.getDescriptor() + ", " + argumentType.getInternalName() + ", "
+ argumentType.getSize() + ", " + argumentType.getSort());
}
Type returnType = Type.getReturnType("(Ljava/lang/Integer;Ljava/math/BigDecimal;)Ljava/lang/String;");
logger.debug("Type : " + returnType.getClassName() + ", " + returnType.getDescriptor() + ", " + returnType.getInternalName() + ", "
+ returnType.getSize() + ", " + returnType.getSort());
String name = Toolkit.classNameToPackageName(Toolkit.dotToSlash(Target.class.getName()));
assertEquals("com.ikokoon.target", name);
}
@Test
public void formatString() {
int precision = 3;
String string = Toolkit.format("123456789,123456789", precision);
assertEquals(precision, string.substring(string.indexOf(',') + 1, string.length()).length());
string = Toolkit.format("123456789.123456789", precision);
assertEquals(precision, string.substring(string.indexOf('.') + 1, string.length()).length());
}
@Test
public void formatDouble() {
int precision = 3;
double d = 123456.8755135d;
d = Toolkit.format(d, precision);
assertTrue(123456.875 == d);
assertFalse(123456.8755 == d);
}
@Test
public void hash() {
String string = ToolkitTest.class.getName();
Long stringHash = Toolkit.hash(string);
List<Object> objects = new ArrayList<Object>();
objects.add(string);
Long arrayHash = Toolkit.hash(objects.toArray());
assertEquals(stringHash, arrayHash);
}
@SuppressWarnings("unchecked")
@Test
public void serializeAndDeserializeToAndFrom64() {
Target<Object, Object> target = new Target<Object, Object>(Target.class);
String string = Toolkit.serializeToBase64(target);
assertNotNull(string);
target = (Target<Object, Object>) Toolkit.deserializeFromBase64(string);
assertNotNull(target);
}
@Test
public void deleteFile() throws Exception {
File folder = createFolderAndOneFile("target/folder", "file.txt");
Toolkit.deleteFile(folder, 3);
logger.debug("Deleted folder and file : " + folder.exists());
}
private File createFolderAndOneFile(String folderName, String fileName) throws Exception {
File folder = new File(".", folderName);
folder.mkdir();
assertTrue(folder.exists());
File file = new File(folder, fileName);
file.createNewFile();
assertTrue(file.exists());
return folder;
}
@Test
public void copyFiles() throws Exception {
File source = createFolderAndOneFile("target/folder", "serenity.odb");
File destination = new File("D:\\Eclipse\\workspace\\serenity\\work\\jobs\\Discovery\\builds\\2010-02-26_16-12-15\\serenity");
if (destination.exists()) {
Toolkit.deleteFile(destination, 3);
}
logger.debug("Deleted destination : " + destination.exists());
Toolkit.copyFiles(source, destination);
logger.debug("Copied file exists : " + new File(destination, "file.txt").exists());
}
}