package org.geogebra.io;
import java.io.StringReader;
import java.net.URL;
import java.util.Locale;
import javax.xml.XMLConstants;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import org.geogebra.desktop.main.AppDNoGui;
import org.geogebra.desktop.main.LocalizationD;
import org.junit.Assert;
import org.junit.Test;
import org.xml.sax.SAXParseException;
public class XmlTest {
@Test
public void test() {
AppDNoGui app = new AppDNoGui(new LocalizationD(3), true);
app.setLanguage(Locale.US);
testCurrentXML(app);
}
public static void testCurrentXML(AppDNoGui app) {
String xml = "";
try{
URL schemaFile = new URL("http://static.geogebra.org/ggb.xsd");
xml = app.getXML();
Source xmlFile = new StreamSource(new StringReader(xml));
SchemaFactory schemaFactory = SchemaFactory
.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(schemaFile);
Validator validator = schema.newValidator();
validator.validate(xmlFile);
} catch (SAXParseException se) {
int l = se.getLineNumber();
for (int i = l - 2; i < l + 3; i++) {
System.out.println(xml.split("\\n")[i]);
}
Assert.assertNull(se.getLocalizedMessage(), se);
} catch (Exception e) {
Assert.assertNull(e.getLocalizedMessage(), e);
}
}
}