1 package org.netbeans.modules.xml.schema.model.impl.xdm; 2 3 import java.io.BufferedReader ; 4 import java.io.IOException ; 5 import java.io.InputStreamReader ; 6 import java.net.URL ; 7 import java.util.Iterator ; 8 import javax.swing.text.Document ; 9 import junit.framework.*; 10 import org.netbeans.modules.xml.schema.model.*; 11 import org.netbeans.modules.xml.schema.model.impl.GlobalElementImpl; 12 import org.netbeans.modules.xml.schema.model.impl.LocalComplexTypeImpl; 13 import org.netbeans.modules.xml.schema.model.impl.LocalElementImpl; 14 import org.netbeans.modules.xml.schema.model.impl.SchemaImpl; 15 import org.netbeans.modules.xml.schema.model.impl.SequenceImpl; 16 import org.netbeans.modules.xml.xdm.XDMModel; 17 import org.netbeans.modules.xml.xdm.nodes.NodeImpl; 18 import org.w3c.dom.Element ; 19 import org.w3c.dom.Node ; 20 21 25 public class CopyPasteTest extends TestCase { 26 27 public static final String TEST_XSD = "resources/PurchaseOrder.xsd"; 28 public static final String TEST_XSD_OP = "resources/PurchaseOrderSyncTest.xsd"; 29 30 public CopyPasteTest(String testName) { 31 super(testName); 32 } 33 34 protected void setUp() throws Exception { 35 } 36 37 private String readFile(String filename) throws IOException { 38 URL url = getClass().getResource(filename); 39 BufferedReader br = new BufferedReader (new InputStreamReader (url.openStream(),"UTF-8")); 40 StringBuffer sbuf = new StringBuffer (); 41 try { 42 int c = 0; 43 while((c = br.read()) != -1) { 44 sbuf.append((char)c); 45 } 46 } finally { 47 br.close(); 48 } 49 return sbuf.toString(); 50 } 51 52 55 public void testCopyPasteLocalElement() throws Exception { 56 SchemaModel model = Util.loadSchemaModel("resources/CutPasteTest_before.xsd"); 57 SchemaImpl schema = (SchemaImpl) model.getSchema(); 58 Node schemaNode = schema.getPeer(); 59 GlobalElementImpl gei = (GlobalElementImpl) schema.getElements().iterator().next(); 60 LocalComplexTypeImpl lcti = (LocalComplexTypeImpl) gei.getInlineType(); 61 SequenceImpl seq = (SequenceImpl) lcti.getDefinition(); 62 Node seqNode = seq.getPeer(); 63 LocalElementImpl leti = (LocalElementImpl) seq.getContent().get(1); 64 65 assertEquals("testCutPasteByDocSync.localElement.size", 2, seq.getChildren().size()); 66 assertEquals("testCutPasteByDocSync.localElement.nodes.size", 5, seqNode.getChildNodes().getLength()); 67 68 72 model.startTransaction(); 73 LocalElementImpl clonedLeti = (LocalElementImpl) leti.copy(seq); 74 assertTrue("testCutPasteByDocSync.localElement", clonedLeti!=null); 75 seq.addContent(clonedLeti, 2); 76 model.endTransaction(); 77 78 SchemaImpl changedSchema1 = (SchemaImpl) model.getSchema(); 79 Node changedSchemaNode1 = changedSchema1.getPeer(); 80 GlobalElementImpl changedGei1 = (GlobalElementImpl) changedSchema1.getElements().iterator().next(); 81 LocalComplexTypeImpl changedLcti1 = (LocalComplexTypeImpl) changedGei1.getInlineType(); 82 SequenceImpl changedSeq1 = (SequenceImpl) changedLcti1.getDefinition(); 83 Node changedSeqNode1 = changedSeq1.getPeer(); 84 85 assertEquals("testCutPasteByDocSync.localElement.nodes.size", 3, changedSeq1.getChildren().size()); 86 Iterator it=changedSeq1.getChildren().iterator(); 87 it.next(); 88 LocalElementImpl le2=(LocalElementImpl) it.next(); 89 LocalElementImpl le3=(LocalElementImpl) it.next(); 90 assertTrue("testCutPasteByDocSync.localElement.isSame", le2.getName().equals(le3.getName())); 91 assertTrue("testCutPasteByDocSync.localElement.isIdNotSame", 92 ((NodeImpl)le2.getPeer()).getId()!=((NodeImpl)le3.getPeer()).getId()); 93 assertEquals("testCutPasteByDocSync.localElement.nodes.size", 7, changedSeqNode1.getChildNodes().getLength()); 94 95 } 99 100 103 public void testCopyPasteGlobalElement() throws Exception { 104 SchemaModel model = Util.loadSchemaModel("resources/CutPasteTest_before.xsd"); 105 SchemaImpl schema = (SchemaImpl) model.getSchema(); 106 Node schemaNode = schema.getPeer(); 107 GlobalElement ge = (GlobalElement) schema.getElements().iterator().next(); 108 109 assertEquals("testCutPasteByDocSync.localElement.size", 1, schema.getChildren().size()); 110 assertEquals("testCutPasteByDocSync.localElement.nodes.size", 3, schemaNode.getChildNodes().getLength()); 111 112 118 model.startTransaction(); 119 GlobalElement clonedGe = (GlobalElement) ge.copy(schema); 120 assertTrue("testCutPasteByDocSync.globalElement", clonedGe!=null); 121 schema.addElement(clonedGe); 122 model.endTransaction(); 123 124 SchemaImpl changedSchema1 = (SchemaImpl) model.getSchema(); 125 Node changedSchemaNode1 = changedSchema1.getPeer(); 126 127 assertEquals("testCutPasteByDocSync.localElement.nodes.size", 2, changedSchema1.getChildren().size()); 128 Iterator it=changedSchema1.getChildren().iterator(); 129 GlobalElement ge1=(GlobalElement) it.next(); 130 GlobalElement ge2=(GlobalElement) it.next(); 131 132 assertTrue("testCutPasteByDocSync.localElement.isSame", ge1.getName().equals(ge2.getName())); 133 assertTrue("testCutPasteByDocSync.localElement.isIdNotSame", 134 ((NodeImpl)((GlobalElementImpl)ge1).getPeer()).getId()!=((NodeImpl)((GlobalElementImpl)ge2).getPeer()).getId()); 135 assertEquals("testCutPasteByDocSync.localElement.nodes.size", 5, changedSchemaNode1.getChildNodes().getLength()); 136 137 141 LocalComplexType ge1Child = (LocalComplexType) ge1.getChildren().iterator().next(); 142 Element ge1ChildNode = ((LocalComplexTypeImpl)ge1Child).getPeer(); 143 144 LocalComplexType ge2Child = (LocalComplexType) ge2.getChildren().iterator().next(); 145 Element ge2ChildNode = ((LocalComplexTypeImpl)ge2Child).getPeer(); 146 147 assertTrue("testCutPasteByDocSync.localElement.isIdNotSame", 148 ((NodeImpl)ge1ChildNode).getId()!=((NodeImpl)ge2ChildNode).getId()); 149 } 154 155 private Document sd; 156 private SchemaModel model; 157 158 } 159 | Popular Tags |