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.spice.extension; 9 10 import java.io.ByteArrayInputStream; 11 import java.io.IOException; 12 import java.util.jar.Manifest; 13 import junit.framework.TestCase; 14 15 /*** 16 * TestCases for Extension. 17 * 18 * @author <a href="mailto:peter at realityforge.org">Peter Donald</a> 19 * @version $Revision: 1.1 $ $Date: 2003/12/02 07:56:59 $ 20 */ 21 public class ExtensionTestCase 22 extends TestCase 23 { 24 public ExtensionTestCase( final String name ) 25 { 26 super( name ); 27 } 28 29 public void testAvailable() 30 throws Exception 31 { 32 final String manifestString = 33 "Manifest-Version: 1.0\n" + 34 "Extension-Name: spice-configkit\n" + 35 "Specification-Version: 1.0\n" + 36 "Specification-Vendor: Spice Group\n" + 37 "Implementation-Vendor-Id: org.realityforge.spice\n" + 38 "Implementation-Vendor: Spice Group\n" + 39 "Implementation-Version: 2.8Alpha\n"; 40 final Manifest manifest = getManifest( manifestString ); 41 42 final Extension[] required = Extension.getRequired( manifest ); 43 assertEquals( "required Count", 0, required.length ); 44 45 final Extension[] available = Extension.getAvailable( manifest ); 46 47 assertEquals( "Available Count", 1, available.length ); 48 assertEquals( "Available Name", "spice-configkit", 49 available[ 0 ].getExtensionName() ); 50 assertEquals( "Available SpecVendor", "Spice Group", 51 available[ 0 ].getSpecificationVendor() ); 52 assertEquals( "Available SpecVersion", "1.0", 53 available[ 0 ].getSpecificationVersion().toString() ); 54 assertEquals( "Available URL", null, 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 65 { 66 final String 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.realityforge.org/required1.jar\n"; 74 final Manifest 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.realityforge.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 100 { 101 final String 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.realityforge.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.realityforge.org/required2.jar\n"; 114 final Manifest 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.realityforge.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.realityforge.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 154 { 155 final String 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.realityforge.org/required1.jar\n"; 169 final Manifest 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", null, available[ 0 ].getImplementationURL() ); 180 assertEquals( "Available ImpVendor", "Spice Group", 181 available[ 0 ].getImplementationVendor() ); 182 assertEquals( "Available ImpVendorId", "org.realityforge.spice", 183 available[ 0 ].getImplementationVendorID() ); 184 assertEquals( "Available ImpVersion", "2.8Alpha", 185 available[ 0 ].getImplementationVersion().toString() ); 186 187 final Extension[] required = Extension.getRequired( manifest ); 188 assertEquals( "required Count", 1, required.length ); 189 assertEquals( "required Name", "spice.required1", 190 required[ 0 ].getExtensionName() ); 191 assertEquals( "required SpecVendor", null, 192 required[ 0 ].getSpecificationVendor() ); 193 assertEquals( "required SpecVersion", "1.0", 194 required[ 0 ].getSpecificationVersion().toString() ); 195 assertEquals( "required URL", "http://spice.realityforge.org/required1.jar", 196 required[ 0 ].getImplementationURL() ); 197 assertEquals( "required ImpVendor", null, 198 required[ 0 ].getImplementationVendor() ); 199 assertEquals( "required ImpVendorId", "org.realityforge.spice", 200 required[ 0 ].getImplementationVendorID() ); 201 assertEquals( "required ImpVersion", "1.0.2", 202 required[ 0 ].getImplementationVersion().toString() ); 203 } 204 205 public void testRequiredWithSpacesAfterAttributes() 206 throws Exception 207 { 208 final String manifestString = 209 "Manifest-Version: 1.0 \n" + 210 "Extension-List: required1 \n" + 211 "required1-Extension-Name: spice.required1 \n" + 212 "required1-Specification-Version: 1.0 \n" + 213 "required1-Implementation-Version: 1.0.2 \n" + 214 "required1-Implementation-Vendor-Id: org.realityforge.spice \n" + 215 "required1-Implementation-URL: http://spice.realityforge.org/required1.jar \n"; 216 final Manifest manifest = getManifest( manifestString ); 217 218 final Extension[] available = Extension.getAvailable( manifest ); 219 assertEquals( "available Count", 0, available.length ); 220 221 final Extension[] required = Extension.getRequired( manifest ); 222 223 assertEquals( "required Count", 1, required.length ); 224 assertEquals( "required Name", "spice.required1", 225 required[ 0 ].getExtensionName() ); 226 assertEquals( "required SpecVendor", null, 227 required[ 0 ].getSpecificationVendor() ); 228 assertEquals( "required SpecVersion", "1.0", 229 required[ 0 ].getSpecificationVersion().toString() ); 230 assertEquals( "required URL", "http://spice.realityforge.org/required1.jar", 231 required[ 0 ].getImplementationURL() ); 232 assertEquals( "required ImpVendor", null, 233 required[ 0 ].getImplementationVendor() ); 234 assertEquals( "required ImpVendorId", "org.realityforge.spice", 235 required[ 0 ].getImplementationVendorID() ); 236 assertEquals( "required ImpVersion", "1.0.2", 237 required[ 0 ].getImplementationVersion().toString() ); 238 } 239 240 public void testAvailableWithSpacesAfterAttributes() 241 throws Exception 242 { 243 final String manifestString = 244 "Manifest-Version: 1.0\n" + 245 "Extension-Name: spice-configkit \n" + 246 "Specification-Version: 1.0 \n" + 247 "Specification-Vendor: Spice Group \n" + 248 "Implementation-Vendor-Id: org.realityforge.spice \n" + 249 "Implementation-Vendor: Spice Group \n" + 250 "Implementation-Version: 2.8Alpha \n"; 251 final Manifest manifest = getManifest( manifestString ); 252 253 final Extension[] required = Extension.getRequired( manifest ); 254 assertEquals( "required Count", 0, required.length ); 255 256 final Extension[] available = Extension.getAvailable( manifest ); 257 258 assertEquals( "Available Count", 1, available.length ); 259 assertEquals( "Available Name", "spice-configkit", 260 available[ 0 ].getExtensionName() ); 261 assertEquals( "Available SpecVendor", "Spice Group", 262 available[ 0 ].getSpecificationVendor() ); 263 assertEquals( "Available SpecVersion", "1.0", 264 available[ 0 ].getSpecificationVersion().toString() ); 265 assertEquals( "Available URL", null, available[ 0 ].getImplementationURL() ); 266 assertEquals( "Available ImpVendor", "Spice Group", 267 available[ 0 ].getImplementationVendor() ); 268 assertEquals( "Available ImpVendorId", "org.realityforge.spice", 269 available[ 0 ].getImplementationVendorID() ); 270 assertEquals( "Available ImpVersion", "2.8Alpha", 271 available[ 0 ].getImplementationVersion().toString() ); 272 } 273 274 public void testCompatabilityRezultsIncompatability() 275 throws Exception 276 { 277 final Extension extension1 = 278 new Extension( "baz", null, null, null, null, null, null ); 279 final Extension extension2 = 280 new Extension( "foo", null, null, null, null, null, null ); 281 assertEquals( Extension.INCOMPATIBLE, 282 extension1.getCompatibilityWith( extension2 ) ); 283 } 284 285 public void testCompatabilityRezultsNeedSpecUpgrade() 286 throws Exception 287 { 288 final Extension extension1 = 289 new Extension( "baz", "1.0", null, null, null, null, null ); 290 final Extension extension2 = 291 new Extension( "baz", "1.1", null, null, null, null, null ); 292 assertEquals( Extension.REQUIRE_SPECIFICATION_UPGRADE, 293 extension1.getCompatibilityWith( extension2 ) ); 294 } 295 296 public void testCompatabilityRezultsCompatLowerVersion() 297 throws Exception 298 { 299 final Extension extension1 = 300 new Extension( "baz", "1.0", null, null, null, null, null ); 301 final Extension extension2 = 302 new Extension( "baz", "0.9", null, null, null, null, null ); 303 assertEquals( Extension.COMPATIBLE, 304 extension1.getCompatibilityWith( extension2 ) ); 305 } 306 307 public void testCompatabilityRezultsCompatEqVersion() 308 throws Exception 309 { 310 final Extension extension1 = 311 new Extension( "baz", "1.0", null, null, null, null, null ); 312 final Extension extension2 = 313 new Extension( "baz", "1.0", null, null, null, null, null ); 314 assertEquals( Extension.COMPATIBLE, 315 extension1.getCompatibilityWith( extension2 ) ); 316 } 317 318 public void testCompatabilityRezultsInCompatWIthNonNullSpecVersion() 319 throws Exception 320 { 321 final Extension extension1 = 322 new Extension( "baz", null, null, null, null, null, null ); 323 final Extension extension2 = 324 new Extension( "baz", "1.0", null, null, null, null, null ); 325 assertEquals( Extension.REQUIRE_SPECIFICATION_UPGRADE, 326 extension1.getCompatibilityWith( extension2 ) ); 327 } 328 329 public void testCompatabilityRezultsInCompatWIthNullSpecVersion() 330 throws Exception 331 { 332 final Extension extension1 = 333 new Extension( "baz", "1.0", null, null, null, null, null ); 334 final Extension extension2 = 335 new Extension( "baz", null, null, null, null, null, null ); 336 assertEquals( Extension.COMPATIBLE, 337 extension1.getCompatibilityWith( extension2 ) ); 338 } 339 340 public void testCompatabilityRezultsInCompatForVendorID() 341 throws Exception 342 { 343 final Extension extension1 = 344 new Extension( "baz", null, null, null, null, "Bob", null ); 345 final Extension extension2 = 346 new Extension( "baz", null, null, null, null, "Bob", null ); 347 assertEquals( Extension.COMPATIBLE, 348 extension1.getCompatibilityWith( extension2 ) ); 349 } 350 351 public void testCompatabilityRezultsInCompatForNullVendorID() 352 throws Exception 353 { 354 final Extension extension1 = 355 new Extension( "baz", null, null, null, null, null, null ); 356 final Extension extension2 = 357 new Extension( "baz", null, null, null, null, "Bob", null ); 358 assertEquals( Extension.REQUIRE_VENDOR_SWITCH, 359 extension1.getCompatibilityWith( extension2 ) ); 360 } 361 362 public void testCompatabilityRezultsInIncompatForNullVendorID() 363 throws Exception 364 { 365 final Extension extension1 = 366 new Extension( "baz", null, null, null, null, null, null ); 367 final Extension extension2 = 368 new Extension( "baz", null, null, null, null, "Bob", null ); 369 assertEquals( Extension.REQUIRE_VENDOR_SWITCH, 370 extension1.getCompatibilityWith( extension2 ) ); 371 } 372 373 private Manifest getManifest( final String manifestString ) 374 throws IOException 375 { 376 final ByteArrayInputStream stream = 377 new ByteArrayInputStream( manifestString.getBytes() ); 378 return new Manifest( stream ); 379 } 380 }

This page was automatically generated by Maven