Bug 490273 - Move tests to JUnit 4

Port of security tests

Change-Id: I356c711a6519629d037ceb47a92305b685f72287
Signed-off-by: Sopot Cela <scela@redhat.com>
Signed-off-by: Thomas Watson <tjwatson@us.ibm.com>
diff --git a/bundles/org.eclipse.equinox.security.tests/.classpath b/bundles/org.eclipse.equinox.security.tests/.classpath
index 2fbb7a2..64c5e31 100644
--- a/bundles/org.eclipse.equinox.security.tests/.classpath
+++ b/bundles/org.eclipse.equinox.security.tests/.classpath
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="output" path="bin"/>
diff --git a/bundles/org.eclipse.equinox.security.tests/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.security.tests/.settings/org.eclipse.jdt.core.prefs
index bc54588..cad33f4 100644
--- a/bundles/org.eclipse.equinox.security.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.security.tests/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +1,3 @@
-#Tue Jan 22 17:24:37 EST 2008
 eclipse.preferences.version=1
 instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true
 org.eclipse.jdt.core.builder.cleanOutputFolder=clean
@@ -8,24 +7,24 @@
 org.eclipse.jdt.core.circularClasspath=error
 org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
 org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.compliance=1.5
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
 org.eclipse.jdt.core.compiler.doc.comment.support=enabled
 org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
 org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
 org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
 org.eclipse.jdt.core.compiler.problem.deprecation=warning
 org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
 org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
 org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
 org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
 org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
 org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
 org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
@@ -84,7 +83,7 @@
 org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
 org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
+org.eclipse.jdt.core.compiler.source=1.5
 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -156,7 +155,12 @@
 org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
 org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
 org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
 org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
 org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
diff --git a/bundles/org.eclipse.equinox.security.tests/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.security.tests/META-INF/MANIFEST.MF
index b2a5243..29ea781 100644
--- a/bundles/org.eclipse.equinox.security.tests/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.security.tests/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@
 Bundle-SymbolicName: org.eclipse.equinox.security.tests;singleton:=true
 Bundle-Version: 1.0.100.qualifier
 Bundle-Activator: org.eclipse.equinox.internal.security.tests.SecurityTestsActivator
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-Vendor: Eclipse.org
 Require-Bundle: org.eclipse.core.tests.harness;bundle-version="3.4.0",
  org.junit,
diff --git a/bundles/org.eclipse.equinox.security.tests/build.properties b/bundles/org.eclipse.equinox.security.tests/build.properties
index af62407..4c0bfa3 100644
--- a/bundles/org.eclipse.equinox.security.tests/build.properties
+++ b/bundles/org.eclipse.equinox.security.tests/build.properties
@@ -13,9 +13,7 @@
 bin.includes = META-INF/,\
                .,\
                about.html,\
-               plugin.xml,\
                Plugin_Testing/,\
                test.xml,\
                SecurePrefsSample/
-src.includes = about.html,\
-               src/
+src.includes = about.html
diff --git a/bundles/org.eclipse.equinox.security.tests/plugin.xml b/bundles/org.eclipse.equinox.security.tests/plugin.xml
deleted file mode 100644
index 50c2e31..0000000
--- a/bundles/org.eclipse.equinox.security.tests/plugin.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.2"?>
-<plugin>
-   
-</plugin>
diff --git a/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/Base64Test.java b/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/Base64Test.java
index 5e2aa3a..1ee550f 100644
--- a/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/Base64Test.java
+++ b/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/Base64Test.java
@@ -10,11 +10,15 @@
  *******************************************************************************/
 package org.eclipse.equinox.internal.security.tests.storage;
 
-import java.util.Random;
-import junit.framework.*;
-import org.eclipse.equinox.security.storage.EncodingUtils;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
 
-public class Base64Test extends TestCase {
+import java.util.Random;
+import org.eclipse.equinox.security.storage.EncodingUtils;
+import org.junit.Test;
+
+public class Base64Test {
 
 	/**
 	 * Number of random-generated round trip tests to run
@@ -39,17 +43,10 @@
 	final private static String decoded6 = "a";
 	final private static String encoded6 = "YQ=="; // tests array bounds
 
-	public Base64Test() {
-		super();
-	}
-
-	public Base64Test(String name) {
-		super(name);
-	}
-
 	/**
 	 * Tests encoding using hand-calculated examples.
 	 */
+	@Test
 	public void testHandCoded() {
 		String encoded = EncodingUtils.encodeBase64(decoded1.getBytes());
 		assertEquals(encoded1, encoded);
@@ -75,6 +72,7 @@
 	/**
 	 * Tests edge conditions: null or empty arguments 
 	 */
+	@Test
 	public void testEdge() {
 		assertNull(EncodingUtils.encodeBase64(null));
 		assertNull(EncodingUtils.decodeBase64(null));
@@ -90,6 +88,7 @@
 	/**
 	 * Tests round trip using large random sequences 
 	 */
+	@Test
 	public void testRandom() {
 		Random generator = new Random(System.currentTimeMillis());
 
@@ -114,7 +113,4 @@
 			assertEquals(array1[i], array2[i]);
 	}
 
-	public static Test suite() {
-		return new TestSuite(Base64Test.class);
-	}
 }
diff --git a/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/DefaultPreferencesTest.java b/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/DefaultPreferencesTest.java
index edc591a..30662e8 100644
--- a/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/DefaultPreferencesTest.java
+++ b/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/DefaultPreferencesTest.java
@@ -10,9 +10,6 @@
  *******************************************************************************/
 package org.eclipse.equinox.internal.security.tests.storage;
 
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
 /**
  * Uses whatever default module is provided for the current installation.
  */
@@ -21,8 +18,4 @@
 	protected String getModuleID() {
 		return null;
 	}
-
-	public static Test suite() {
-		return new TestSuite(DefaultPreferencesTest.class);
-	}
 }
diff --git a/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/DynamicPreferencesTest.java b/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/DynamicPreferencesTest.java
index 53013b3..34aad9c 100644
--- a/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/DynamicPreferencesTest.java
+++ b/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/DynamicPreferencesTest.java
@@ -10,17 +10,20 @@
  *******************************************************************************/
 package org.eclipse.equinox.internal.security.tests.storage;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.Map;
-import junit.framework.Test;
-import junit.framework.TestSuite;
 import org.eclipse.core.tests.harness.BundleTestingHelper;
 import org.eclipse.equinox.internal.security.storage.StorageUtils;
 import org.eclipse.equinox.internal.security.tests.SecurityTestsActivator;
 import org.eclipse.equinox.security.storage.ISecurePreferences;
 import org.eclipse.equinox.security.storage.StorageException;
+import org.junit.Test;
 import org.osgi.framework.*;
 
 /**
@@ -43,14 +46,6 @@
 	final private static String clearTextKey = "data";
 	final private static String clearTextValue = "-> this should not be encrypted <-";
 
-	public DynamicPreferencesTest() {
-		super();
-	}
-
-	public DynamicPreferencesTest(String name) {
-		super(name);
-	}
-
 	private void check(ISecurePreferences prefs) throws StorageException {
 		ISecurePreferences node1 = prefs.node("/abc");
 		assertEquals(value, node1.get(key, defaultValue));
@@ -60,6 +55,7 @@
 	/**
 	 * Test dynamic behavior while secure preferences remain in memory
 	 */
+	@Test
 	public void testDynamicMemory() throws Exception {
 
 		Bundle bundle01 = null;
@@ -110,6 +106,7 @@
 	/**
 	 * Test dynamic behavior with persisted secure preferences
 	 */
+	@Test
 	public void testDynamicPersisted() throws Exception {
 		URL location = getStorageLocation();
 		assertNotNull(location);
@@ -176,7 +173,7 @@
 		assertTrue(exception);
 	}
 
-	protected Map getOptions() {
+	protected Map<String, Object> getOptions() {
 		// Don't specify default password for those tests; they need to have 
 		// password providers 
 		return getOptions(null);
@@ -226,7 +223,4 @@
 		}
 	}
 
-	public static Test suite() {
-		return new TestSuite(DynamicPreferencesTest.class);
-	}
 }
diff --git a/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/ManualTest.java b/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/ManualTest.java
index c53e40f..60caeb3 100644
--- a/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/ManualTest.java
+++ b/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/ManualTest.java
@@ -10,34 +10,29 @@
  *******************************************************************************/
 package org.eclipse.equinox.internal.security.tests.storage;
 
+import static org.junit.Assert.assertEquals;
+
 import java.io.IOException;
 import java.security.Provider;
 import java.security.Security;
 import java.util.*;
-import junit.framework.*;
 import org.eclipse.equinox.security.storage.*;
 import org.eclipse.equinox.security.storage.provider.IProviderHints;
+import org.junit.Test;
 
 /**
  * This is a semi-manual test; expected to be run with modules requiring
  * UI interactions. Set configuration before executing this so that desired
  * storage module is selected.
  */
-public class ManualTest extends TestCase {
+public class ManualTest {
 
 	static private final String JAVA_MODULE_ID = "org.eclipse.equinox.security.javaCrypt"; //$NON-NLS-1$
 
-	public ManualTest() {
-		super();
-	}
-
-	public ManualTest(String name) {
-		super(name);
-	}
-
 	final private String passwordSample = "uYTIU689_~@@/";
 	final private String loginSample = "cheburashka";
 
+	@Test
 	public void testBasic() {
 
 		// Note that this skips Alg.Alias.Cipher.ABC
@@ -45,8 +40,8 @@
 		// aliases from internal ones
 		Provider[] providers = Security.getProviders();
 		for (int i = 0; i < providers.length; i++) {
-			for (Iterator j = providers[i].entrySet().iterator(); j.hasNext();) {
-				Map.Entry entry = (Map.Entry) j.next();
+			for (Iterator<Map.Entry<Object, Object>> j = providers[i].entrySet().iterator(); j.hasNext();) {
+				Map.Entry<Object, Object> entry = j.next();
 				String key = (String) entry.getKey();
 				if (key == null)
 					continue;
@@ -75,8 +70,8 @@
 			[keyFactory] PBEWithSHA1AndDESede
 			[keyFactory] PBEWithMD5AndTripleDES
 			[keyFactory] PBEWithMD5AndDES
-
-
+			
+			
 			[cypher] DES
 			[cypher] Blowfish
 			[cypher] RC2
@@ -90,7 +85,7 @@
 			[cypher] PBEWithSHA1AndRC2_40
 			[cypher] PBEWithSHA1AndDESede
 			[cypher] DESedeWrap
-
+			
 			http://java.sun.com/javase/6/docs/technotes/guides/security/StandardNames.html#SecretKeyFactory
 			http://java.sun.com/j2se/1.4.2/docs/guide/security/jce/JCERefGuide.html#AppA
 			 */
@@ -100,9 +95,10 @@
 	/**
 	 * Manual test for Java module to see password prompt functionality
 	 */
+	@Test
 	public void testJavaModule() throws IOException, StorageException {
 		// manual test for the Java module
-		Map options = new HashMap(1);
+		Map<String, Object> options = new HashMap<String, Object>(1);
 		options.put(IProviderHints.REQUIRED_MODULE_ID, JAVA_MODULE_ID);
 		ISecurePreferences storage = SecurePreferencesFactory.open(null, options);
 		ISecurePreferences node = storage.node("/cvs/account1");
@@ -112,8 +108,4 @@
 		assertEquals(passwordSample, node.get("password", null));
 	}
 
-	public static Test suite() {
-		return new TestSuite(ManualTest.class);
-	}
-
 }
diff --git a/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/SecurePreferencesTest.java b/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/SecurePreferencesTest.java
index f6b945e..57648cf 100644
--- a/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/SecurePreferencesTest.java
+++ b/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/SecurePreferencesTest.java
@@ -10,17 +10,22 @@
  *******************************************************************************/
 package org.eclipse.equinox.internal.security.tests.storage;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.Map;
-import junit.framework.Test;
-import junit.framework.TestSuite;
 import org.eclipse.core.runtime.FileLocator;
 import org.eclipse.equinox.internal.security.storage.friends.InternalExchangeUtils;
 import org.eclipse.equinox.internal.security.tests.SecurityTestsActivator;
 import org.eclipse.equinox.security.storage.ISecurePreferences;
 import org.eclipse.equinox.security.storage.StorageException;
+import org.junit.Test;
 import org.osgi.framework.BundleContext;
 
 abstract public class SecurePreferencesTest extends StorageAbstractTest {
@@ -45,15 +50,7 @@
 	final private static String unicodeKey = "unicodeKey";
 	final private static String unicodeValue = "va\u0432lue\u0433";
 
-	public SecurePreferencesTest() {
-		super();
-	}
-
-	public SecurePreferencesTest(String name) {
-		super(name);
-	}
-
-	protected Map getOptions() {
+	protected Map<String, Object> getOptions() {
 		// Note that if the default password value below is modified, 
 		// the sample storage file needs to be regenerated.
 		return getOptions("password1");
@@ -125,6 +122,7 @@
 	 * Basic test to fill / read Preferences implementation. Also tests removal of a value
 	 * and Preferences#keys().
 	 */
+	@Test
 	public void testPreferences() throws IOException, StorageException {
 		URL location = getStorageLocation();
 		assertNotNull(location);
@@ -144,6 +142,7 @@
 	 * Test relative names, absolute names, and children names
 	 * @throws StorageException 
 	 */
+	@Test
 	public void testNames() throws IOException, StorageException {
 		ISecurePreferences preferences = newPreferences(getStorageLocation(), getOptions());
 		fill(preferences);
@@ -194,6 +193,7 @@
 	 * Test node existence, resolution: parent -> child; child -> parent, 
 	 * compare absolute and relative paths.
 	 */
+	@Test
 	public void testNodeResolution() throws IOException, StorageException {
 		ISecurePreferences preferences = newPreferences(getStorageLocation(), getOptions());
 		fill(preferences);
@@ -253,6 +253,7 @@
 	 * Tests node removal.
 	 * @throws StorageException 
 	 */
+	@Test
 	public void testNodeRemoval() throws IOException, StorageException {
 		URL location = getStorageLocation();
 		assertNotNull(location);
@@ -312,6 +313,7 @@
 	 * Tests validation of node paths.
 	 * @throws Throwable 
 	 */
+	@Test
 	public void testPathValidation() throws Throwable {
 		ISecurePreferences preferences = newPreferences(getStorageLocation(), getOptions());
 		boolean exception = false;
@@ -342,6 +344,7 @@
 	/**
 	 * Tests URL validation.
 	 */
+	@Test
 	public void testLocation() throws MalformedURLException {
 		URL invalidURL = new URL("http", "eclipse.org", "testEquinoxFile");
 		boolean exception = false;
@@ -359,6 +362,7 @@
 	 * @throws IOException 
 	 * @throws MalformedURLException 
 	 */
+	@Test
 	public void testDataTypes() throws StorageException, MalformedURLException, IOException {
 		ISecurePreferences preferences = newPreferences(getStorageLocation(), getOptions());
 
@@ -400,6 +404,7 @@
 	/**
 	 * Tests corrupted encrypted data.
 	 */
+	@Test
 	public void testIncorrectData() throws IOException {
 		URL location = getFilePath(sampleLocation);
 		// Same default password as in the SecurePreferencesTest.getOptions() - same note
@@ -433,9 +438,10 @@
 	/**
 	 * Tests incorrect passwords
 	 */
+	@Test
 	public void testIncorrectPassword() throws IOException {
 		URL location = getFilePath(sampleLocation);
-		Map options = getOptions("wrong");
+		Map<String, Object> options = getOptions("wrong");
 		ISecurePreferences preferences = newPreferences(location, options);
 		try {
 			ISecurePreferences node = preferences.node("/cvs/eclipse.org");
@@ -456,6 +462,7 @@
 	/**
 	 * Tests incorrect or unexpected module specifications
 	 */
+	@Test
 	public void testModules() throws IOException {
 		URL location = getFilePath(sampleLocation);
 		ISecurePreferences preferences = newPreferences(location, getOptions(null));
@@ -490,6 +497,7 @@
 	/**
 	 * Tests edge cases for data (nulls, empty strings, and so on).
 	 */
+	@Test
 	public void testEdgeCases() throws StorageException, MalformedURLException, IOException {
 		byte[] expectedEmptyArray = new byte[0];
 		byte[] wrongArray = new byte[] {1, 2, 3};
@@ -568,7 +576,4 @@
 		return FileLocator.toFileURL(url);
 	}
 
-	public static Test suite() {
-		return new TestSuite(SecurePreferencesTest.class);
-	}
 }
diff --git a/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/SlashEncodeTest.java b/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/SlashEncodeTest.java
index f33d6c8..c898a4f 100644
--- a/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/SlashEncodeTest.java
+++ b/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/SlashEncodeTest.java
@@ -10,25 +10,21 @@
  *******************************************************************************/
 package org.eclipse.equinox.internal.security.tests.storage;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
 import java.io.IOException;
 import java.net.URL;
 import java.util.Map;
-import junit.framework.Test;
-import junit.framework.TestSuite;
 import org.eclipse.equinox.internal.security.storage.StorageUtils;
 import org.eclipse.equinox.security.storage.*;
-import org.osgi.service.prefs.BackingStoreException;
+import org.junit.Test;
 
 public class SlashEncodeTest extends StorageAbstractTest {
 
-	public SlashEncodeTest() {
-		super();
-	}
-
-	public SlashEncodeTest(String name) {
-		super(name);
-	}
-
 	final private static String[] decodedSlash = {"root", "ro/ot", "/root", "root/", "ro/ot/me", "ro//ot"};
 	final private static String[] encodedSlash = {"root", "ro\\2fot", "\\2froot", "root\\2f", "ro\\2fot\\2fme", "ro\\2f\\2fot"};
 
@@ -41,6 +37,7 @@
 	/**
 	 * Tests forward slash
 	 */
+	@Test
 	public void testForwardSlash() {
 		for (int i = 0; i < decodedSlash.length; i++) {
 			String tmp = EncodingUtils.encodeSlashes(decodedSlash[i]);
@@ -52,6 +49,7 @@
 	/**
 	 * Tests backward slash
 	 */
+	@Test
 	public void testBackwardSlash() {
 		for (int i = 0; i < decodedBackSlash.length; i++) {
 			String tmp = EncodingUtils.encodeSlashes(decodedBackSlash[i]);
@@ -63,6 +61,7 @@
 	/**
 	 * Tests mixed slashes
 	 */
+	@Test
 	public void testMixSlash() {
 		for (int i = 0; i < decodedMixSlash.length; i++) {
 			String tmp = EncodingUtils.encodeSlashes(decodedMixSlash[i]);
@@ -74,6 +73,7 @@
 	/**
 	 * Tests edge conditions: null or empty arguments 
 	 */
+	@Test
 	public void testEdge() {
 		assertNull(EncodingUtils.encodeSlashes(null));
 		assertNull(EncodingUtils.decodeSlashes(null));
@@ -83,7 +83,7 @@
 		assertEquals("", encoded);
 	}
 
-	protected Map getOptions() {
+	protected Map<String, Object> getOptions() {
 		// Password value really doesn't matter here; we specify it to avoid
 		// triggering UI elements in case default password provider has the 
 		// highest priority in the tested configuration
@@ -96,6 +96,7 @@
 	 * @throws BackingStoreException 
 	 * @throws  
 	 */
+	@Test
 	public void testPreferencesWithSlashes() throws IOException, StorageException {
 		URL location = getStorageLocation();
 		assertNotNull(location);
@@ -125,8 +126,4 @@
 		}
 		StorageUtils.delete(location);
 	}
-
-	public static Test suite() {
-		return new TestSuite(SlashEncodeTest.class);
-	}
 }
diff --git a/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/StorageAbstractTest.java b/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/StorageAbstractTest.java
index 2b8d263..902f891 100644
--- a/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/StorageAbstractTest.java
+++ b/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/StorageAbstractTest.java
@@ -15,48 +15,40 @@
 import java.net.URL;
 import java.util.*;
 import javax.crypto.spec.PBEKeySpec;
-import junit.framework.TestCase;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.tests.harness.FileSystemHelper;
 import org.eclipse.equinox.internal.security.storage.*;
 import org.eclipse.equinox.security.storage.ISecurePreferences;
 import org.eclipse.equinox.security.storage.SecurePreferencesFactory;
 import org.eclipse.equinox.security.storage.provider.IProviderHints;
+import org.junit.After;
 
 /**
  * Temp directory is used for storage.
  */
-public class StorageAbstractTest extends TestCase {
+public class StorageAbstractTest {
 
 	final protected String defaultFileName = "secure_storage_test.equinox";
 
-	private List openPreferences = new ArrayList(5); // <ISecurePreferences>
-
-	public StorageAbstractTest() {
-		super();
-	}
-
-	public StorageAbstractTest(String name) {
-		super(name);
-	}
+	private List<ISecurePreferences> openPreferences = new ArrayList<ISecurePreferences>(5); // <ISecurePreferences>
 
 	protected String getModuleID() {
 		return null;
 	}
 
-	protected void tearDown() throws Exception {
+	@After
+	public void tearDown() throws Exception {
 		synchronized (openPreferences) {
-			for (Iterator i = openPreferences.iterator(); i.hasNext();) {
-				ISecurePreferences root = (ISecurePreferences) i.next();
+			for (Iterator<ISecurePreferences> i = openPreferences.iterator(); i.hasNext();) {
+				ISecurePreferences root = i.next();
 				SecurePreferencesMapper.close((((SecurePreferencesWrapper) root).getContainer().getRootData()));
 				URL location = ((SecurePreferencesWrapper) root).getContainer().getLocation();
 				StorageUtils.delete(location);
 			}
 		}
-		super.tearDown();
 	}
 
-	protected ISecurePreferences newPreferences(URL location, Map options) throws IOException {
+	protected ISecurePreferences newPreferences(URL location, Map<String, Object> options) throws IOException {
 		synchronized (openPreferences) {
 			ISecurePreferences result = SecurePreferencesFactory.open(location, options);
 			openPreferences.add(result);
@@ -66,8 +58,8 @@
 
 	protected void closePreferences(ISecurePreferences root) {
 		synchronized (openPreferences) {
-			for (Iterator i = openPreferences.iterator(); i.hasNext();) {
-				ISecurePreferences element = (ISecurePreferences) i.next();
+			for (Iterator<ISecurePreferences> i = openPreferences.iterator(); i.hasNext();) {
+				ISecurePreferences element = i.next();
 				if (element.equals(root)) {
 					SecurePreferencesMapper.close((((SecurePreferencesWrapper) root).getContainer().getRootData()));
 					i.remove();
@@ -76,8 +68,8 @@
 		}
 	}
 
-	protected Map getOptions(String defaultPassword) {
-		Map options = new HashMap();
+	protected Map<String, Object> getOptions(String defaultPassword) {
+		Map<String, Object> options = new HashMap<String, Object>();
 
 		if (defaultPassword != null) {
 			PBEKeySpec password = new PBEKeySpec(defaultPassword.toCharArray());
@@ -96,6 +88,7 @@
 	 * Might consider switching to configuration location.
 	 * @throws MalformedURLException 
 	 */
+	@SuppressWarnings("deprecation")
 	protected URL getStorageLocation() throws MalformedURLException {
 		IPath tempDir = FileSystemHelper.getTempDir();
 		tempDir = tempDir.append(defaultFileName);
diff --git a/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/WaitingRegistryListener.java b/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/WaitingRegistryListener.java
index 0c64801..dc95088 100644
--- a/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/WaitingRegistryListener.java
+++ b/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/WaitingRegistryListener.java
@@ -12,7 +12,6 @@
 
 import java.util.ArrayList;
 import java.util.List;
-import junit.framework.Assert;
 import org.eclipse.core.runtime.*;
 
 /**
@@ -21,12 +20,12 @@
  * @since 3.4
  * Copied from runtime tests
  */
-public class WaitingRegistryListener extends Assert implements IRegistryEventListener {
+public class WaitingRegistryListener extends org.junit.Assert implements IRegistryEventListener {
 
 	final static long MIN_WAIT_TIME = 100; // minimum wait time in milliseconds
 
-	private List extensionIDs; // String[]
-	private List extPointIDs; // String[]
+	private List<String> extensionIDs; // String[]
+	private List<String> extPointIDs; // String[]
 
 	private volatile boolean added;
 	private volatile boolean removed;
@@ -68,7 +67,7 @@
 
 	public synchronized String[] extensionsReceived(long timeout) {
 		if (extensionIDs != null)
-			return (String[]) extensionIDs.toArray(new String[extensionIDs.size()]);
+			return extensionIDs.toArray(new String[0]);
 		try {
 			wait(timeout);
 		} catch (InterruptedException e) {
@@ -76,12 +75,12 @@
 		}
 		if (extensionIDs == null)
 			return null;
-		return (String[]) extensionIDs.toArray(new String[extensionIDs.size()]);
+		return extensionIDs.toArray(new String[0]);
 	}
 
 	public synchronized String[] extPointsReceived(long timeout) {
 		if (extPointIDs != null)
-			return (String[]) extPointIDs.toArray(new String[extPointIDs.size()]);
+			return extPointIDs.toArray(new String[0]);
 		try {
 			wait(timeout);
 		} catch (InterruptedException e) {
@@ -89,7 +88,7 @@
 		}
 		if (extPointIDs == null)
 			return null;
-		return (String[]) extPointIDs.toArray(new String[extPointIDs.size()]);
+		return extPointIDs.toArray(new String[0]);
 	}
 
 	public synchronized int waitFor(int events, long maxTimeout) {
@@ -154,7 +153,7 @@
 	}
 
 	private void extensionsToString(IExtension[] extensions) {
-		extensionIDs = new ArrayList(extensions.length);
+		extensionIDs = new ArrayList<String>(extensions.length);
 		for (int i = 0; i < extensions.length; i++) {
 			IExtension extension = extensions[i];
 			extensionIDs.add(extension.getUniqueIdentifier());
@@ -181,7 +180,7 @@
 	}
 
 	private void extPointsToString(IExtensionPoint[] extensionPoints) {
-		extPointIDs = new ArrayList(extensionPoints.length);
+		extPointIDs = new ArrayList<String>(extensionPoints.length);
 		for (int i = 0; i < extensionPoints.length; i++)
 			extPointIDs.add(extensionPoints[i].getUniqueIdentifier());
 	}
diff --git a/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/WinPreferencesTest.java b/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/WinPreferencesTest.java
index d98fb09..6271a27 100644
--- a/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/WinPreferencesTest.java
+++ b/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/WinPreferencesTest.java
@@ -11,8 +11,9 @@
 package org.eclipse.equinox.internal.security.tests.storage;
 
 import java.util.Map;
-import junit.framework.Test;
-import junit.framework.TestSuite;
+import org.eclipse.equinox.internal.security.tests.SecurityTestsActivator;
+import org.junit.Before;
+import org.osgi.framework.*;
 
 /**
  * Tests Windows module, if available.
@@ -20,21 +21,40 @@
  */
 public class WinPreferencesTest extends SecurePreferencesTest {
 
+	final private static String WIN_BUNDLE = "org.eclipse.equinox.security.win32.x86";
+	final private static String WIN_64BIT_BUNDLE = "org.eclipse.equinox.security.win32.x86_64";
+	private boolean is64Bit = "x86-64".equals(SecurityTestsActivator.getDefault().getBundleContext().getProperty(Constants.FRAMEWORK_PROCESSOR));
+
+	@Before
+	public void setUp() {
+		org.junit.Assume.assumeTrue(hasBundle(is64Bit ? WIN_64BIT_BUNDLE : WIN_BUNDLE));
+	}
+
 	/**
 	 * Unique ID of the Windows module.
 	 */
 	static private final String WIN_MODULE_ID = "org.eclipse.equinox.security.WindowsPasswordProvider"; //$NON-NLS-1$
+	static private final String WIN_64BIT_MODULE_ID = "org.eclipse.equinox.security.WindowsPasswordProvider64bit"; //$NON-NLS-1$
 
 	protected String getModuleID() {
-		return WIN_MODULE_ID;
+		return is64Bit ? WIN_64BIT_MODULE_ID : WIN_MODULE_ID;
 	}
 
-	public static Test suite() {
-		return new TestSuite(WinPreferencesTest.class);
-	}
-
-	protected Map getOptions() {
+	protected Map<String, Object> getOptions() {
 		// Don't specify default password when testing specific password provider
 		return getOptions(null);
 	}
+
+	static private boolean hasBundle(String symbolicID) {
+		BundleContext context = SecurityTestsActivator.getDefault().getBundleContext();
+		Bundle[] bundles = context.getBundles();
+		for (int i = 0; i < bundles.length; i++) {
+			String bundleName = bundles[i].getSymbolicName();
+			if (!symbolicID.equals(bundleName))
+				continue;
+			int bundleState = bundles[i].getState();
+			return (bundleState != Bundle.INSTALLED) && (bundleState != Bundle.UNINSTALLED);
+		}
+		return false;
+	}
 }
diff --git a/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/security/tests/AllSecurityTests.java b/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/security/tests/AllSecurityTests.java
index 72deaaa..10a6978 100644
--- a/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/security/tests/AllSecurityTests.java
+++ b/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/security/tests/AllSecurityTests.java
@@ -10,57 +10,17 @@
  *******************************************************************************/
 package org.eclipse.equinox.security.tests;
 
-import junit.framework.*;
-import org.eclipse.equinox.internal.security.tests.SecurityTestsActivator;
 import org.eclipse.equinox.internal.security.tests.storage.*;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
 
 /**
  * As tests use registry listeners, UI listeners might cause tests to time out and fail.
  * As such this tests should be run in a headless mode.
  */
-public class AllSecurityTests extends TestCase {
-
-	final private static String WIN_BUNDLE = "org.eclipse.equinox.security.win32.x86";
-
-	public AllSecurityTests() {
-		super(null);
-	}
-
-	public AllSecurityTests(String name) {
-		super(name);
-	}
-
-	public static Test suite() {
-		TestSuite suite = new TestSuite(AllSecurityTests.class.getName());
-
-		// stand-alone test for Base64
-		suite.addTest(Base64Test.suite());
-		// test node names encoding ("slash eliminator")
-		suite.addTest(SlashEncodeTest.suite());
-		//  tests secure Preferences functionality using default provider
-		suite.addTest(DefaultPreferencesTest.suite());
-		// check dynamic additions / removals
-		suite.addTest(DynamicPreferencesTest.suite());
-
-		// testing Windows-specific path should only be attempted if bundle is resolved
-		if (hasBundle(WIN_BUNDLE))
-			suite.addTest(WinPreferencesTest.suite());
-
-		return suite;
-	}
-
-	static private boolean hasBundle(String symbolicID) {
-		BundleContext context = SecurityTestsActivator.getDefault().getBundleContext();
-		Bundle[] bundles = context.getBundles();
-		for (int i = 0; i < bundles.length; i++) {
-			String bundleName = bundles[i].getSymbolicName();
-			if (!symbolicID.equals(bundleName))
-				continue;
-			int bundleState = bundles[i].getState();
-			return (bundleState != Bundle.INSTALLED) && (bundleState != Bundle.UNINSTALLED);
-		}
-		return false;
-	}
+@RunWith(Suite.class)
+@SuiteClasses({Base64Test.class, SlashEncodeTest.class, DefaultPreferencesTest.class, DynamicPreferencesTest.class, WinPreferencesTest.class})
+public class AllSecurityTests {
+	//see @SuiteClasses
 }