xmltest.java
来自「j2me mobile application for upload file 」· Java 代码 · 共 440 行
JAVA
440 行
package org.celllife.clforms.xml;
import j2meunit.framework.Test;
import j2meunit.framework.TestCase;
import j2meunit.framework.TestMethod;
import j2meunit.framework.TestSuite;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.Vector;
import javax.microedition.io.Connector;
import javax.microedition.io.InputConnection;
import javax.microedition.io.file.FileConnection;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.TextBox;
import javax.microedition.lcdui.TextField;
import org.celllife.clforms.Constants;
import org.celllife.clforms.api.XFElement;
import org.celllife.clforms.api.XForm;
import org.kxml2.kdom.Element;
public class XMLtest extends TestCase {
String xmlStr = "<html xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:xf=\"http://www.w3.org/2002/xforms\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n"
+ " <head>\r\n"
+ " <title>Hello World in XForms</title>\r\n"
+ " <xf:model>\r\n"
+ " <xf:instance xmlns=\"\">\r\n"
+ " <data>\r\n"
+ " <PersonGivenName>\r\n"
+ " <FirstName></FirstName>\r\n"
+ " <SecondName></SecondName>\r\n"
+ " </PersonGivenName>\r\n"
+ " <DateOfBirth></DateOfBirth>\r\n"
+ " <isSexy></isSexy>\r\n"
+ " </data>\r\n"
+ " </xf:instance>\r\n"
+ " <xf:bind id=\"firstName\" nodeset=\"/data/PersonGivenName/FirstName\" type=\"xsd:string\"/>\r\n"
+ " <xf:bind id=\"dob\" nodeset=\"/data/DateOfBirth\" type=\"xsd:date\"/>\r\n"
+ " <xf:bind id=\"sexy\" nodeset=\"/data/isSexy\" type=\"xsd:boolean\"/>\r\n"
+ " </xf:model>\r\n"
+ " </head>\r\n"
+ " <body>\r\n"
+ " <p>Type in your first name in the input box. <br/>\r\n"
+ " If you are running XForms, the output should be displayed in the output area.</p> \r\n"
+ " <xf:input bind=\"firstName\" incremental=\"true\">\r\n"
+ " <xf:label>Please enter your first name: </xf:label>\r\n"
+ " </xf:input>\r\n"
+ " <xf:input bind=\"dob\" incremental=\"true\">\r\n"
+ " <xf:label>Please enter DOB:</xf:label>\r\n"
+ " </xf:input>\r\n"
+ " <xf:input bind=\"sexy\" incremental=\"true\">\r\n"
+ " <xf:label>Are you sexy? </xf:label>\r\n"
+ " </xf:input>\r\n"
+ " <xf:select1 ref=\"/data/PersonGivenName/SecondName\" selection=\"closed\" appearance=\"full\" > \r\n"
+ " <xf:label>select1 label</xf:label> \r\n"
+ " <xf:hint>select1 hint</xf:hint> <xf:item>\r\n"
+ " <xf:label>Red</xf:label>\r\n"
+ " <xf:value>red</xf:value> \r\n"
+ " </xf:item>\r\n"
+ " <xf:item>\r\n"
+ " <xf:label>Orange</xf:label>\r\n"
+ " <xf:value>orange</xf:value>\r\n"
+ " </xf:item>\r\n"
+ " <xf:item>\r\n"
+ " <xf:label>Yellow</xf:label>\r\n"
+ " <xf:value>yellow</xf:value>\r\n"
+ " </xf:item>\r\n"
+ " <xf:item>\r\n"
+ " <xf:label>Green</xf:label>\r\n"
+ " <xf:value>green</xf:value>\r\n"
+ " </xf:item>\r\n"
+ " <xf:item>\r\n"
+ " <xf:label>Blue</xf:label>\r\n"
+ " <xf:value>blue</xf:value>\r\n"
+ " </xf:item>\r\n"
+ " </xf:select1> <br />\r\n"
+ "<xf:select ref=\"/data/PersonGivenName/SecondName\" selection=\"closed\" appearance=\"full\" > \r\n"
+ " <xf:label>select label</xf:label> \r\n"
+ " <xf:hint>select hint</xf:hint>\r\n"
+ " <xf:item>\r\n"
+ " <xf:label>one</xf:label>\r\n"
+ " <xf:value>1</xf:value> \r\n"
+ " </xf:item>\r\n"
+ " <xf:item>\r\n"
+ " <xf:label>two</xf:label>\r\n"
+ " <xf:value>2</xf:value>\r\n"
+ " </xf:item>\r\n"
+ " <xf:item>\r\n"
+ " <xf:label>three</xf:label>\r\n"
+ " <xf:value>3</xf:value>\r\n"
+ " </xf:item>\r\n"
+ " <xf:item>\r\n"
+ " <xf:label>four</xf:label>\r\n"
+ " <xf:value>4</xf:value>\r\n"
+ " </xf:item>\r\n"
+ " </xf:select> <xf:output value=\"concat(\'Hello \', PersonGivenName , \'. We hope you like XForms!\')\">\r\n"
+ " <xf:label>Ouput: </xf:label>\r\n"
+ " </xf:output>\r\n" + " </body>\r\n" + "</html>\r\n";
public XMLtest(String arg0, TestMethod arg1) {
super(arg0, arg1);
}
public XMLtest() {
super();
}
public XMLtest(String arg0) {
super(arg0);
}
public void testParseBasic() {
ByteArrayInputStream bais = new ByteArrayInputStream(xmlStr.getBytes());
try {
InputStreamReader isr = new InputStreamReader(bais, "UTF-8");
XForm xform = XMLUtil.parseForm(isr);
assertTrue("wrong number of elements in form", xform
.getElementCount() == 5);
XFElement el = xform.getElement(0);
assertNotNull("null element", el);
assertTrue("incorrect binding", el.getXpathBinding()
.equalsIgnoreCase("/data/PersonGivenName/FirstName"));
assertTrue("incorrect label", el.getLabel().equalsIgnoreCase(
"Please enter your first name:"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void testParseModel() {
ByteArrayInputStream bais = new ByteArrayInputStream(xmlStr.getBytes());
InputStreamReader isr;
try {
isr = new InputStreamReader(bais, "UTF-8");
XForm xform = XMLUtil.parseForm(isr);
Element root = xform.getXmlModel().getRootElement();
assertTrue("incorrect root name in model", root.getName().equals(
"data"));
Element name = root.getElement(null, "PersonGivenName");
assertNotNull("null element in model: PersonGivenName", name);
Element secondName = name.getElement(null, "SecondName");
assertNotNull("null element in model: SecondName", secondName);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// try {
// System.out.println(xmlStr);
// KXmlSerializer serializer = new KXmlSerializer();
// serializer.setOutput(System.out, null);
// xform.getXmlModel().write(serializer);
// serializer.flush();
// } catch (IOException e) {
// throw new RuntimeException("error writing model");
// }
}
public void testParseSelect1() {
ByteArrayInputStream bais = new ByteArrayInputStream(xmlStr.getBytes());
InputStreamReader isr;
try {
isr = new InputStreamReader(bais, "UTF-8");
XForm xform = XMLUtil.parseForm(isr);
Vector selects = xform.getElementsByType(Constants.SELECT1);
assertTrue("wrong number of selects1", selects.size() == 1);
XFElement select = (XFElement) selects.elementAt(0);
assertTrue("wrong label for select1", select.getLabel().equals(
"select1 label"));
assertTrue("wrong hint for select1", select.getHintText().equals(
"select1 hint"));
assertTrue("wrong number of items in select1", select.getSelect()
.size() == 5);
assertTrue("select1 missing option \'blue\'", select.getSelect()
.containsKey("Blue"));
String val = (String) select.getSelect().get("Blue");
assertTrue("select1 missing value \'blue\'", val.equals("blue"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void testParseSelect() {
ByteArrayInputStream bais = new ByteArrayInputStream(xmlStr.getBytes());
InputStreamReader isr;
try {
isr = new InputStreamReader(bais, "UTF-8");
XForm xform = XMLUtil.parseForm(isr);
Vector selects = xform.getElementsByType(Constants.SELECT);
assertTrue("wrong number of selects", selects.size() == 1);
XFElement select = (XFElement) selects.elementAt(0);
assertTrue("wrong label in select", select.getLabel().equals(
"select label"));
assertTrue("wrong hint in select", select.getHintText().equals(
"select hint"));
assertTrue("wrong number of select options", select.getSelect()
.size() == 4);
assertTrue("missing select option \'four\'", select.getSelect()
.containsKey("four"));
String val = (String) select.getSelect().get("four");
assertTrue("missing select value \'4\'", val.equals("4"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void testDataType() {
ByteArrayInputStream bais = new ByteArrayInputStream(xmlStr.getBytes());
InputStreamReader isr;
try {
isr = new InputStreamReader(bais, "UTF-8");
XForm xform = XMLUtil.parseForm(isr);
Vector elements = xform.getElementsByType(Constants.STRING);
assertTrue("wrong number of string elements", elements.size() == 1);
elements = xform.getElementsByType(Constants.DATE);
assertTrue("wrong number of date elements", elements.size() == 1);
elements = xform.getElementsByType(Constants.SELECT);
assertTrue("wrong number of select elements", elements.size() == 1);
elements = xform.getElementsByType(Constants.SELECT1);
assertTrue("wrong number of select1 elements", elements.size() == 1);
elements = xform.getElementsByType(Constants.BOOLEAN);
assertTrue("wrong number of boolean elements", elements.size() == 1);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String tempRead(String file){
String result=null;
try {
FileConnection fc =
(FileConnection)Connector.open(file);
if (!fc.exists()) {
throw new IOException("File does not exists");
}
InputStream fis = fc.openInputStream();
byte[] b = new byte[1024];
int length = fis.read(b, 0, 1024);
fis.close();
fc.close();
if (length > 0) {
result = new String(b, 0, length);
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* tests method for writing XML model to file
*
* relies on test.xhtml for imput
*/
public void testReader() {
String expectedResult = xmlStr;
String url ="file:///root1/test.xhtml";
//**************
//String tempFile = tempRead(url);
//**************
InputStreamReader isr1 = null;
try {
// read input file
isr1 = XMLUtil.getReader(url);
}catch (Exception e){
e.printStackTrace();
}
int chr = 0;
StringBuffer sb = new StringBuffer();
//int i = 0;
try {
//Read until the end of the stream
while ((chr = isr1.read()) != -1){
sb.append((char) chr);
//System.out.println(i+": "+chr+ " "+ (char)chr);
//i++;
}
}catch (IOException e){
e.printStackTrace();
}
String file2 = sb.toString();
/*System.out.println("TEMPIS: " );// clear output buffer
System.out.println("\"" + file2+file2.length()+"\"");
System.out.println(expectedResult+expectedResult.length());*/
assertTrue(file2.equals(expectedResult));
}
/**
* tests method for writing XML model to file
*
* relies on test.xhtml for imput
*/
public void testWriter() {
String expectedResult =
"<?xml version=\'1.0\' ?><data>\n" +
" <PersonGivenName>\n" +
" <FirstName></FirstName>\n" +
" <SecondName></SecondName>\n" +
" </PersonGivenName>\n" +
" <DateOfBirth></DateOfBirth>\n" +
" <isSexy></isSexy>\n" +
" </data>";
String url ="file:///root1/test.xhtml";
String url2= "file:///root1/output.txt";
XForm xf = null;
try {
// read input file
InputStreamReader isr1 = XMLUtil.getReader(url);
// parse to model
xf = XMLUtil.parseForm(isr1);
if (xf.getXmlModel() == null){
System.out.println("hey its null");
}else
System.out.println("hey its NOT null");
isr1.close();
// write model to file
XMLUtil.writeXMLToFile(url2,xf.getXmlModel());
}catch (Exception e){
e.printStackTrace();
}
// read model file contents
InputStreamReader isr2 = XMLUtil.getReader(url2);
int chr = 0;
StringBuffer sb = new StringBuffer();
//int i = 0;
try {
//Read until the end of the stream
while ((chr = isr2.read()) != -1){
sb.append((char) chr);
//System.out.println(i+": "+chr+ " "+ (char)chr);
//i++;
}
isr2.close();
}catch (IOException e){
e.printStackTrace();
}
String file2 = sb.toString();
System.out.println(file2+file2.length());
System.out.println(expectedResult+expectedResult.length());
assertTrue(file2.equals(expectedResult));
}
// suite method that returns all the tests to be run
// Here it returns only one test – testAlwaysFails
public Test suite() {
TestSuite suite = new TestSuite();
suite.addTest(new XMLtest("XML test", new TestMethod() {
public void run(TestCase tc) {
((XMLtest) tc).testParseBasic();
}
}));
suite.addTest(new XMLtest("testModel", new TestMethod() {
public void run(TestCase tc) {
((XMLtest) tc).testParseModel();
}
}));
suite.addTest(new XMLtest("testSelect", new TestMethod() {
public void run(TestCase tc) {
((XMLtest) tc).testParseSelect();
}
}));
suite.addTest(new XMLtest("testSelect1", new TestMethod() {
public void run(TestCase tc) {
((XMLtest) tc).testParseSelect1();
}
}));
suite.addTest(new XMLtest("testDataType", new TestMethod() {
public void run(TestCase tc) {
((XMLtest) tc).testDataType();
}
}));
suite.addTest(new XMLtest("testReader", new TestMethod() {
public void run(TestCase tc) {
((XMLtest) tc).testReader();
}
}));
suite.addTest(new XMLtest("testWriter", new TestMethod() {
public void run(TestCase tc) {
((XMLtest) tc).testWriter();
}
}));
return suite;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?