1 87 package org.codehaus.loom.components.extension; 88 89 import java.io.File ; 90 import junit.framework.TestCase; 91 92 import org.codehaus.loom.components.extensions.pkgmgr.ExtensionManager; 93 import org.codehaus.loom.components.extensions.pkgmgr.OptionalPackage; 94 import org.codehaus.loom.components.extensions.pkgmgr.impl.DelegatingExtensionManager; 95 import org.codehaus.loom.extension.Extension; 96 97 103 public class ComparatorTestCase 104 extends TestCase 105 { 106 private static final String NAME = "Extension1"; 107 private static final String VENDOR1 = "Vendor1"; 108 private static final String VENDOR2 = "Vendor2"; 109 110 public ComparatorTestCase( final String name ) 111 { 112 super( name ); 113 } 114 115 public void testAllNull() 116 { 117 runCompareTest( null, null, null, null, VENDOR1, VENDOR2 ); 118 } 119 120 public void testSpecNonNullV1() 121 { 122 runCompareTest( "1.0", null, "1.1", null, VENDOR2, VENDOR1 ); 123 } 124 125 public void testSpecNonNullV2() 126 { 127 runCompareTest( "1.1", null, "1.0", null, VENDOR1, VENDOR2 ); 128 } 129 130 public void testSpecNonNullV3() 131 { 132 runCompareTest( "1.1", null, "1.1", null, VENDOR1, VENDOR2 ); 133 } 134 135 public void testSpec1Null() 136 { 137 runCompareTest( null, null, "1.1", null, VENDOR2, VENDOR1 ); 138 } 139 140 public void testSpec2Null() 141 { 142 runCompareTest( "1.1", null, null, null, VENDOR1, VENDOR2 ); 143 } 144 145 public void testImplNull() 146 { 147 runCompareTest( "1.0", null, "1.0", null, VENDOR1, VENDOR2 ); 148 } 149 150 public void testImplNonNullV1() 151 { 152 runCompareTest( "1.0", "1.1", "1.0", "1.0", VENDOR1, VENDOR2 ); 153 } 154 155 public void testImplNonNullV2() 156 { 157 runCompareTest( "1.0", "1.0", "1.0", "1.1", VENDOR2, VENDOR1 ); 158 } 159 160 public void testImplNonNullV3() 161 { 162 runCompareTest( "1.0", "1.1", "1.0", "1.1", VENDOR1, VENDOR2 ); 163 } 164 165 public void testImpl1Null() 166 { 167 runCompareTest( "1.0", null, "1.0", "1.1", VENDOR2, VENDOR1 ); 168 } 169 170 public void testImpl2Null() 171 { 172 runCompareTest( "1.0", "1.1", "1.0", null, VENDOR1, VENDOR2 ); 173 } 174 175 private void runCompareTest( final String specVersion1, 176 final String implVersion1, 177 final String specVersion2, 178 final String implVersion2, 179 final String vendor1, 180 final String vendor2 ) 181 { 182 final ExtensionManager manager = 183 createExtensionManager( specVersion1, 184 implVersion1, 185 specVersion2, 186 implVersion2 ); 187 final OptionalPackage[] pkgs = getOptionalPackages( manager ); 188 189 assertEquals( "pkgs.length", 2, pkgs.length ); 190 191 final Extension extension1 = pkgs[ 0 ].getAvailableExtensions()[ 0 ]; 192 final Extension extension2 = pkgs[ 1 ].getAvailableExtensions()[ 0 ]; 193 assertEquals( "pkgs[0].vendor", 194 vendor1, 195 extension1.getImplementationVendor() ); 196 assertEquals( "pkgs[1].vendor", 197 vendor2, 198 extension2.getImplementationVendor() ); 199 } 200 201 private OptionalPackage[] getOptionalPackages( 202 final ExtensionManager manager ) 203 { 204 return manager.getOptionalPackages( 205 new Extension( NAME, null, null, null, null, null, null ) ); 206 } 207 208 private ExtensionManager createExtensionManager( final String specVersion1, 209 final String implVersion1, 210 final String specVersion2, 211 final String implVersion2 ) 212 { 213 final OptionalPackage optionalPackage1 = 214 createPackage( VENDOR1, specVersion1, implVersion1 ); 215 final OptionalPackage optionalPackage2 = 216 createPackage( VENDOR2, specVersion2, implVersion2 ); 217 final OptionalPackage[] pkgs = 218 new OptionalPackage[]{optionalPackage1, optionalPackage2}; 219 return createExtensionManager( pkgs ); 220 } 221 222 private OptionalPackage createPackage( final String vendor, 223 final String specVersion, 224 final String implVersion ) 225 { 226 final Extension extension = new Extension( NAME, 227 specVersion, null, 228 implVersion, vendor, null, 229 null ); 230 final File file = new File ( "." ); 231 final Extension[] available = new Extension[]{extension}; 232 final Extension[] required = new Extension[ 0 ]; 233 return new OptionalPackage( file, available, required ); 234 } 235 236 private ExtensionManager createExtensionManager( 237 final OptionalPackage[] packages ) 238 { 239 final TestExtensionManager manager = 240 new TestExtensionManager( packages ); 241 return new DelegatingExtensionManager( new ExtensionManager[]{manager} ); 242 } 243 } 244 | Popular Tags |