2 * This document is a part of the source code and related artifacts
\r
3 * for CollectionSpace, an open source collections management system
\r
4 * for museums and related institutions:
\r
6 * http://www.collectionspace.org
\r
7 * http://wiki.collectionspace.org
\r
9 * Copyright (c) 2009 Regents of the University of California
\r
11 * Licensed under the Educational Community License (ECL), Version 2.0.
\r
12 * You may not use this file except in compliance with this License.
\r
14 * You may obtain a copy of the ECL 2.0 License at
\r
15 * https://source.collectionspace.org/collection-space/LICENSE.txt
\r
17 * Unless required by applicable law or agreed to in writing, software
\r
18 * distributed under the License is distributed on an "AS IS" BASIS,
\r
19 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
20 * See the License for the specific language governing permissions and
\r
21 * limitations under the License.
\r
23 package org.collectionspace.services.IntegrationTests.test;
\r
25 import org.collectionspace.services.IntegrationTests.xmlreplay.TreeWalkResults;
\r
26 import org.collectionspace.services.IntegrationTests.xmlreplay.XmlCompareJdom;
\r
27 import org.testng.Assert;
\r
28 import org.testng.annotations.Test;
\r
32 * $LastChangedRevision: $
\r
33 * $LastChangedDate: $
\r
35 public class XmlCompareJdomTest {
\r
38 private void testBanner(String msg){
\r
39 String BANNER ="-------------------------------------------------------";
\r
40 System.out.println(BANNER+"\r\n"+this.getClass().getName()+"\r\n"+msg+"\r\n"+BANNER);
\r
42 public static void printTreeWalkResults(TreeWalkResults list){
\r
43 for (TreeWalkResults.TreeWalkEntry entry : list){
\r
44 System.out.println(entry.toString());
\r
48 static void assertTrue(boolean stmt, String msg, TreeWalkResults results){
\r
50 System.out.println("=====> Assertion Failed: "+msg);
\r
51 printTreeWalkResults(results);
\r
53 Assert.assertTrue(stmt, msg);
\r
55 static void assertEquals(Object o1, Object o2, String msg, TreeWalkResults results){
\r
56 if ( ! o1.equals(o2)) {
\r
57 System.out.println("=====> Assertion Equals Failed: "+" o1: {"+o1+"} o2: {"+o2+"}"+"\r\n "+msg);
\r
58 printTreeWalkResults(results);
\r
60 Assert.assertEquals(o1, o2, msg);
\r
63 public static void assertTreeWalkResults(TreeWalkResults results,
\r
67 boolean strictMatch,
\r
68 TreeWalkResults.MatchSpec matchSpec){
\r
69 int addedr = results.countFor(TreeWalkResults.TreeWalkEntry.STATUS.R_ADDED);
\r
70 int missingr = results.countFor(TreeWalkResults.TreeWalkEntry.STATUS.R_MISSING);
\r
71 int tdiff = results.countFor(TreeWalkResults.TreeWalkEntry.STATUS.TEXT_DIFFERENT);
\r
72 int badCount = results.getMismatchCount();
\r
73 boolean strict = results.isStrictMatch();
\r
74 boolean treeOK = results.treesMatch(matchSpec);
\r
76 String expected = "\r\n expected: addedRight:"+addedRight+",missingRight:"+missingRight+",textMismatches:"+textMismatches
\r
77 +",strictMatch:"+strictMatch+",matchSpec:"+matchSpec;
\r
79 String actual = "\r\n actual: addedRight:"+addedr+",missingRight:"+missingr+",textMismatches:"+tdiff
\r
80 +",strictMatch:"+strict+",matchSpec:"+matchSpec;
\r
81 String exp_act = expected +"\r\n"+actual+"\r\n";
\r
82 boolean done = false;
\r
84 assertEquals(addedr, addedRight, "assertTreeWalkResults:R_ADDED mismatch." + exp_act, results);
\r
85 assertEquals(missingr, missingRight, "assertTreeWalkResults:R_MISSING mismatch." + exp_act, results);
\r
86 assertEquals(tdiff, textMismatches, "assertTreeWalkResults:TEXT_DIFFERENT mismatch." + exp_act, results);
\r
87 assertTrue((strict == strictMatch), "assertTreeWalkResults:strictMatch mismatch." + exp_act, results);
\r
88 assertTrue((treeOK), "assertTreeWalkResults:treesMatch("+matchSpec+") returned false."+exp_act, results);
\r
89 //System.out.println("SUCCESS: assertTreeWalkResults done.\r\n");
\r
92 if (!done) System.out.println("FAILURE: assertTreeWalkResults failed an assertion. See surefire report.\r\n");
\r
97 public void testXmlCompareJdom(){
\r
98 testBanner("testXmlCompareJdom");
\r
99 TreeWalkResults.MatchSpec matchSpec = TreeWalkResults.MatchSpec.createDefault();
\r
100 TreeWalkResults results =
\r
101 XmlCompareJdom.compareParts(expectedPartContent,
\r
107 assertTreeWalkResults(results,0,0,0,true,matchSpec);
\r
108 // addedRight,missingRight,textMismatches,strictMatch,treesMatch
\r
112 public void testTextContentDifferent(){
\r
113 testBanner("testTextContentDifferent");
\r
114 TreeWalkResults.MatchSpec matchSpec = TreeWalkResults.MatchSpec.createDefault();
\r
115 matchSpec.removeErrorFromSpec(TreeWalkResults.TreeWalkEntry.STATUS.TEXT_DIFFERENT);
\r
116 TreeWalkResults results =
\r
117 XmlCompareJdom.compareParts(expectedPartContent,
\r
119 srvHEAD+srvEN2+srvDEPOSITOR+srvFOOT,
\r
123 assertTreeWalkResults(results,0,0,1,false,matchSpec);
\r
124 // addedRight,missingRight,textMismatches,strictMatch,treesMatch
\r
129 public void testAddedR(){
\r
130 testBanner("testAddedR");
\r
131 TreeWalkResults.MatchSpec matchSpec = TreeWalkResults.MatchSpec.createDefault();
\r
132 TreeWalkResults results =
\r
133 XmlCompareJdom.compareParts(expectedPartContent,
\r
135 srvHEAD+srvEN+exNEWTREE+srvDEPOSITOR+exNEW+srvFOOT,
\r
139 assertTreeWalkResults(results,2,0,0,false,matchSpec);
\r
140 // addedRight,missingRight,textMismatches,strictMatch,treesMatch
\r
145 public void testAddedL(){
\r
146 testBanner("testAddedL");
\r
147 TreeWalkResults.MatchSpec matchSpec = TreeWalkResults.MatchSpec.createDefault();
\r
148 matchSpec.removeErrorFromSpec(TreeWalkResults.TreeWalkEntry.STATUS.R_MISSING);
\r
150 TreeWalkResults results =
\r
151 XmlCompareJdom.compareParts(exHEAD + exEN_WCH + exNEWTREE + exDEP + exNEW + exFOOT,
\r
157 assertTreeWalkResults(results,0,3,0,false,matchSpec);
\r
158 // addedRight,missingRight,textMismatches,strictMatch,treesMatch
\r
162 public void testChildrenReordered(){
\r
163 testBanner("testChildrenReordered");
\r
164 TreeWalkResults.MatchSpec matchSpec = TreeWalkResults.MatchSpec.createDefault();
\r
165 TreeWalkResults results =
\r
166 XmlCompareJdom.compareParts(exHEAD + exDEP + exEN + exFOOT,
\r
172 assertTreeWalkResults(results,0,0,0,true,matchSpec);
\r
173 // addedRight,missingRight,textMismatches,strictMatch,treesMatch
\r
176 // ============ expected part, will be used as LEFT tree ==========================================================
\r
177 private static String exPARTNAME = "objectexit_common";
\r
179 private static String exHEAD ="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
\r
180 +"<document name=\"objectexit\">"
\r
181 +"<ns2:objectexit_common \r\n"
\r
182 +" xmlns:ns2=\"http://collectionspace.org/services/objectexit\" \r\n"
\r
183 +" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \r\n"
\r
184 +" xsi:schemaLocation=\"http://collectionspace.org/services/objectexit http://services.collectionspace.org/objectexit/objectexit_common.xsd\">\r\n";
\r
185 private static String exEN =" <exitNumber>objectexitNumber-1290026472360</exitNumber>\r\n";
\r
186 private static String exEN_WCH =" <exitNumber>objectexitNumber-1290026472360\r\n"
\r
188 +" enChild content\r\n"
\r
190 +" </exitNumber>\r\n";
\r
191 private static String exNEWTREE =" <first>\r\n"
\r
193 +" second content\r\n"
\r
196 private static String exDEP =" <depositor>urn:cspace:org.collectionspace.demo:orgauthority:name(TestOrgAuth):organization:name(Northern Climes Museum)'Northern Climes Museum'</depositor>\r\n";
\r
197 private static String exNEW =" <newField>objectexitNumber-1290026472360</newField>\r\n";
\r
198 private static String exFOOT ="</ns2:objectexit_common>"
\r
201 private static String expectedPartContent = exHEAD + exEN + exDEP + exFOOT;
\r
204 // ============ from-server part, will be used as RIGHT tree ==========================================================
\r
206 private static String srvHEAD = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
\r
207 +"<document name=\"objectexit\">"
\r
208 +"<ns2:objectexit_common xmlns:ns2=\"http://collectionspace.org/services/objectexit\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://collectionspace.org/services/objectexit http://services.collectionspace.org/objectexit/objectexit_common.xsd\">\r\n";
\r
210 private static String srvEN = "<exitNumber>objectexitNumber-1290026472360</exitNumber>\r\n";
\r
211 private static String srvEN2 = "<exitNumber>objectexitNumber-9999999999999</exitNumber>\r\n";
\r
212 private static String srvDEPOSITOR = "<depositor>urn:cspace:org.collectionspace.demo:orgauthority:name(TestOrgAuth):organization:name(Northern Climes Museum)'Northern Climes Museum'</depositor>\r\n";
\r
213 private static String srvFOOT = "</ns2:objectexit_common>\r\n"
\r
216 private static String partFromServer = srvHEAD+srvEN+srvDEPOSITOR+srvFOOT;
\r