]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
93cb2343031843d6f5b991243e1b3364321c59b4
[tmp/jakarta-migration.git] /
1 /**\r
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
5  *\r
6  * http://www.collectionspace.org\r
7  * http://wiki.collectionspace.org\r
8  *\r
9  * Copyright (c) 2009 Regents of the University of California\r
10  *\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
13  *\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
16  *\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
22  */\r
23 package org.collectionspace.services.IntegrationTests.test;\r
24 \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
29 \r
30 /**\r
31  * User: laramie\r
32  * $LastChangedRevision:  $\r
33  * $LastChangedDate:  $\r
34  */\r
35 public class XmlCompareJdomTest {\r
36 \r
37 \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
41     }\r
42     public static void printTreeWalkResults(TreeWalkResults list){\r
43         for (TreeWalkResults.TreeWalkEntry entry : list){\r
44             System.out.println(entry.toString());\r
45         }\r
46     }\r
47 \r
48     static void assertTrue(boolean stmt, String msg, TreeWalkResults results){\r
49         if (!stmt){\r
50             System.out.println("=====> Assertion Failed: "+msg);\r
51             printTreeWalkResults(results);\r
52         }\r
53         Assert.assertTrue(stmt, msg);\r
54     }\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
59         }\r
60        Assert.assertEquals(o1, o2, msg);\r
61     }\r
62 \r
63     public  static void assertTreeWalkResults(TreeWalkResults results,\r
64                                                                       int addedRight,\r
65                                                                       int missingRight,\r
66                                                                       int textMismatches,\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
75 \r
76         String expected = "\r\n        expected: addedRight:"+addedRight+",missingRight:"+missingRight+",textMismatches:"+textMismatches\r
77                               +",strictMatch:"+strictMatch+",matchSpec:"+matchSpec;\r
78 \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
83         try {\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
90             done = true;\r
91         } finally {\r
92             if (!done) System.out.println("FAILURE: assertTreeWalkResults failed an assertion. See surefire report.\r\n");\r
93         }\r
94     }\r
95 \r
96     @Test\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
102                                         "expected",\r
103                                         partFromServer,\r
104                                         "from-server",\r
105                                         exPARTNAME,\r
106                                         matchSpec);\r
107         assertTreeWalkResults(results,0,0,0,true,matchSpec);\r
108                                    // addedRight,missingRight,textMismatches,strictMatch,treesMatch\r
109     }\r
110 \r
111     @Test\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
118                                         "expected",\r
119                                         srvHEAD+srvEN2+srvDEPOSITOR+srvFOOT,\r
120                                         "from-server",\r
121                                         exPARTNAME,\r
122                                         matchSpec);\r
123         assertTreeWalkResults(results,0,0,1,false,matchSpec);\r
124                                    // addedRight,missingRight,textMismatches,strictMatch,treesMatch\r
125     }\r
126 \r
127 \r
128     @Test\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
134                                         "expected",\r
135                                         srvHEAD+srvEN+exNEWTREE+srvDEPOSITOR+exNEW+srvFOOT,\r
136                                         "from-server",\r
137                                         exPARTNAME,\r
138                                         matchSpec);\r
139         assertTreeWalkResults(results,2,0,0,false,matchSpec);\r
140                                    // addedRight,missingRight,textMismatches,strictMatch,treesMatch\r
141 \r
142     }\r
143 \r
144     @Test\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
149 \r
150         TreeWalkResults results =\r
151             XmlCompareJdom.compareParts(exHEAD + exEN_WCH + exNEWTREE + exDEP  + exNEW + exFOOT,\r
152                                     "expected",\r
153                                     partFromServer,\r
154                                     "from-server",\r
155                                     exPARTNAME,\r
156                                     matchSpec);\r
157         assertTreeWalkResults(results,0,3,0,false,matchSpec);\r
158                                    // addedRight,missingRight,textMismatches,strictMatch,treesMatch\r
159     }\r
160 \r
161     @Test\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
167                                     "expected",\r
168                                     partFromServer,\r
169                                     "from-server",\r
170                                     exPARTNAME,\r
171                                     matchSpec);\r
172         assertTreeWalkResults(results,0,0,0,true,matchSpec);\r
173                                    // addedRight,missingRight,textMismatches,strictMatch,treesMatch\r
174     }\r
175 \r
176     // ============  expected part, will be used as LEFT tree ==========================================================\r
177     private static String exPARTNAME = "objectexit_common";\r
178 \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
187                                     +"    <enChild>\r\n"\r
188                                     +"        enChild content\r\n"\r
189                                     +"    </enChild>\r\n"\r
190                                     +" </exitNumber>\r\n";\r
191     private static String exNEWTREE =" <first>\r\n"\r
192                                     +"    <second>\r\n"\r
193                                     +"        second content\r\n"\r
194                                     +"    </second>\r\n"\r
195                                     +" </first>\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
199                                                      +"</document>";\r
200 \r
201     private static String expectedPartContent = exHEAD + exEN + exDEP  + exFOOT;\r
202 \r
203 \r
204     // ============  from-server part, will be used as RIGHT tree ==========================================================\r
205 \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
209 \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
214                                                        +"</document>";\r
215 \r
216     private static String partFromServer = srvHEAD+srvEN+srvDEPOSITOR+srvFOOT;\r
217 \r
218 \r
219 \r
220 }\r