package org.json.junit;
import java.util.*;
import static org.junit.Assert.*;
import org.json.*;
import org.junit.Test;
/**
* Tests for JSON-Java XML.java
* Note: noSpace() will be tested by JSONMLTest
*/
public class XMLTest {
@Test(expected=NullPointerException.class)
public void shouldHandleNullXML() {
String xmlStr = null;
JSONObject jsonObject = XML.toJSONObject(xmlStr);
assertTrue("jsonObject should be empty", jsonObject.length() == 0);
}
@Test(expected=NullPointerException.class)
public void shouldHandleNullJSONXML() {
JSONObject jsonObject= null;
String xmlStr = XML.toString(jsonObject);
}
@Test(expected=JSONException.class)
public void shouldHandleInvalidBangInTag() {
String xmlStr =
"\n"+
"\n"+
" \n"+
" Joe Tester\n"+
" abc street\n"+
" \n"+
"";
JSONObject jsonObject = XML.toJSONObject(xmlStr);
assertTrue(jsonObject == null);
}
@Test(expected=JSONException.class)
public void shouldHandleInvalidSlashInTag() {
String xmlStr =
"\n"+
"\n"+
" \n"+
" \n"+
" abc street\n"+
" \n"+
"";
JSONObject jsonObject = XML.toJSONObject(xmlStr);
assertTrue(jsonObject == null);
}
@Test
public void shouldHandleEmptyXML() {
String xmlStr = "";
JSONObject jsonObject = XML.toJSONObject(xmlStr);
assertTrue("jsonObject should be empty", jsonObject.length() == 0);
}
@Test
public void shouldHandleEmptyJSONXML() {
JSONObject jsonObject= new JSONObject();
String xmlStr = XML.toString(jsonObject);
}
@Test
public void shouldHandleSimpleXML() {
String xmlStr =
"\n"+
"\n"+
" \n"+
" Joe Tester\n"+
" [CDATA[Baker street 5]\n"+
" \n"+
" \n"+
"";
String expectedStr =
"{\"addresses\":{\"address\":{\"street\":\"[CDATA[Baker street 5]\","+
"\"name\":\"Joe Tester\",\"NothingHere\":\"\"},\"xsi:noNamespaceSchemaLocation\":"+
"\"test.xsd\",\"xmlns:xsi\":\"http://www.w3.org/2001/"+
"XMLSchema-instance\"}}";
JSONObject expectedJsonObject = new JSONObject(expectedStr);
JSONObject jsonObject = XML.toJSONObject(xmlStr);
Util.compareActualVsExpectedJsonObjects(jsonObject,expectedJsonObject);
}
@Test
public void shouldHandleCommentsInXML() {
String xmlStr =
"\n"+
"\n"+
"\n"+
" \n"+
" comment ]]>\n"+
" Joe Tester\n"+
" \n"+
" Baker street 5\n"+
" \n"+
"";
JSONObject jsonObject = XML.toJSONObject(xmlStr);
}
@Test
public void shouldHandleToString() {
String xmlStr =
"\n"+
"\n"+
" \n"+
" [CDATA[Joe & T > e < s " t ' er]]\n"+
" Baker street 5\n"+
" \n"+
"";
String expectedStr =
"{\"addresses\":{\"address\":{\"street\":\"Baker street 5\","+
"\"name\":\"[CDATA[Joe & T > e < s \\\" t \\\' er]]\"},\"xsi:noNamespaceSchemaLocation\":"+
"\"test.xsd\",\"xmlns:xsi\":\"http://www.w3.org/2001/"+
"XMLSchema-instance\"}}";
JSONObject jsonObject = XML.toJSONObject(xmlStr);
String xmlToStr = XML.toString(jsonObject);
JSONObject finalJsonObject = XML.toJSONObject(xmlToStr);
JSONObject expectedJsonObject = new JSONObject(expectedStr);
Util.compareActualVsExpectedJsonObjects(jsonObject,expectedJsonObject);
Util.compareActualVsExpectedJsonObjects(finalJsonObject,expectedJsonObject);
}
}