package org.jcodec.common.tools;
import org.junit.Assert;
import org.junit.Test;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class ToJSONTest {
static class Cl1 {
private List<Cl2> arr;
public Cl1() {
this.arr = new ArrayList<Cl2>();
}
public void addCl2(Cl2 inst) {
arr.add(inst);
}
public List<Cl2> getArr() {
return arr;
}
}
static class Cl2 {
private Cl1 owner;
public Cl2(Cl1 owner) {
this.owner = owner;
}
public Cl1 getOwner() {
return owner;
}
}
@Test(timeout = 1000)
public void testCycle() {
Cl1 cl1 = new Cl1();
cl1.addCl2(new Cl2(cl1));
cl1.addCl2(new Cl2(cl1));
cl1.addCl2(new Cl2(cl1));
cl1.addCl2(new Cl2(cl1));
cl1.addCl2(new Cl2(cl1));
Assert.assertEquals("{\"arr\":[" + "{\"owner\":null,},"
+ "{\"owner\":null,}," + "{\"owner\":null,},"
+ "{\"owner\":null,}," + "{\"owner\":null,}" + "],}",
ToJSON.toJSON(cl1));
}
@Test
public void testMap() {
//@formatter:off
Map<String, String[]> europe = new LinkedHashMap<String, String[]>();
europe.put("ukraine", new String[] {"Kyiv", "Lviv", "Odessa", "Kharkiv"});
europe.put("russia", new String[] {"Moscow", "St. Petersburg", "Tver", "Novosibirsk"});
Map<String, String[]> asia = new LinkedHashMap<String, String[]>();
asia.put("china", new String[] {"Beijing", "Shanghai", "Chongqing", "Tianjin"});
asia.put("japan", new String[] {"Tokyo", "Kyoto", "Osaka", "Hakone"});
asia.put("korea", new String[] {"Seoul", "Busan", "Daegu", "Daejon"});
Map<String, Map<String, String[]>> map = new LinkedHashMap<String, Map<String, String[]>>();
map.put("europe", europe);
map.put("asia", asia);
//@formatter:on
Assert.assertEquals("{" + "\"europe\":" + "{" + "\"ukraine\":[\"Kyiv\",\"Lviv\",\"Odessa\",\"Kharkiv\"],"
+ "\"russia\":[\"Moscow\",\"St. Petersburg\",\"Tver\",\"Novosibirsk\"]" + "}," + "\"asia\":" + "{"
+ "\"china\":[\"Beijing\",\"Shanghai\",\"Chongqing\",\"Tianjin\"],"
+ "\"japan\":[\"Tokyo\",\"Kyoto\",\"Osaka\",\"Hakone\"],"
+ "\"korea\":[\"Seoul\",\"Busan\",\"Daegu\",\"Daejon\"]" + "}" + "}", ToJSON.toJSON(map));
}
}