KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > xml > schema > model > impl > xdm > CutPasteTest


1 package org.netbeans.modules.xml.schema.model.impl.xdm;
2
3 import java.util.Iterator JavaDoc;
4 import javax.swing.text.Document JavaDoc;
5 import javax.swing.undo.UndoManager JavaDoc;
6 import junit.framework.*;
7 import org.netbeans.modules.xml.schema.model.*;
8 import org.netbeans.modules.xml.schema.model.impl.GlobalElementImpl;
9 import org.netbeans.modules.xml.schema.model.impl.LocalComplexTypeImpl;
10 import org.netbeans.modules.xml.schema.model.impl.LocalElementImpl;
11 import org.netbeans.modules.xml.schema.model.impl.SchemaImpl;
12 import org.netbeans.modules.xml.schema.model.impl.SequenceImpl;
13 import org.netbeans.modules.xml.xam.dom.AbstractDocumentModel;
14 import org.netbeans.modules.xml.xdm.nodes.NodeImpl;
15 import org.w3c.dom.Node JavaDoc;
16
17 /**
18  *
19  * @author Ayub Khan
20  */

21 public class CutPasteTest extends TestCase {
22     
23     public CutPasteTest(String JavaDoc testName) {
24         super(testName);
25     }
26     
27     protected void setUp() throws Exception JavaDoc {
28     }
29     
30     /**
31      * Test of cut/paste operation
32      */

33     public void testCutPasteLocalElement() throws Exception JavaDoc {
34         SchemaModel model = Util.loadSchemaModel("resources/CutPasteTest_before.xsd");
35         Document JavaDoc doc = AbstractDocumentModel.class.cast(model).getBaseDocument();
36         SchemaImpl schema = (SchemaImpl) model.getSchema();
37         Node JavaDoc schemaNode = schema.getPeer();
38         GlobalElementImpl gei = (GlobalElementImpl) schema.getElements().iterator().next();
39         LocalComplexTypeImpl lcti = (LocalComplexTypeImpl) gei.getInlineType();
40         SequenceImpl seq = (SequenceImpl) lcti.getDefinition();
41         Node JavaDoc seqNode = seq.getPeer();
42         LocalElementImpl leti = (LocalElementImpl) seq.getContent().get(1);
43         
44         assertEquals("testCutPasteByDocSync.schema.node", 2, seq.getChildren().size());
45         assertEquals("testCutPasteByDocSync.schema.node", 5, seqNode.getChildNodes().getLength());
46         
47         model.startTransaction();
48         LocalElementImpl clonedLeti = (LocalElementImpl) leti.copy(seq);
49         assertTrue("testCutPasteByDocSync.localElement", clonedLeti!=null);
50         seq.removeContent(leti);
51         model.endTransaction();
52         
53         SchemaImpl changedSchema = (SchemaImpl) model.getSchema();
54         Node JavaDoc changedSchemaNode = changedSchema.getPeer();
55         GlobalElementImpl changedGei = (GlobalElementImpl) changedSchema.getElements().iterator().next();
56         LocalComplexTypeImpl changedLcti = (LocalComplexTypeImpl) changedGei.getInlineType();
57         SequenceImpl changedSeq = (SequenceImpl) changedLcti.getDefinition();
58         Node JavaDoc changedSeqNode = changedSeq.getPeer();
59         
60         //make sure elements and nodes on the path before sequence is same
61
assertTrue("testCutPasteByRemove.schema", schema == changedSchema);
62         //NOTE: we are now actively update nodes on path to root component.
63
//assertTrue("testCutPasteByRemove.schema.node", schemaNode == changedSchemaNode);
64
assertTrue("testCutPasteByRemove.schema.node", seqNode != changedSeqNode);
65         
66         assertEquals("testCutPasteByDocSync.schema.node", 1, seq.getChildren().size());
67         assertEquals("testCutPasteByDocSync.schema.node", 3, seq.getPeer().getChildNodes().getLength());
68         assertEquals("testCutPasteByDocSync.schema.node", 1, changedSeq.getChildren().size());
69         assertEquals("testCutPasteByDocSync.schema.node", 3, changedSeqNode.getChildNodes().getLength());
70         
71         model.startTransaction();
72         seq.addContent(clonedLeti, 1);
73         model.endTransaction();
74         
75         SchemaImpl changedSchema1 = (SchemaImpl) model.getSchema();
76         Node JavaDoc changedSchemaNode1 = changedSchema1.getPeer();
77         GlobalElementImpl changedGei1 = (GlobalElementImpl) changedSchema1.getElements().iterator().next();
78         LocalComplexTypeImpl changedLcti1 = (LocalComplexTypeImpl) changedGei1.getInlineType();
79         SequenceImpl changedSeq1 = (SequenceImpl) changedLcti1.getDefinition();
80         Node JavaDoc changedSeqNode1 = changedSeq1.getPeer();
81         
82         assertEquals("testCutPasteByDocSync.schema.node", 2, seq.getChildren().size());
83         assertEquals("testCutPasteByDocSync.schema.node", 5, seq.getPeer().getChildNodes().getLength());
84         assertEquals("testCutPasteByDocSync.schema.node", 2, changedSeq1.getChildren().size());
85         assertEquals("testCutPasteByDocSync.schema.node", 5, changedSeqNode1.getChildNodes().getLength());
86         assertTrue("testCutPasteByDocSync.localElement.isSame", leti.getName().equals(clonedLeti.getName()));
87         assertTrue("testCutPasteByDocSync.localElement.isIdNotSame",
88             ((NodeImpl)leti.getPeer()).getId()!=((NodeImpl)clonedLeti.getPeer()).getId());
89         Iterator JavaDoc it=changedSeq1.getChildren().iterator();
90         it.next();
91         LocalElementImpl le2=(LocalElementImpl) it.next();
92         assertTrue("testCutPasteByDocSync.localElement.isSame", leti.getName().equals(le2.getName()));
93         assertTrue("testCutPasteByDocSync.localElement.isIdNotSame",
94             ((NodeImpl)leti.getPeer()).getId()!=((NodeImpl)le2.getPeer()).getId());
95     }
96     
97     /**
98      * testMultipleDnDAndUndo
99      */

100     public void testMultipleDnDAndUndo() throws Exception JavaDoc {
101         SchemaModel model = Util.loadSchemaModel("resources/PO_copypasteundoSequence.xsd");
102         UndoManager JavaDoc um = new UndoManager JavaDoc();
103         model.addUndoableEditListener(um);
104         
105         Sequence seq = (Sequence)Util.findComponent(
106                 model.getSchema(),
107                 "/schema/complexType[@name='PurchaseOrderType']/sequence");
108         assert(seq != null);
109         LocalElement shipTo = (LocalElement)Util.findComponent(
110                 model.getSchema(),
111                 "/schema/complexType[@name='PurchaseOrderType']/" +
112                 "sequence/element[@name='shipTo']");
113         assert(shipTo != null);
114         ElementReference comment = (ElementReference)Util.findComponent(
115                 model.getSchema(),
116                 "/schema/complexType[@name='PurchaseOrderType']/" +
117                 "sequence/element[@ref='comment']");
118         assert(comment != null);
119         
120         assertEquals(4, seq.getChildren().size());
121         LocalElement copy_shipTo = (LocalElement) shipTo.copy(seq);
122         model.startTransaction();
123         seq.removeContent(shipTo);
124         seq.addContent(copy_shipTo, 3);
125         model.endTransaction();
126         assertEquals(4, seq.getChildren().size());
127         
128         um.undo();
129         assertEquals(4, seq.getChildren().size());
130         
131         seq = (Sequence)Util.findComponent(
132                 model.getSchema(),
133                 "/schema/complexType[@name='PurchaseOrderType']/sequence");
134         assert(seq != null);
135         shipTo = (LocalElement)Util.findComponent(
136                 model.getSchema(),
137                 "/schema/complexType[@name='PurchaseOrderType']/" +
138                 "sequence/element[@name='shipTo']");
139         assert(shipTo != null);
140         comment = (ElementReference)Util.findComponent(
141                 model.getSchema(),
142                 "/schema/complexType[@name='PurchaseOrderType']/" +
143                 "sequence/element[@ref='comment']");
144         assert(comment != null);
145         
146         ElementReference copy_comment = (ElementReference) comment.copy(seq);
147         model.startTransaction();
148         seq.removeContent(comment);
149         seq.addContent(copy_comment, 1);
150         model.endTransaction();
151         assertEquals(4, seq.getChildren().size());
152         
153         um.undo();
154         assertEquals(4, seq.getChildren().size());
155     }
156         
157     private Document JavaDoc sd;
158     private SchemaModel model;
159     
160 }
161
Popular Tags