KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > codehaus > loom > extension > ExtensionTestCase


1 /*
2  * Copyright (C) The Spice Group. All rights reserved.
3  *
4  * This software is published under the terms of the Spice
5  * Software License version 1.1, a copy of which has been included
6  * with this distribution in the LICENSE.txt file.
7  */

8 package org.codehaus.loom.extension;
9
10 import java.io.ByteArrayInputStream JavaDoc;
11 import java.io.IOException JavaDoc;
12 import java.util.jar.Manifest JavaDoc;
13
14 import org.codehaus.loom.extension.Extension;
15
16 import junit.framework.TestCase;
17
18 /**
19  * TestCases for Extension.
20  *
21  * @author Peter Donald
22  * @version $Revision: 1.1 $ $Date: 2004/04/19 21:40:38 $
23  */

24 public class ExtensionTestCase
25     extends TestCase
26 {
27     public void testAvailable()
28         throws Exception JavaDoc
29     {
30         final String JavaDoc manifestString =
31             "Manifest-Version: 1.0\n" +
32             "Extension-Name: spice-configkit\n" +
33             "Specification-Version: 1.0\n" +
34             "Specification-Vendor: Spice Group\n" +
35             "Implementation-Vendor-Id: org.realityforge.spice\n" +
36             "Implementation-Vendor: Spice Group\n" +
37             "Implementation-Version: 2.8Alpha\n";
38         final Manifest JavaDoc manifest = getManifest( manifestString );
39
40         final Extension[] required = Extension.getRequired( manifest );
41         assertEquals( "required Count", 0, required.length );
42
43         final Extension[] available = Extension.getAvailable( manifest );
44
45         assertEquals( "Available Count", 1, available.length );
46         assertEquals( "Available Name", "spice-configkit",
47                       available[ 0 ].getExtensionName() );
48         assertEquals( "Available SpecVendor", "Spice Group",
49                       available[ 0 ].getSpecificationVendor() );
50         assertEquals( "Available SpecVersion", "1.0",
51                       available[ 0 ].getSpecificationVersion().toString() );
52         assertEquals( "Available URL",
53                       null,
54                       available[ 0 ].getImplementationURL() );
55         assertEquals( "Available ImpVendor", "Spice Group",
56                       available[ 0 ].getImplementationVendor() );
57         assertEquals( "Available ImpVendorId", "org.realityforge.spice",
58                       available[ 0 ].getImplementationVendorID() );
59         assertEquals( "Available ImpVersion", "2.8Alpha",
60                       available[ 0 ].getImplementationVersion().toString() );
61     }
62
63     public void testRequired()
64         throws Exception JavaDoc
65     {
66         final String JavaDoc manifestString =
67             "Manifest-Version: 1.0\n" +
68             "Extension-List: required1\n" +
69             "required1-Extension-Name: spice.required1\n" +
70             "required1-Specification-Version: 1.0\n" +
71             "required1-Implementation-Version: 1.0.2\n" +
72             "required1-Implementation-Vendor-Id: org.realityforge.spice\n" +
73             "required1-Implementation-URL: http://spice.codehaus.org/required1.jar\n";
74         final Manifest JavaDoc manifest = getManifest( manifestString );
75
76         final Extension[] available = Extension.getAvailable( manifest );
77         assertEquals( "available Count", 0, available.length );
78
79         final Extension[] required = Extension.getRequired( manifest );
80
81         assertEquals( "required Count", 1, required.length );
82         assertEquals( "required Name", "spice.required1",
83                       required[ 0 ].getExtensionName() );
84         assertEquals( "required SpecVendor", null,
85                       required[ 0 ].getSpecificationVendor() );
86         assertEquals( "required SpecVersion", "1.0",
87                       required[ 0 ].getSpecificationVersion().toString() );
88         assertEquals( "required URL", "http://spice.codehaus.org/required1.jar",
89                       required[ 0 ].getImplementationURL() );
90         assertEquals( "required ImpVendor", null,
91                       required[ 0 ].getImplementationVendor() );
92         assertEquals( "required ImpVendorId", "org.realityforge.spice",
93                       required[ 0 ].getImplementationVendorID() );
94         assertEquals( "required ImpVersion", "1.0.2",
95                       required[ 0 ].getImplementationVersion().toString() );
96     }
97
98     public void testMultiRequired()
99         throws Exception JavaDoc
100     {
101         final String JavaDoc manifestString =
102             "Manifest-Version: 1.0\n" +
103             "Extension-List: required1 required2\n" +
104             "required1-Extension-Name: spice.required1\n" +
105             "required1-Specification-Version: 1.0\n" +
106             "required1-Implementation-Version: 1.0.2\n" +
107             "required1-Implementation-Vendor-Id: org.realityforge.spice\n" +
108             "required1-Implementation-URL: http://spice.codehaus.org/required1.jar\n" +
109             "required2-Extension-Name: spice.required2\n" +
110             "required2-Specification-Version: 1.0\n" +
111             "required2-Implementation-Version: 1.0.2\n" +
112             "required2-Implementation-Vendor-Id: org.realityforge.spice\n" +
113             "required2-Implementation-URL: http://spice.codehaus.org/required2.jar\n";
114         final Manifest JavaDoc manifest = getManifest( manifestString );
115
116         final Extension[] available = Extension.getAvailable( manifest );
117         assertEquals( "available Count", 0, available.length );
118
119         final Extension[] required = Extension.getRequired( manifest );
120         assertEquals( "required Count", 2, required.length );
121         assertEquals( "required Name", "spice.required1",
122                       required[ 0 ].getExtensionName() );
123         assertEquals( "required SpecVendor", null,
124                       required[ 0 ].getSpecificationVendor() );
125         assertEquals( "required SpecVersion", "1.0",
126                       required[ 0 ].getSpecificationVersion().toString() );
127         assertEquals( "required URL", "http://spice.codehaus.org/required1.jar",
128                       required[ 0 ].getImplementationURL() );
129         assertEquals( "required ImpVendor", null,
130                       required[ 0 ].getImplementationVendor() );
131         assertEquals( "required ImpVendorId", "org.realityforge.spice",
132                       required[ 0 ].getImplementationVendorID() );
133         assertEquals( "required ImpVersion", "1.0.2",
134                       required[ 0 ].getImplementationVersion().toString() );
135
136         assertEquals( "required Name", "spice.required2",
137                       required[ 1 ].getExtensionName() );
138         assertEquals( "required SpecVendor", null,
139                       required[ 1 ].getSpecificationVendor() );
140         assertEquals( "required SpecVersion", "1.0",
141                       required[ 1 ].getSpecificationVersion().toString() );
142         assertEquals( "required URL", "http://spice.codehaus.org/required2.jar",
143                       required[ 1 ].getImplementationURL() );
144         assertEquals( "required ImpVendor", null,
145                       required[ 1 ].getImplementationVendor() );
146         assertEquals( "required ImpVendorId", "org.realityforge.spice",
147                       required[ 1 ].getImplementationVendorID() );
148         assertEquals( "required ImpVersion", "1.0.2",
149                       required[ 1 ].getImplementationVersion().toString() );
150     }
151
152     public void testAvailableAndRequired()
153         throws Exception JavaDoc
154     {
155         final String JavaDoc manifestString =
156             "Manifest-Version: 1.0\n" +
157             "Extension-Name: spice-configkit\n" +
158             "Specification-Version: 1.0\n" +
159             "Specification-Vendor: Spice Group\n" +
160             "Implementation-Vendor-Id: org.realityforge.spice\n" +
161             "Implementation-Vendor: Spice Group\n" +
162             "Implementation-Version: 2.8Alpha\n" +
163             "Extension-List: required1\n" +
164             "required1-Extension-Name: spice.required1\n" +
165             "required1-Specification-Version: 1.0\n" +
166             "required1-Implementation-Version: 1.0.2\n" +
167             "required1-Implementation-Vendor-Id: org.realityforge.spice\n" +
168             "required1-Implementation-URL: http://spice.codehaus.org/required1.jar\n";
169         final Manifest JavaDoc manifest = getManifest( manifestString );
170
171         final Extension[] available = Extension.getAvailable( manifest );
172         assertEquals( "Available Count", 1, available.length );
173         assertEquals( "Available Name", "spice-configkit",
174                       available[ 0 ].getExtensionName() );
175         assertEquals( "Available SpecVendor", "Spice Group",
176                       available[ 0 ].getSpecificationVendor() );
177         assertEquals( "Available SpecVersion", "1.0",
178                       available[ 0 ].getSpecificationVersion().toString() );
179         assertEquals( "Available URL",
180                       null,
181                       available[ 0 ].getImplementationURL() );
182         assertEquals( "Available ImpVendor", "Spice Group",
183                       available[ 0 ].getImplementationVendor() );
184         assertEquals( "Available ImpVendorId", "org.realityforge.spice",
185                       available[ 0 ].getImplementationVendorID() );
186         assertEquals( "Available ImpVersion", "2.8Alpha",
187                       available[ 0 ].getImplementationVersion().toString() );
188
189         final Extension[] required = Extension.getRequired( manifest );
190         assertEquals( "required Count", 1, required.length );
191         assertEquals( "required Name", "spice.required1",
192                       required[ 0 ].getExtensionName() );
193         assertEquals( "required SpecVendor", null,
194                       required[ 0 ].getSpecificationVendor() );
195         assertEquals( "required SpecVersion", "1.0",
196                       required[ 0 ].getSpecificationVersion().toString() );
197         assertEquals( "required URL", "http://spice.codehaus.org/required1.jar",
198                       required[ 0 ].getImplementationURL() );
199         assertEquals( "required ImpVendor", null,
200                       required[ 0 ].getImplementationVendor() );
201         assertEquals( "required ImpVendorId", "org.realityforge.spice",
202                       required[ 0 ].getImplementationVendorID() );
203         assertEquals( "required ImpVersion", "1.0.2",
204                       required[ 0 ].getImplementationVersion().toString() );
205     }
206
207     public void testRequiredWithSpacesAfterAttributes()
208         throws Exception JavaDoc
209     {
210         final String JavaDoc manifestString =
211             "Manifest-Version: 1.0 \n" +
212             "Extension-List: required1 \n" +
213             "required1-Extension-Name: spice.required1 \n" +
214             "required1-Specification-Version: 1.0 \n" +
215             "required1-Implementation-Version: 1.0.2 \n" +
216             "required1-Implementation-Vendor-Id: org.realityforge.spice \n" +
217             "required1-Implementation-URL: http://spice.codehaus.org/required1.jar \n";
218         final Manifest JavaDoc manifest = getManifest( manifestString );
219
220         final Extension[] available = Extension.getAvailable( manifest );
221         assertEquals( "available Count", 0, available.length );
222
223         final Extension[] required = Extension.getRequired( manifest );
224
225         assertEquals( "required Count", 1, required.length );
226         assertEquals( "required Name", "spice.required1",
227                       required[ 0 ].getExtensionName() );
228         assertEquals( "required SpecVendor", null,
229                       required[ 0 ].getSpecificationVendor() );
230         assertEquals( "required SpecVersion", "1.0",
231                       required[ 0 ].getSpecificationVersion().toString() );
232         assertEquals( "required URL", "http://spice.codehaus.org/required1.jar",
233                       required[ 0 ].getImplementationURL() );
234         assertEquals( "required ImpVendor", null,
235                       required[ 0 ].getImplementationVendor() );
236         assertEquals( "required ImpVendorId", "org.realityforge.spice",
237                       required[ 0 ].getImplementationVendorID() );
238         assertEquals( "required ImpVersion", "1.0.2",
239                       required[ 0 ].getImplementationVersion().toString() );
240     }
241
242     public void testAvailableWithSpacesAfterAttributes()
243         throws Exception JavaDoc
244     {
245         final String JavaDoc manifestString =
246             "Manifest-Version: 1.0\n" +
247             "Extension-Name: spice-configkit \n" +
248             "Specification-Version: 1.0 \n" +
249             "Specification-Vendor: Spice Group \n" +
250             "Implementation-Vendor-Id: org.realityforge.spice \n" +
251             "Implementation-Vendor: Spice Group \n" +
252             "Implementation-Version: 2.8Alpha \n";
253         final Manifest JavaDoc manifest = getManifest( manifestString );
254
255         final Extension[] required = Extension.getRequired( manifest );
256         assertEquals( "required Count", 0, required.length );
257
258         final Extension[] available = Extension.getAvailable( manifest );
259
260         assertEquals( "Available Count", 1, available.length );
261         assertEquals( "Available Name", "spice-configkit",
262                       available[ 0 ].getExtensionName() );
263         assertEquals( "Available SpecVendor", "Spice Group",
264                       available[ 0 ].getSpecificationVendor() );
265         assertEquals( "Available SpecVersion", "1.0",
266                       available[ 0 ].getSpecificationVersion().toString() );
267         assertEquals( "Available URL",
268                       null,
269                       available[ 0 ].getImplementationURL() );
270         assertEquals( "Available ImpVendor", "Spice Group",
271                       available[ 0 ].getImplementationVendor() );
272         assertEquals( "Available ImpVendorId", "org.realityforge.spice",
273                       available[ 0 ].getImplementationVendorID() );
274         assertEquals( "Available ImpVersion", "2.8Alpha",
275                       available[ 0 ].getImplementationVersion().toString() );
276     }
277
278     public void testCompatabilityRezultsIncompatability()
279         throws Exception JavaDoc
280     {
281         final Extension extension1 =
282             new Extension( "baz", null, null, null, null, null, null );
283         final Extension extension2 =
284             new Extension( "foo", null, null, null, null, null, null );
285         assertEquals( Extension.INCOMPATIBLE,
286                       extension1.getCompatibilityWith( extension2 ) );
287     }
288
289     public void testCompatabilityRezultsNeedSpecUpgrade()
290         throws Exception JavaDoc
291     {
292         final Extension extension1 =
293             new Extension( "baz", "1.0", null, null, null, null, null );
294         final Extension extension2 =
295             new Extension( "baz", "1.1", null, null, null, null, null );
296         assertEquals( Extension.REQUIRE_SPECIFICATION_UPGRADE,
297                       extension1.getCompatibilityWith( extension2 ) );
298     }
299
300     public void testCompatabilityRezultsCompatLowerVersion()
301         throws Exception JavaDoc
302     {
303         final Extension extension1 =
304             new Extension( "baz", "1.0", null, null, null, null, null );
305         final Extension extension2 =
306             new Extension( "baz", "0.9", null, null, null, null, null );
307         assertEquals( Extension.COMPATIBLE,
308                       extension1.getCompatibilityWith( extension2 ) );
309     }
310
311     public void testCompatabilityRezultsCompatEqVersion()
312         throws Exception JavaDoc
313     {
314         final Extension extension1 =
315             new Extension( "baz", "1.0", null, null, null, null, null );
316         final Extension extension2 =
317             new Extension( "baz", "1.0", null, null, null, null, null );
318         assertEquals( Extension.COMPATIBLE,
319                       extension1.getCompatibilityWith( extension2 ) );
320     }
321
322     public void testCompatabilityRezultsInCompatWIthNonNullSpecVersion()
323         throws Exception JavaDoc
324     {
325         final Extension extension1 =
326             new Extension( "baz", null, null, null, null, null, null );
327         final Extension extension2 =
328             new Extension( "baz", "1.0", null, null, null, null, null );
329         assertEquals( Extension.REQUIRE_SPECIFICATION_UPGRADE,
330                       extension1.getCompatibilityWith( extension2 ) );
331     }
332
333     public void testCompatabilityRezultsInCompatWIthNullSpecVersion()
334         throws Exception JavaDoc
335     {
336         final Extension extension1 =
337             new Extension( "baz", "1.0", null, null, null, null, null );
338         final Extension extension2 =
339             new Extension( "baz", null, null, null, null, null, null );
340         assertEquals( Extension.COMPATIBLE,
341                       extension1.getCompatibilityWith( extension2 ) );
342     }
343
344     public void testCompatabilityRezultsInCompatForVendorID()
345         throws Exception JavaDoc
346     {
347         final Extension extension1 =
348             new Extension( "baz", null, null, null, null, "Bob", null );
349         final Extension extension2 =
350             new Extension( "baz", null, null, null, null, "Bob", null );
351         assertEquals( Extension.COMPATIBLE,
352                       extension1.getCompatibilityWith( extension2 ) );
353     }
354
355     public void testCompatabilityRezultsInCompatForNullVendorID()
356         throws Exception JavaDoc
357     {
358         final Extension extension1 =
359             new Extension( "baz", null, null, null, null, null, null );
360         final Extension extension2 =
361             new Extension( "baz", null, null, null, null, "Bob", null );
362         assertEquals( Extension.REQUIRE_VENDOR_SWITCH,
363                       extension1.getCompatibilityWith( extension2 ) );
364     }
365
366     public void testCompatabilityRezultsInIncompatForNullVendorID()
367         throws Exception JavaDoc
368     {
369         final Extension extension1 =
370             new Extension( "baz", null, null, null, null, null, null );
371         final Extension extension2 =
372             new Extension( "baz", null, null, null, null, "Bob", null );
373         assertEquals( Extension.REQUIRE_VENDOR_SWITCH,
374                       extension1.getCompatibilityWith( extension2 ) );
375     }
376
377     private Manifest JavaDoc getManifest( final String JavaDoc manifestString )
378         throws IOException JavaDoc
379     {
380         final ByteArrayInputStream JavaDoc stream =
381             new ByteArrayInputStream JavaDoc( manifestString.getBytes() );
382         return new Manifest JavaDoc( stream );
383     }
384 }
Popular Tags