package org.test4j.tools.commons;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.test4j.fortest.beans.Manager;
import org.test4j.module.Test4JException;
import org.test4j.testng.Test4J;
import org.testng.annotations.Test;
@Test(groups = { "test4j" })
public class JsonHelperTest extends Test4J {
private static String tempDir = System.getProperty("java.io.tmpdir");
@Test
public void toDat() {
String filename = tempDir + "/manager.dat";
JSONHelper.toDatFile(Manager.mock(), filename);
want.file(filename).isExists();
}
@Test(dependsOnMethods = { "toDat" })
public void fromDat() {
String filename = "file:" + tempDir + "/manager.dat";
want.file(filename).isExists();
Manager manager = JSONHelper.fromDatFile(Manager.class, filename);
want.object(manager).propertyEq("name", "Tony Tester");
}
@Test
public void fromDat_Classpath() {
String filename = "classpath:org/test4j/tools/commons/manager.dat";
Manager manager = JSONHelper.fromDatFile(Manager.class, filename);
want.object(manager).propertyEq("name", "Tony Tester").propertyEq("phoneNumber.number", "0571-88886666");
want.date(manager.getDate()).isYear(2013).isMonth("10").isHour(13);
}
@Test
public void toDat_List() {
String filename = tempDir + "/managers.dat";
List<?> list = Arrays.asList(Manager.mock(), Manager.mock());
JSONHelper.toDatFile(list, filename);
want.file(filename).isExists();
}
@Test(expectedExceptions = { Test4JException.class })
public void fromDat_List() {
String filename = "classpath:org/test4j/tools/commons/manager_classnotfound.dat";
List<?> managers = JSONHelper.fromDatFile(List.class, filename);
want.collection(managers).sizeEq(2).propertyEq("name", new String[] { "Tony Tester", "Tony Tester" });
}
@Test
public void toJSON() {
String filename = tempDir + "/manager.json";
// want.file(filename).unExists();
JSONHelper.toJsonFile(Manager.mock(), filename);
want.file(filename).isExists();
}
@Test(dependsOnMethods = { "toJSON" })
public void fromJSON() {
String filename = "file:" + tempDir + "/manager.json";
want.file(filename).isExists();
Manager manager = JSONHelper.fromJsonFile(Manager.class, filename);
want.object(manager).propertyEq("name", "Tony Tester");
}
@Test
public void fromJSON_Classpath() {
String filename = "classpath:org/test4j/tools/commons/manager.json";
Manager manager = JSONHelper.fromJsonFile(Manager.class, filename);
want.object(manager).propertyEq("name", "Tony Tester").propertyEq("phoneNumber.number", "0571-88886666");
want.date(manager.getDate()).isYear(2009).isMonth("08").isHour(16);
}
@Test
public void fromJSON_Classpath2() {
Manager manager = JSONHelper.fromJsonFile(Manager.class, JsonHelperTest.class, "manager.json");
want.object(manager).propertyEq("name", "Tony Tester").propertyEq("phoneNumber.number", "0571-88886666");
want.date(manager.getDate()).isYear(2009).isMonth("08").isHour(16);
}
@Test
public void toJSON_List() {
String filename = tempDir + "/managers.xml";
List<Manager> list = new ArrayList<Manager>();
list.add(Manager.mock());
list.add(Manager.mock());
JSONHelper.toJsonFile(list, filename);
want.file(filename).isExists();
}
@Test
public void fromJSON_List() {
String filename = "classpath:org/test4j/tools/commons/managers.json";
List<?> managers = JSONHelper.fromJsonFile(ArrayList.class, filename);
want.collection(managers).sizeEq(2).propertyEq("name", new String[] { "Tony Tester", "Tony Tester" });
}
@Test
public void fromJSON_List2() {
String filename = "classpath:org/test4j/tools/commons/managers2.json";
List<?> managers = JSONHelper.fromJsonFile(ArrayList.class, filename);
want.collection(managers).sizeEq(2).propertyEq("name", new String[] { "Tony Tester", "Tony Tester" });
}
@Test
public void getPojoToXml_Array() {
Manager[] managers = new Manager[2];
managers[0] = Manager.mock();
managers[1] = Manager.mock();
JSONHelper.toJsonFile(managers, tempDir + "/managers-array.xml");
}
@Test
public void fromJSON_Array() {
Manager[] managers = JSONHelper.fromJsonFile(Manager[].class,
"classpath:org/test4j/tools/commons/managers-array.json");
want.array(managers).sizeEq(2).propertyEq("name", new String[] { "Tony Tester", "Tony Tester" });
}
}