1 17 18 package org.apache.avalon.extension.manager.impl.test; 19 20 import java.io.File ; 21 22 import junit.framework.TestCase; 23 24 import org.apache.avalon.extension.Extension; 25 import org.apache.avalon.extension.manager.ExtensionManager; 26 import org.apache.avalon.extension.manager.OptionalPackage; 27 import org.apache.avalon.extension.manager.impl.DelegatingExtensionManager; 28 29 35 public class ComparatorTestCase 36 extends TestCase 37 { 38 private static final String NAME = "Extension1"; 39 private static final String VENDOR1 = "Vendor1"; 40 private static final String VENDOR2 = "Vendor2"; 41 42 public ComparatorTestCase( final String name ) 43 { 44 super( name ); 45 } 46 47 public void testAllNull() 48 { 49 runCompareTest( null, null, null, null, VENDOR1, VENDOR2 ); 50 } 51 52 public void testSpecNonNullV1() 53 { 54 runCompareTest( "1.0", null, "1.1", null, VENDOR2, VENDOR1 ); 55 } 56 57 public void testSpecNonNullV2() 58 { 59 runCompareTest( "1.1", null, "1.0", null, VENDOR1, VENDOR2 ); 60 } 61 62 public void testSpecNonNullV3() 63 { 64 runCompareTest( "1.1", null, "1.1", null, VENDOR1, VENDOR2 ); 65 } 66 67 public void testSpec1Null() 68 { 69 runCompareTest( null, null, "1.1", null, VENDOR2, VENDOR1 ); 70 } 71 72 public void testSpec2Null() 73 { 74 runCompareTest( "1.1", null, null, null, VENDOR1, VENDOR2 ); 75 } 76 77 public void testImplNull() 78 { 79 runCompareTest( "1.0", null, "1.0", null, VENDOR1, VENDOR2 ); 80 } 81 82 public void testImplNonNullV1() 83 { 84 runCompareTest( "1.0", "1.1", "1.0", "1.0", VENDOR1, VENDOR2 ); 85 } 86 87 public void testImplNonNullV2() 88 { 89 runCompareTest( "1.0", "1.0", "1.0", "1.1", VENDOR2, VENDOR1 ); 90 } 91 92 public void testImplNonNullV3() 93 { 94 runCompareTest( "1.0", "1.1", "1.0", "1.1", VENDOR1, VENDOR2 ); 95 } 96 97 public void testImpl1Null() 98 { 99 runCompareTest( "1.0", null, "1.0", "1.1", VENDOR2, VENDOR1 ); 100 } 101 102 public void testImpl2Null() 103 { 104 runCompareTest( "1.0", "1.1", "1.0", null, VENDOR1, VENDOR2 ); 105 } 106 107 private void runCompareTest( final String specVersion1, 108 final String implVersion1, 109 final String specVersion2, 110 final String implVersion2, 111 final String vendor1, 112 final String vendor2 ) 113 { 114 final ExtensionManager manager = 115 createExtensionManager( specVersion1, implVersion1, specVersion2, implVersion2 ); 116 final OptionalPackage[] pkgs = getOptionalPackages( manager ); 117 118 assertEquals( "pkgs.length", 2, pkgs.length ); 119 120 final Extension extension1 = pkgs[ 0 ].getAvailableExtensions()[ 0 ]; 121 final Extension extension2 = pkgs[ 1 ].getAvailableExtensions()[ 0 ]; 122 assertEquals( "pkgs[0].vendor", vendor1, extension1.getImplementationVendor() ); 123 assertEquals( "pkgs[1].vendor", vendor2, extension2.getImplementationVendor() ); 124 } 125 126 private OptionalPackage[] getOptionalPackages( final ExtensionManager manager ) 127 { 128 return manager.getOptionalPackages( new Extension( NAME, null, null, null, null, null, null ) ); 129 } 130 131 private ExtensionManager createExtensionManager( final String specVersion1, 132 final String implVersion1, 133 final String specVersion2, 134 final String implVersion2 ) 135 { 136 final OptionalPackage optionalPackage1 = 137 createPackage( VENDOR1, specVersion1, implVersion1 ); 138 final OptionalPackage optionalPackage2 = 139 createPackage( VENDOR2, specVersion2, implVersion2 ); 140 final OptionalPackage[] pkgs = 141 new OptionalPackage[]{optionalPackage1, optionalPackage2}; 142 return createExtensionManager( pkgs ); 143 } 144 145 private OptionalPackage createPackage( final String vendor, 146 final String specVersion, 147 final String implVersion ) 148 { 149 final Extension extension = new Extension( NAME, 150 specVersion, null, 151 implVersion, vendor, null, 152 null ); 153 final File file = new File ( "." ); 154 final Extension[] available = new Extension[]{extension}; 155 final Extension[] required = new Extension[ 0 ]; 156 return new OptionalPackage( file, available, required ); 157 } 158 159 private ExtensionManager createExtensionManager( final OptionalPackage[] packages ) 160 { 161 final TestExtensionManager manager = 162 new TestExtensionManager( packages ); 163 return new DelegatingExtensionManager( new ExtensionManager[]{manager} ); 164 } 165 } 166 | Popular Tags |