xmltest.java.svn-base

来自「j2me mobile application for upload file 」· SVN-BASE 代码 · 共 440 行

SVN-BASE
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 + -
显示快捷键?