KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > opensymphony > workflow > SaveDescriptorTestCase


1 /*
2  * Copyright (c) 2002-2003 by OpenSymphony
3  * All rights reserved.
4  */

5 package com.opensymphony.workflow;
6
7 import com.opensymphony.workflow.loader.DTDEntityResolver;
8 import com.opensymphony.workflow.loader.WorkflowDescriptor;
9
10 import org.custommonkey.xmlunit.Diff;
11 import org.custommonkey.xmlunit.ElementNameAndTextQualifier;
12 import org.custommonkey.xmlunit.XMLTestCase;
13
14 import org.w3c.dom.Document JavaDoc;
15
16 import org.xml.sax.InputSource JavaDoc;
17 import org.xml.sax.SAXException JavaDoc;
18
19 import java.io.*;
20
21 import java.net.URL JavaDoc;
22
23 import javax.xml.parsers.DocumentBuilder JavaDoc;
24 import javax.xml.parsers.DocumentBuilderFactory JavaDoc;
25 import javax.xml.parsers.ParserConfigurationException JavaDoc;
26
27
28 /**
29  * Test that when you save a descriptor, it is identical to the original.
30  * Identical means with the same xml syntax, not the exact same text wise.
31  *
32  * @author Hani Suleiman (hani@formicary.net)
33  * @author Eric Pugh (epugh@upstate.com)
34  * Date: May 5, 2003
35  * Time: 12:43:08 PM
36  */

37 public class SaveDescriptorTestCase extends XMLTestCase {
38     //~ Instance fields ////////////////////////////////////////////////////////
39

40     private DocumentBuilder JavaDoc documentBuilder;
41
42     //~ Constructors ///////////////////////////////////////////////////////////
43

44     public SaveDescriptorTestCase(String JavaDoc s) throws ParserConfigurationException JavaDoc {
45         super(s);
46         documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
47         documentBuilder.setEntityResolver(new DTDEntityResolver());
48     }
49
50     //~ Methods ////////////////////////////////////////////////////////////////
51

52     /**
53      *Test if a saved descriptor is identical to the original
54      */

55     public void testSave() throws Exception JavaDoc {
56         URL JavaDoc url = getClass().getResource("/samples/saved.xml");
57         Document JavaDoc inputDocument = documentBuilder.parse(url.toString());
58         WorkflowDescriptor descriptor = DescriptorLoader.getDescriptor(url.toString());
59         StringWriter out = new StringWriter();
60         PrintWriter writer = new PrintWriter(out);
61         writer.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
62         writer.println("<!DOCTYPE workflow PUBLIC \"-//OpenSymphony Group//DTD OSWorkflow 2.7//EN\" \"http://www.opensymphony.com/osworkflow/workflow_2_7.dtd\">");
63         descriptor.writeXML(new PrintWriter(out), 0);
64
65         PrintWriter blah = new PrintWriter(new FileWriter("foo.xml"));
66         descriptor.writeXML(blah, 0);
67         blah.flush();
68
69         Document JavaDoc outputDocument = getDocument(out.toString());
70
71         Diff diff = new Diff(inputDocument, outputDocument);
72         diff.overrideElementQualifier(new ElementNameAndTextQualifier());
73         assertTrue(diff.toString(), diff.similar());
74         assertXMLEqual("But they are equal when an ElementQualifier controls which test element is compared with each control element", diff, true);
75         assertTrue(diff.toString(), diff.similar());
76     }
77
78     private Document JavaDoc getDocument(String JavaDoc xml) throws IOException, SAXException JavaDoc {
79         InputSource JavaDoc source = new InputSource JavaDoc(new StringReader(xml));
80
81         return documentBuilder.parse(source);
82     }
83 }
84
Popular Tags