1 package org.netbeans.modules.xml.schema.model.impl.xdm; 2 3 import java.util.Iterator ; 4 import javax.swing.text.Document ; 5 import javax.swing.undo.UndoManager ; 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 ; 16 17 21 public class CutPasteTest extends TestCase { 22 23 public CutPasteTest(String testName) { 24 super(testName); 25 } 26 27 protected void setUp() throws Exception { 28 } 29 30 33 public void testCutPasteLocalElement() throws Exception { 34 SchemaModel model = Util.loadSchemaModel("resources/CutPasteTest_before.xsd"); 35 Document doc = AbstractDocumentModel.class.cast(model).getBaseDocument(); 36 SchemaImpl schema = (SchemaImpl) model.getSchema(); 37 Node 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 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 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 changedSeqNode = changedSeq.getPeer(); 59 60 assertTrue("testCutPasteByRemove.schema", schema == changedSchema); 62 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 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 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 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 100 public void testMultipleDnDAndUndo() throws Exception { 101 SchemaModel model = Util.loadSchemaModel("resources/PO_copypasteundoSequence.xsd"); 102 UndoManager um = new UndoManager (); 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 sd; 158 private SchemaModel model; 159 160 } 161 | Popular Tags |