You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ml...@apache.org on 2006/06/13 10:58:17 UTC

svn commit: r413841 [4/9] - in /incubator/harmony/enhanced/classlib/trunk/modules/security/src: main/java/common/java/security/ test/api/java.injected/java/security/ test/api/java/org/apache/harmony/security/tests/java/security/ test/impl/java.injected...

Added: incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/Provider_ImplTest.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/Provider_ImplTest.java?rev=413841&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/Provider_ImplTest.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/Provider_ImplTest.java Tue Jun 13 01:58:11 2006
@@ -0,0 +1,100 @@
+/*
+ *  Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+/**
+* @author Boris V. Kuznetsov
+* @version $Revision$
+*/
+
+package java.security;
+
+import java.util.HashMap;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests for <code>Provider</code> constructor and methods
+ * 
+ */
+public class Provider_ImplTest extends TestCase {
+
+    Provider p;
+    
+    /*
+     * @see TestCase#setUp()
+     */
+    protected void setUp() throws Exception {
+        super.setUp();
+        p = new MyProvider();
+    }
+
+    /*
+     * Class under test for String toString()
+     */
+    public final void testToString() {
+        assertEquals("Incorrect provider.toString()",
+                "MyProvider provider, Ver. 1.0 Provider for testing", p
+                        .toString());
+    }
+ 
+    public final void testImplementsAlg() {
+        HashMap hm = new HashMap();
+        hm.put("KeySize", "1024");
+        hm.put("AAA", "BBB");
+        Provider.Service s = new Provider.Service(p, "Type", "Algorithm",
+                "className", null, hm);
+        p.putService(s);
+        if (!p.implementsAlg("Type", "Algorithm", null, null) ||
+                !p.implementsAlg("MessageDigest", "SHA-1", null, null)) {
+            fail("Case 1. implementsAlg failed");
+        }
+        if (!p.implementsAlg("Type", "Algorithm", "KeySize", "512")) {
+            fail("Case 2. implementsAlg failed");
+        }
+        if (p.implementsAlg("Type", "Algorithm", "KeySize", "1025")) {
+            fail("Case 3. implementsAlg failed");
+        }
+        if (!p.implementsAlg("Type", "Algorithm", "AAA", "BBB")) {
+            fail("Case 3. implementsAlg failed");
+        }    
+    }
+
+    public final void testSetProviderNumber() {
+        p.setProviderNumber(100);
+        assertEquals("Incorrect ProviderNumber", 100, p.getProviderNumber());
+    }
+
+    public final void testGetProviderNumber() {
+        assertEquals("Incorrect ProviderNumber", -1, p.getProviderNumber());
+        
+        int i = Security.addProvider(p);
+        assertEquals("Incorrect ProviderNumber", i, p.getProviderNumber());
+        Security.removeProvider(p.getName());    // clean up
+    }
+
+    class MyProvider extends Provider {
+        MyProvider() {
+            super("MyProvider", 1.0, "Provider for testing");
+            put("MessageDigest.SHA-1", "SomeClassName");
+            put("MessageDigest.abc", "SomeClassName");
+            put("Alg.Alias.MessageDigest.SHA1", "SHA-1");
+        }
+        
+        MyProvider(String name, double version, String info) {
+            super(name, version, info);
+        }
+    }
+}

Added: incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/Security_ImplTest.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/Security_ImplTest.java?rev=413841&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/Security_ImplTest.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/Security_ImplTest.java Tue Jun 13 01:58:11 2006
@@ -0,0 +1,225 @@
+/*
+ *  Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+/**
+* @author Boris V. Kuznetsov
+* @version $Revision$
+*/
+
+package java.security;
+
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+
+/**
+ * Tests for <code>Security</code> constructor and methods
+ * 
+ */
+public class Security_ImplTest extends TestCase {
+
+    public final void testGetAlgorithmProperty() {
+        assertNull("Incorrect result on null parameter", Security
+                .getAlgorithmProperty(null, "MyService"));
+        assertNull("Incorrect result on null parameter", Security
+                .getAlgorithmProperty("MyAlgorithm", null));
+        assertNull("Incorrect result (provider not added)", Security
+                .getAlgorithmProperty("MyAlgorithm", "MyService"));
+
+        Provider p = new MyProvider();
+        Security.addProvider(p);
+        try {
+            assertEquals("Incorrect result (provider added)",
+                    "SomeClassName", Security.getAlgorithmProperty("MyAlGoriThm", "MySerVicE"));    
+        } finally { //clean up
+            Security.removeProvider(p.getName());
+        }
+    }
+
+    /*
+     * Class under test for Provider[] getProviders()
+     */
+    public final void testGetProviders() {
+        Provider[] providers;
+
+        providers = Security.getProviders();
+        for (int i = 0; i < providers.length; i++) {
+            // position is 1-based
+            assertEquals("Incorrect provider number", i + 1, providers[i]
+                    .getProviderNumber());
+        }
+    }
+
+    /*
+     * Class under test for Provider[] getProviders(String)
+     */
+    public final void testGetProvidersString() {
+        Provider[] providers;
+        try {
+            Security.getProviders("");
+            fail("No expected InvalidParameterException");
+        } catch (InvalidParameterException e) {
+        }
+
+        try {
+            Security.getProviders((String) null);
+            fail("No expected NullPointerException");
+        } catch (NullPointerException e) {
+        }
+
+        try {
+            Security.getProviders("AAA.BBB CCC");
+            fail("AAA.BBB CCC: No expected InvalidParameterException");
+        } catch (InvalidParameterException e) {
+        }
+
+        Provider p = new MyProvider();
+
+        try {
+            Security.addProvider(p);
+            providers = Security.getProviders("MyService.MyAlgorithm");
+            assertTrue("failed for MyService.MyAlgorithm", providers != null);
+            assertEquals("failed for MyService.MyAlgorithm", 1,
+                    providers.length);
+            assertEquals("failed for MyService.MyAlgorithm", p, providers[0]);
+            if (providers == null || providers.length != 1 || providers[0] != p) {
+                fail("fail for MyService.MyAlgorithm");
+            }
+
+            providers = Security
+                    .getProviders("MyService.MyAlgorithm KeySize:512");
+            assertTrue("failed for MyService.MyAlgorithm KeySize:512",
+                    providers != null);
+            assertEquals("failed for MyService.MyAlgorithm KeySize:512", 1,
+                    providers.length);
+            assertEquals("failed for MyService.MyAlgorithm KeySize:512", p,
+                    providers[0]);
+
+            providers = Security
+                    .getProviders("MyService.MyAlgorithm KeySize:1025");
+            assertNull("failed for MyService.MyAlgorithm KeySize:1025",
+                    providers);
+
+        } finally { //clean up
+            Security.removeProvider(p.getName());
+        }
+    }
+
+    /*
+     * Class under test for Provider[] getProviders(Map)
+     */
+    public final void testGetProvidersMap() {
+        Provider[] providers;
+        Map m = new Properties();
+        Security.getProviders(m);
+        assertNull("Not null result on empty map", Security.getProviders(m));
+
+        try {
+            Security.getProviders((Map)null);
+            fail("No expected NullPointerException");
+        } catch (NullPointerException e) {    
+        }
+
+        m.clear();
+        m.put("AAA.BBB CCC", "");
+        m.put("AAA.BBB", "");
+        try {
+            Security.getProviders(m);
+            fail("attribute value is empty string: No expected InvalidParameterException");
+        } catch (InvalidParameterException  e) {    
+        }
+
+        m.clear();
+        m.put("AAA.BBB.CCC", "aaaa");
+        m.put("AAA.BBB", "");
+        try {
+            Security.getProviders(m);
+            fail("value associated with the key is not an empty string: No expected InvalidParameterException");
+        } catch (InvalidParameterException  e) {    
+        }
+
+        Provider p = new MyProvider();
+        try {
+            Security.addProvider(p);
+            m.clear();
+            m.put("MyService.MyAlgorithm", "");
+            m.put("MessageDigest.SHA-1", "");
+            providers = Security.getProviders(m);
+            assertNotNull("failed for MyService.MyAlgorithm", providers);
+            assertEquals("failed for MyService.MyAlgorithm", 1,
+                    providers.length);
+            assertEquals("failed for MyService.MyAlgorithm", p, providers[0]);
+            
+            m.clear();
+            m.put("MyService.MyAlgorithm KeySize", "512");
+            m.put("MessageDigest.SHA-1", "");
+            providers = Security.getProviders(m);
+            assertNotNull("failed for MyService.MyAlgorithm KeySize:512",
+                    providers);
+            assertEquals("failed for MyService.MyAlgorithm KeySize:512", 1,
+                    providers.length);
+            assertEquals("failed for MyService.MyAlgorithm KeySize:512", p,
+                    providers[0]);
+            
+            m.clear();
+            m.put("MyService.MyAlgorithm KeySize", "1025");
+            m.put("MessageDigest.SHA-1", "");
+            providers = Security.getProviders(m);
+            assertNull("failed for MyService.MyAlgorithm KeySize:1025",
+                    providers);
+        } finally { //clean up
+            Security.removeProvider(p.getName());
+        }
+    }
+
+    public final void testGetAlgorithms() {
+        Set alg1;
+        Set alg2;
+
+        alg1 = Security.getAlgorithms("AAAAAAAAAAAAAAA");
+        assertTrue("failed for non-existent service", alg1 != null);
+        assertEquals("failed for non-existent service", 0, alg1.size());
+
+        alg1 = Security.getAlgorithms("SecureRandom");
+        alg2 = Security.getAlgorithms("seCuReranDom");
+        assertEquals("different size", alg1.size(), alg2.size());
+        assertTrue("different content", alg2.containsAll(alg1));
+
+        Provider p = new MyProvider();
+
+        try {
+            Security.addProvider(p);
+            alg1 = Security.getAlgorithms("MyService");
+            assertEquals("failed for MyService", 1, alg1.size());
+            assertTrue("failed for MyService", alg1.contains("MyAlgorithm"));
+        } finally { //clean up
+            Security.removeProvider(p.getName());
+        }
+    }
+
+    class MyProvider extends Provider {
+        MyProvider() {
+            super("MyProvider", 1.0, "Provider for testing");
+            put("MessageDigest.SHA-1", "SomeClassName");
+            put("MyService.MyAlgorithm", "SomeClassName");
+            put("MyService.MyAlgorithm KeySize", "1024");
+        }
+    }
+
+}

Added: incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/Signature_Impl1Test.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/Signature_Impl1Test.java?rev=413841&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/Signature_Impl1Test.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/Signature_Impl1Test.java Tue Jun 13 01:58:11 2006
@@ -0,0 +1,102 @@
+/*
+ *  Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+/**
+* @author Boris V. Kuznetsov
+* @version $Revision$
+*/
+
+package java.security;
+
+import org.apache.harmony.security.tests.support.MySignature1;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests for <code>Signature</code> constructor and methods
+ * 
+ */
+public class Signature_Impl1Test extends TestCase {
+
+	/*
+	 * Class under test for int sign(byte[], int, int)
+	 */
+	public void testSignbyteArrayintint() {
+		MySignature1 s = new MySignature1("ABC");
+		byte[] b = new byte[8];
+		try {
+			s.sign(b, 0, 5);
+			fail("No expected SignatureException 1");
+		} catch (SignatureException e) {		
+		}
+		
+		try {
+			s.initVerify(new MyPublicKey());
+		} catch (InvalidKeyException e) {
+			fail(e.toString());
+		}
+		
+		try {
+			s.sign(b, 0, 5);
+			fail("No expected SignatureException 1");
+		} catch (SignatureException e) {		
+		}
+		
+		try {
+			s.initSign(new MyPrivateKey());
+		} catch (InvalidKeyException e) {
+			fail(e.toString());
+		}
+		
+		try {
+			s.sign(b, 0, 5);
+		} catch (SignatureException e) {
+			fail(e.toString());
+		}
+		if (s.getState() != Signature.SIGN) {
+			fail("Incorrect state");
+		}
+		if (!s.runEngineSign) {
+			fail("sign() failed");
+		}
+	}
+
+	/*
+	 * Class under test for String toString()
+	 */
+	public void testToString() {
+        MySignature1 s = new MySignature1("ABC");
+        assertEquals("toString() failed", "SIGNATURE ABC state: UNINITIALIZED",
+                s.toString());
+    }
+
+    private class MyKey implements Key {
+        public String getFormat() {
+            return "123";
+        }
+        public byte[] getEncoded() {
+            return null;
+        }
+        public String getAlgorithm() {
+            return "aaa";
+        }       
+    }
+    
+    private class MyPublicKey extends MyKey implements PublicKey {}
+
+    private class MyPrivateKey extends MyKey implements PrivateKey {}
+
+}

Copied: incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/Signature_Impl2Test.java (from r412639, incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/api/java.injected/java/security/Signature2Test.java)
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/Signature_Impl2Test.java?p2=incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/Signature_Impl2Test.java&p1=incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/api/java.injected/java/security/Signature2Test.java&r1=412639&r2=413841&rev=413841&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/api/java.injected/java/security/Signature2Test.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/Signature_Impl2Test.java Tue Jun 13 01:58:11 2006
@@ -30,7 +30,7 @@
  * Tests for <code>Signature</code> constructor and methods
  * 
  */
-public class Signature2Test extends TestCase {
+public class Signature_Impl2Test extends TestCase {
 
 	/**
 	 * Provider
@@ -57,294 +57,145 @@
 	/*
 	 * Class under test for Signature getInstance(String)
 	 */
-	public void testGetInstanceString1() {
-		Signature sig = null;
-		
-		try {
-			sig = Signature.getInstance("ABC");		
-		} catch (NoSuchAlgorithmException e) {
-			fail(e.toString());
-		}
+	public void testGetInstanceString1() throws Exception {
+		Signature sig = Signature.getInstance("ABC");		
 		checkSig1(sig, p);
 	}
 	
 	/*
 	 * Class under test for Signature getInstance(String)
 	 */
-	public void testGetInstanceString2() {
-		Signature sig = null;
-		
-		try {
-			sig = Signature.getInstance("CBA");
-		} catch (NoSuchAlgorithmException e) {
-			fail(e.toString());
-		}
+	public void testGetInstanceString2() throws Exception {
+		Signature sig = Signature.getInstance("CBA");
 		checkSig2(sig, p);
 	}
 
 	/*
 	 * Class under test for Signature getInstance(String, String)
 	 */
-	public void testGetInstanceStringString1() {
-		Signature sig = null;
-		
-		try {
-			sig = Signature.getInstance("ABC", "MyProvider");		
-		} catch (NoSuchAlgorithmException e) {
-			fail(e.toString());
-		} catch (NoSuchProviderException e) {
-			fail(e.toString());
-		}
+	public void testGetInstanceStringString1() throws Exception {
+		Signature sig = Signature.getInstance("ABC", "MyProvider");		
 		checkSig1(sig, p);
 	}
 	
 	/*
 	 * Class under test for Signature getInstance(String, String)
 	 */
-	public void testGetInstanceStringString2() {
-		Signature sig = null;
-		
-		try {
-			sig = Signature.getInstance("CBA", "MyProvider");
-		} catch (NoSuchAlgorithmException e) {
-			fail(e.toString());
-		} catch (NoSuchProviderException e) {
-			fail(e.toString());
-		}
+	public void testGetInstanceStringString2() throws Exception {
+		Signature sig = Signature.getInstance("CBA", "MyProvider");
 		checkSig2(sig, p);
-		
 	}
 
 
 	/*
 	 * Class under test for Signature getInstance(String, Provider)
 	 */
-	public void testGetInstanceStringProvider1() {
+	public void testGetInstanceStringProvider1() throws Exception {
 		Provider p1 = new MyProvider();
-		Signature sig = null;
-		
-		try {
-			sig = Signature.getInstance("ABC", p1);		
-		} catch (NoSuchAlgorithmException e) {
-			fail(e.toString());
-		}
+		Signature sig = Signature.getInstance("ABC", p1);		
 		checkSig1(sig, p1);
 	}
 	
 	/*
 	 * Class under test for Signature getInstance(String, Provider)
 	 */
-	public void testGetInstanceStringProvider2() {
+	public void testGetInstanceStringProvider2() throws Exception {
 		Provider p2 = new MyProvider();
-		Signature sig = null;
-		
-		try {
-			sig = Signature.getInstance("CBA", p2);
-		} catch (NoSuchAlgorithmException e) {
-			fail(e.toString());
-		}
+		Signature sig = Signature.getInstance("CBA", p2);
 		checkSig2(sig, p2);
 	}
 
-	private void checkSig1(Signature s, Provider p) {
-		byte[] b = {1, 2, 3, 4};
-		if (!(s instanceof MySignature1)) {
-			fail("getInstance() failed");
-		}
-		if (s.getProvider() != p) {
-			System.out.println(p);
-			System.out.println(s.getProvider());
-			fail("getProvider() failed");
-		}
-
-		if (!"ABC".equals(s.getAlgorithm())) {
-			fail("getAlgorithm() failed");			
-		}
-		try {
-			s.sign();
-			fail("No expected SignatureException");
-		} catch (SignatureException e) {		
-		}
-
-		try {
-			s.initVerify(new MyPublicKey());
-		} catch (InvalidKeyException e) {
-			fail(e.toString());
-		}
-		
-		try {
-			s.sign();
-			fail("No expected SignatureException");
-		} catch (SignatureException e) {		
-		}
-		
-		try {
-			s.initSign(new MyPrivateKey());
-		} catch (InvalidKeyException e) {
-			fail(e.toString());
-		}
-		try {
-			s.sign();
-		} catch (SignatureException e) {
-			fail(e.toString());
-		}
-		if (((MySignature1)s).getState() != Signature.SIGN) {
-			fail("Incorrect state");
-		}
-		if (!((MySignature1)s).runEngineSign) {
-			fail("sign() failed");
-		}
-		
-		try {
-			s.initVerify(new MyPublicKey());
-		} catch (InvalidKeyException e) {
-			fail(e.toString());
-		}
-		
-		try {
-			s.update((byte)1);
-		} catch (SignatureException e) {
-			fail(e.toString());
-		}
-		
-		try {
-			s.initSign(new MyPrivateKey());
-		} catch (InvalidKeyException e) {
-			fail(e.toString());
-		}
-		try {
-			s.update((byte)1);
-		} catch (SignatureException e) {
-			fail(e.toString());
-		}
-		if (((MySignature1)s).getState() != Signature.SIGN) {
-			fail("Incorrect state");
-		}
-		if (!((MySignature1)s).runEngineUpdate1) {
-			fail("update() failed");
-		}
-		
-		try {
-			s.initSign(new MyPrivateKey());
-		} catch (InvalidKeyException e) {
-			fail(e.toString());
-		}
-		
-		try {
-			s.verify(b);
-			fail("No expected SignatureException");
-		} catch (SignatureException e) {		
-		}
-		
-		try {
-			s.initVerify(new MyPublicKey());
-		} catch (InvalidKeyException e) {
-			fail(e.toString());
-		}
-		
-		try {
-			s.verify(b);
-		} catch (SignatureException e) {
-			fail(e.toString());
-		}
-		
-		if (((MySignature1)s).getState() != Signature.VERIFY) {
-			fail("Incorrect state");
-		}
-		if (!((MySignature1)s).runEngineVerify) {
-			fail("verify() failed");
-		}
-	}
+	private void checkSig1(Signature s, Provider p) throws Exception {
+        byte[] b = { 1, 2, 3, 4 };
+        assertTrue("getInstance() failed", s instanceof MySignature1);
+        assertEquals("getProvider() failed", p, s.getProvider());
+        assertEquals("getAlgorithm() failed", "ABC", s.getAlgorithm());
+
+        try {
+            s.sign();
+            fail("No expected SignatureException");
+        } catch (SignatureException e) {
+        }
+
+        s.initVerify(new MyPublicKey());
+
+        try {
+            s.sign();
+            fail("No expected SignatureException");
+        } catch (SignatureException e) {
+        }
+
+        s.initSign(new MyPrivateKey());
+        s.sign();
+        assertEquals("Incorrect state", Signature.SIGN, ((MySignature1) s)
+                .getState());
+        assertTrue("sign() failed", ((MySignature1) s).runEngineSign);
+
+        s.initVerify(new MyPublicKey());
+        s.update((byte) 1);
+
+        s.initSign(new MyPrivateKey());
+        s.update((byte) 1);
+
+        assertEquals("Incorrect state", Signature.SIGN, ((MySignature1) s)
+                .getState());
+        assertTrue("sign() failed", ((MySignature1) s).runEngineUpdate1);
+
+        s.initSign(new MyPrivateKey());
+
+        try {
+            s.verify(b);
+            fail("No expected SignatureException");
+        } catch (SignatureException e) {
+        }
+        s.initVerify(new MyPublicKey());
+        s.verify(b);
+        assertEquals("Incorrect state", Signature.VERIFY, ((MySignature1) s)
+                .getState());
+        assertTrue("verify() failed", ((MySignature1) s).runEngineVerify);
+    }
 	
-	private void checkSig2(Signature s, Provider p) {
-		byte[] b = {1, 2, 3, 4};
-		if (s.getProvider() != p) {
-			fail("getProvider() failed");
-		}
-		if (!"CBA".equals(s.getAlgorithm())) {
-			fail("getAlgorithm() failed");			
-		}
-		try {
-			s.initVerify(new MyCertificate());
-		} catch (InvalidKeyException e) {
-			fail(e.toString());
-		}
-		try {
-			s.sign(b, 0, 5);
-			fail("No expected SignatureException 1");
-		} catch (SignatureException e) {		
-		}
-		
-		try {
-			s.initSign(new MyPrivateKey());
-		} catch (InvalidKeyException e) {
-			fail(e.toString());
-		}
-		
-		try {
-			s.sign(b, 0, 3);
-		} catch (SignatureException e) {
-			fail(e.toString());
-		}
-
-		if (!MySignature2.runEngineSign) {
-			fail("sign() failed");
-		}
-		try {
-			s.update(b);
-		} catch (SignatureException e) {
-			fail(e.toString());
-		}
-		
-		try {
-			s.initSign(new MyPrivateKey());
-		} catch (InvalidKeyException e) {
-			fail(e.toString());
-		}
-		try {
-			s.update(b);
-		} catch (SignatureException e) {
-			fail(e.toString());
-		}
-
-		if (!MySignature2.runEngineUpdate2) {
-			fail("update() failed");
-		}
-		
-		try {
-			s.initSign(new MyPrivateKey());
-		} catch (InvalidKeyException e) {
-			fail(e.toString());
-		}
-		try {
-			s.verify(b, 0, 3);
-			fail("No expected SignatureException");
-		} catch (SignatureException e) {		
-		}
-		
-		try {
-			s.initVerify(new MyPublicKey());
-		} catch (InvalidKeyException e) {
-			fail(e.toString());
-		}
-		
-		try {
-			s.verify(b, 0, 5);
-			fail("No expected IllegalArgumentException");
-		} catch (IllegalArgumentException e) { 
-		} catch (SignatureException e) {		
-		}
-		
-		try {
-			s.verify(b, 0, 3);
-		} catch (SignatureException e) {
-			fail(e.toString());
-		}
-		
-		if (!MySignature2.runEngineVerify) {
-			fail("verify() failed");
-		}
-	}
+	private void checkSig2(Signature s, Provider p) throws Exception {
+        byte[] b = { 1, 2, 3, 4 };
+
+        assertEquals("getProvider() failed", p, s.getProvider());
+        assertEquals("getAlgorithm() failed", "CBA", s.getAlgorithm());
+
+        s.initVerify(new MyCertificate());
+
+        try {
+            s.sign(b, 0, 5);
+            fail("No expected SignatureException 1");
+        } catch (SignatureException e) {
+        }
+
+        s.initSign(new MyPrivateKey());
+        s.sign(b, 0, 3);
+
+        assertTrue("sign() failed", MySignature2.runEngineSign);
+        s.update(b);
+        s.initSign(new MyPrivateKey());
+        s.update(b);
+        assertTrue("update() failed", MySignature2.runEngineUpdate2);
+
+        s.initSign(new MyPrivateKey());
+        try {
+            s.verify(b, 0, 3);
+            fail("No expected SignatureException");
+        } catch (SignatureException e) {
+        }
+        s.initVerify(new MyPublicKey());
+
+        try {
+            s.verify(b, 0, 5);
+            fail("No expected IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+        } catch (SignatureException e) {
+        }
+
+        s.verify(b, 0, 3);
+        assertTrue("verify() failed", MySignature2.runEngineVerify);
+    }
 	
 	private class MyProvider extends Provider {
 		MyProvider() {

Copied: incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/UnresolvedPermissionCollection_ImplTest.java (from r412639, incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/UnresolvedPermissionCollectionTest.java)
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/UnresolvedPermissionCollection_ImplTest.java?p2=incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/UnresolvedPermissionCollection_ImplTest.java&p1=incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/UnresolvedPermissionCollectionTest.java&r1=412639&r2=413841&rev=413841&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/UnresolvedPermissionCollectionTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/UnresolvedPermissionCollection_ImplTest.java Tue Jun 13 01:58:11 2006
@@ -31,11 +31,7 @@
  * 
  */
 
-public class UnresolvedPermissionCollectionTest extends TestCase {
-
-    public static void main(String[] args) {
-        junit.textui.TestRunner.run(UnresolvedPermissionCollectionTest.class);
-    }
+public class UnresolvedPermissionCollection_ImplTest extends TestCase {
 
     /** 
      * Can add any number of UnresolvedPermission instances, but no any other permissions.

Copied: incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/UnresolvedPermission_ImplTest.java (from r412639, incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/UnresolvedPermissionTest.java)
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/UnresolvedPermission_ImplTest.java?p2=incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/UnresolvedPermission_ImplTest.java&p1=incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/UnresolvedPermissionTest.java&r1=412639&r2=413841&rev=413841&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/UnresolvedPermissionTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/UnresolvedPermission_ImplTest.java Tue Jun 13 01:58:11 2006
@@ -28,55 +28,7 @@
  * 
  */
 
-public class UnresolvedPermissionTest extends TestCase {
-
-    public static void main(String[] args) {
-        junit.textui.TestRunner.run(UnresolvedPermissionTest.class);
-    }
-
-    /**
-     * Constructor for UnresolvedPermissionTest.
-     * @param arg0
-     */
-    public UnresolvedPermissionTest(String arg0) {
-        super(arg0);
-    }
-    
-    /**
-     * Creates an Object with given name, type, action, certificaties. 
-     * Empty or null type is not allowed - exception should be thrown.
-     */
-    public void testCtor()
-    {
-        String type = "laskjhlsdk 2345346";
-        String name = "^%#UHVKU^%V  887y";
-        String action = "JHB ^%(*&T klj3h4";
-        UnresolvedPermission up = new UnresolvedPermission(type, name, action, null);
-        assertEquals(type, up.getName());
-        assertEquals("", up.getActions());
-        assertEquals("(unresolved " + type + " " + name + " " + action + ")", up.toString());
-        
-        up = new UnresolvedPermission(type, null, null, null);
-        assertEquals(type, up.getName());
-        assertEquals("", up.getActions());
-        assertEquals("(unresolved " + type + " null null)", up.toString());
-        
-        up = new UnresolvedPermission(type, "", "", new java.security.cert.Certificate[0]);
-        assertEquals(type, up.getName());
-        assertEquals("", up.getActions());
-        assertEquals("(unresolved " + type + "  )", up.toString());
-        
-        try {
-            new UnresolvedPermission(null, name, action, null);
-            fail("exception is not thrown on null type");
-        }
-        catch (Exception ok) {}
-        /*try {
-            new UnresolvedPermission("", name, action, null);
-            fail("exception is not thrown on empty type");
-        }
-        catch (Exception ok) {}*/
-    }
+public class UnresolvedPermission_ImplTest extends TestCase {  
     
     /**
      * This test is valid since 1.5 release only. Checks that UnresolvedPermission returns the proper 
@@ -125,29 +77,6 @@
         up = new UnresolvedPermission(type, name, action, new java.security.cert.Certificate[10]);
         assertTrue(up.equals(up2));
         assertTrue(up.hashCode() == up2.hashCode());
-    }
-    
-    /** 
-     * UnresolvedPermission never implies any other permission.
-     */
-    public void testImplies()
-    {
-        UnresolvedPermission up = new UnresolvedPermission("java.security.SecurityPermission", "a.b.c", null, null);
-        assertFalse(up.implies(up));
-        assertFalse(up.implies(new AllPermission()));
-        assertFalse(up.implies(new SecurityPermission("a.b.c")));
-    }
-    
-    /**
-     * newPermissionCollection() should return new BasicPermissionCollection on every invokation
-     */
-    public void testCollection()
-    {
-        UnresolvedPermission up = new UnresolvedPermission("a.b.c", null, null, null);
-        PermissionCollection pc1 = up.newPermissionCollection();
-        PermissionCollection pc2 = up.newPermissionCollection();
-        assertTrue((pc1 instanceof UnresolvedPermissionCollection) && (pc2 instanceof UnresolvedPermissionCollection));
-        assertNotSame(pc1, pc2);
     }
 
     /**

Modified: incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/cert/X509CRLSelectorTest.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/cert/X509CRLSelectorTest.java?rev=413841&r1=413840&r2=413841&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/cert/X509CRLSelectorTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/cert/X509CRLSelectorTest.java Tue Jun 13 01:58:11 2006
@@ -1,590 +1,590 @@
-/*
- *  Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-/**
-* @author Alexander Y. Kleymenov
-* @version $Revision$
-*/
-
-package java.security.cert;
-
-import java.io.IOException;
-import java.math.BigInteger;
-import java.security.InvalidKeyException;
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-import java.security.Principal;
-import java.security.PublicKey;
-import java.security.SignatureException;
-import java.security.cert.CRLException;
-import java.security.cert.X509CRLEntry;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.Set;
-import javax.security.auth.x500.X500Principal;
-
-import org.apache.harmony.security.asn1.ASN1Integer;
-import org.apache.harmony.security.asn1.ASN1OctetString;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-/**
- */
-
-public class X509CRLSelectorTest extends TestCase {
-
-    /**
-     * The abstract class stub implementation.
-     */
-    private class TestCRL extends X509CRL {
-
-        private X500Principal principal = null;
-        private BigInteger crlNumber = null;
-        private Date thisUpdate = null;
-        private Date nextUpdate = null;
-
-        public TestCRL(X500Principal principal) {
-            this.principal = principal;
-        }
-
-        public TestCRL(Date thisUpdate, Date nextUpdate) {
-            setUpdateDates(thisUpdate, nextUpdate);
-        }
-
-        public TestCRL(BigInteger crlNumber) {
-            setCrlNumber(crlNumber);
-        }
-
-        public void setUpdateDates(Date thisUpdate, Date nextUpdate) {
-            this.thisUpdate = thisUpdate;
-            this.nextUpdate = nextUpdate;
-        }
-        
-        public void setCrlNumber(BigInteger crlNumber) {
-            this.crlNumber = crlNumber;
-        }
-
-        public X500Principal getIssuerX500Principal() {
-            return principal;
-        }
-
-        public String toString() {
-            return null;
-        }
-
-        public boolean isRevoked(Certificate cert) {
-            return true;
-        }
-
-        public Set getNonCriticalExtensionOIDs() {
-            return null;
-        }
-
-        public Set getCriticalExtensionOIDs() {
-            return null;
-        }
-
-        public byte[] getExtensionValue(String oid) {
-            if ("2.5.29.20".equals(oid) && (crlNumber != null)) {
-                return ASN1OctetString.getInstance().encode(
-                        ASN1Integer.getInstance().encode(
-                                crlNumber.toByteArray()));
-            }
-            return null;
-        }
-
-        public boolean hasUnsupportedCriticalExtension() {
-            return false;
-        }
-
-        public byte[] getEncoded() {
-            return null;
-        }
-
-        public void verify(PublicKey key)
-                 throws CRLException, NoSuchAlgorithmException,
-                        InvalidKeyException, NoSuchProviderException,
-                        SignatureException
-        {
-        }
-
-        public void verify(PublicKey key, String sigProvider)
-                 throws CRLException, NoSuchAlgorithmException,
-                        InvalidKeyException, NoSuchProviderException,
-                        SignatureException
-        {
-        }
-
-        public int getVersion() {
-            return 2;
-        }
-
-        public Principal getIssuerDN() {
-            return null;
-        }
-
-        public Date getThisUpdate() {
-            return thisUpdate;
-        }
-
-        public Date getNextUpdate() {
-            return nextUpdate;
-        }
-
-        public X509CRLEntry getRevokedCertificate(BigInteger serialNumber) {
-            return null;
-        }
-
-        public Set getRevokedCertificates() {
-            return null;
-        }
-
-        public byte[] getTBSCertList() {
-            return null;
-        }
-
-        public byte[] getSignature() {
-            return null;
-        }
-
-        public String getSigAlgName() {
-            return null;
-        }
-
-        public String getSigAlgOID() {
-            return null;
-        }
-
-        public byte[] getSigAlgParams() {
-            return null;
-        }
-    }
-
-    /**
-     * setIssuers(Collection <X500Principal> issuers) method testing.
-     * Tests if CRLs with any issuers match the selector in the case of
-     * null issuerNames criteria, if specified issuers match the selector,
-     * and if not specified issuer does not match the selector.
-     */
-    public void testSetIssuers() {
-        X509CRLSelector selector = new X509CRLSelector();
-        X500Principal iss1 = new X500Principal("O=First Org.");
-        X500Principal iss2 = new X500Principal("O=Second Org.");
-        X500Principal iss3 = new X500Principal("O=Third Org.");
-        TestCRL crl1 = new TestCRL(iss1);
-        TestCRL crl2 = new TestCRL(iss2);
-        TestCRL crl3 = new TestCRL(iss3);
-
-        selector.setIssuers(null);
-        assertTrue("Any CRL issuers should match in the case of null issuers.",
-                    selector.match(crl1) && selector.match(crl2));
-
-        ArrayList issuers = new ArrayList(2);
-        issuers.add(iss1);
-        issuers.add(iss2);
-        selector.setIssuers(issuers);
-        assertTrue("The CRL should match the selection criteria.",
-                    selector.match(crl1) && selector.match(crl2));
-        assertFalse("The CRL should not match the selection criteria.",
-                                            selector.match(crl3));
-        issuers.add(iss3);
-        assertFalse("The internal issuer collection is not protected "
-                    + "against the modifications.", selector.match(crl3));
-    }
-
-    /**
-     * setIssuerNames(Collection <?> names) method testing.
-     * Tests if CRLs with any issuers match the selector in the case of
-     * null issuerNames criteria, if specified issuers match the selector,
-     * if not specified issuer does not match the selector, and if the
-     * internal collection of issuer names is copied during initialization.
-     */
-    public void testSetIssuerNames() {
-        X509CRLSelector selector = new X509CRLSelector();
-        String iss1 = "O=First Org.";
-        byte[] iss2 = new byte[]
-            //manually obtained DER encoding of "O=Second Org." issuer name;
-            {48, 22, 49, 20, 48, 18, 6, 3, 85, 4, 10, 19, 11,
-            83, 101, 99, 111, 110, 100, 32, 79, 114, 103, 46};
-        String iss3 = "O=Third Org.";
-        TestCRL crl1 = new TestCRL(new X500Principal(iss1));
-        TestCRL crl2 = new TestCRL(new X500Principal(iss2));
-        TestCRL crl3 = new TestCRL(new X500Principal(iss3));
-
-        try {
-            selector.setIssuerNames(null);
-        } catch (IOException e) {
-            e.printStackTrace();
-            fail("Unexpected IOException was thrown.");
-        }
-        assertTrue("Any CRL issuers should match in the case of null issuers.",
-                    selector.match(crl1) && selector.match(crl2));
-
-        ArrayList issuers = new ArrayList(2);
-        issuers.add(iss1);
-        issuers.add(iss2);
-        try {
-            selector.setIssuerNames(issuers);
-        } catch (IOException e) {
-            e.printStackTrace();
-            fail("Unexpected IOException was thrown.");
-        }
-        assertTrue("The CRL should match the selection criteria.",
-                    selector.match(crl1) && selector.match(crl2));
-        assertFalse("The CRL should not match the selection criteria.",
-                                            selector.match(crl3));
-        issuers.add(iss3);
-        assertFalse("The internal issuer collection is not protected "
-                    + "against the modifications.", selector.match(crl3));
-    }
-
-    /**
-     * addIssuer(X500Principal issuer) method testing.
-     * Tests if CRLs with specified issuers match the selector,
-     * and if not specified issuer does not match the selector.
-     */
-    public void testAddIssuer() {
-        X509CRLSelector selector = new X509CRLSelector();
-        X500Principal iss1 = new X500Principal("O=First Org.");
-        X500Principal iss2 = new X500Principal("O=Second Org.");
-        TestCRL crl1 = new TestCRL(iss1);
-        TestCRL crl2 = new TestCRL(iss2);
-
-        selector.addIssuer(iss1);
-        assertTrue("The CRL should match the selection criteria.",
-                                            selector.match(crl1));
-        assertFalse("The CRL should not match the selection criteria.",
-                                            selector.match(crl2));
-        selector.addIssuer(iss2);
-        assertTrue("The CRL should match the selection criteria.",
-                                            selector.match(crl2));
-    }
-
-    /**
-     * addIssuerName(String name) method testing.
-     * Tests if CRLs with specified issuers match the selector,
-     * and if not specified issuer does not match the selector.
-     */
-    public void testAddIssuerName1() {
-        X509CRLSelector selector = new X509CRLSelector();
-        String iss1 = "O=First Org.";
-        String iss2 = "O=Second Org.";
-        TestCRL crl1 = new TestCRL(new X500Principal(iss1));
-        TestCRL crl2 = new TestCRL(new X500Principal(iss2));
-
-        try {
-            selector.addIssuerName(iss1);
-        } catch (IOException e) {
-            e.printStackTrace();
-            fail("Unexpected IOException was thrown.");
-        }
-        assertTrue("The CRL should match the selection criteria.",
-                                            selector.match(crl1));
-        assertFalse("The CRL should not match the selection criteria.",
-                                            selector.match(crl2));
-        try {
-            selector.addIssuerName(iss2);
-        } catch (IOException e) {
-            e.printStackTrace();
-            fail("Unexpected IOException was thrown.");
-        }
-        assertTrue("The CRL should match the selection criteria.",
-                                            selector.match(crl2));
-    }
-
-    /**
-     * addIssuerName(byte[] name) method testing.
-     * Tests if CRLs with specified issuers match the selector,
-     * and if not specified issuer does not match the selector.
-     */
-    public void testAddIssuerName2() {
-        X509CRLSelector selector = new X509CRLSelector();
-        byte[] iss1 = new byte[]
-            //manually obtained DER encoding of "O=First Org." issuer name;
-            {48, 21, 49, 19, 48, 17, 6, 3, 85, 4, 10, 19, 10,
-                70, 105, 114, 115, 116, 32, 79, 114, 103, 46};
-        byte[] iss2 = new byte[]
-            //manually obtained DER encoding of "O=Second Org." issuer name;
-            {48, 22, 49, 20, 48, 18, 6, 3, 85, 4, 10, 19, 11,
-            83, 101, 99, 111, 110, 100, 32, 79, 114, 103, 46};
-        TestCRL crl1 = new TestCRL(new X500Principal(iss1));
-        TestCRL crl2 = new TestCRL(new X500Principal(iss2));
-
-        try {
-            selector.addIssuerName(iss1);
-        } catch (IOException e) {
-            e.printStackTrace();
-            fail("Unexpected IOException was thrown.");
-        }
-        assertTrue("The CRL should match the selection criteria.",
-                                            selector.match(crl1));
-        assertFalse("The CRL should not match the selection criteria.",
-                                            selector.match(crl2));
-        try {
-            selector.addIssuerName(iss2);
-        } catch (IOException e) {
-            e.printStackTrace();
-            fail("Unexpected IOException was thrown.");
-        }
-        assertTrue("The CRL should match the selection criteria.",
-                                            selector.match(crl2));
-    }
-
-    /**
-     * setMinCRLNumber(BigInteger minCRL) method testing.
-     * Tests if CRLs with any crl number value match the selector in the case of
-     * null crlNumber criteria, if specified minCRL value matches the selector,
-     * and if CRL with inappropriate crlNumber value does not match the selector. 
-     */
-    public void testSetMinCRLNumber() {
-        X509CRLSelector selector = new X509CRLSelector();
-        BigInteger minCRL = new BigInteger("10000");
-        TestCRL crl = new TestCRL(minCRL);
-
-        selector.setMinCRLNumber(null);
-        assertTrue("Any CRL should match in the case of null minCRLNumber.",
-                                            selector.match(crl));
-        selector.setMinCRLNumber(minCRL);
-        assertTrue("The CRL should match the selection criteria.",
-                                            selector.match(crl));
-        selector.setMinCRLNumber(new BigInteger("10001"));
-        assertFalse("The CRL should not match the selection criteria.",
-                                            selector.match(crl));
-    }
-
-    /**
-     * setMaxCRLNumber(BigInteger maxCRL) method testing.
-     * Tests if CRLs with any crl number value match the selector in the case of
-     * null crlNumber criteria, if specified maxCRL value matches the selector,
-     * and if CRL with inappropriate crlNumber value does not match the selector. 
-     */
-    public void testSetMaxCRLNumber() {
-        X509CRLSelector selector = new X509CRLSelector();
-        BigInteger maxCRL = new BigInteger("10000");
-        TestCRL crl = new TestCRL(maxCRL);
-
-        selector.setMaxCRLNumber(null);
-        assertTrue("Any CRL should match in the case of null minCRLNumber.",
-                                            selector.match(crl));
-        selector.setMaxCRLNumber(maxCRL);
-        assertTrue("The CRL should match the selection criteria.",
-                                            selector.match(crl));
-        selector.setMaxCRLNumber(new BigInteger("9999"));
-        assertFalse("The CRL should not match the selection criteria.",
-                                            selector.match(crl));
-    }
-
-    /**
-     * setDateAndTime(Date dateAndTime) method testing.
-     * Tests if CRLs with any update dates match the selector in the case of
-     * null dateAndTime criteria, if correct dates match and incorrect 
-     * do not match the selector.
-     */
-    public void testSetDateAndTime() {
-        X509CRLSelector selector = new X509CRLSelector();
-        TestCRL crl = new TestCRL(new Date(200), new Date(300));
-        selector.setDateAndTime(null);
-        assertTrue("Any CRL should match in the case of null dateAndTime.",
-                                            selector.match(crl));
-        selector.setDateAndTime(new Date(200));
-        assertTrue("The CRL should match the selection criteria.",
-                                            selector.match(crl));
-        selector.setDateAndTime(new Date(250));
-        assertTrue("The CRL should match the selection criteria.",
-                                            selector.match(crl));
-        selector.setDateAndTime(new Date(300));
-        assertTrue("The CRL should match the selection criteria.",
-                                            selector.match(crl));
-        selector.setDateAndTime(new Date(150));
-        assertFalse("The CRL should not match the selection criteria.",
-                                            selector.match(crl));
-        selector.setDateAndTime(new Date(350));
-        assertFalse("The CRL should not match the selection criteria.",
-                                            selector.match(crl));
-    }
-
-    /**
-     * getIssuers() method testing.
-     * Tests if the method return null in the case of not specified issuers,
-     * if the returned collection corresponds to the specified issuers and
-     * this collection is unmodifiable.
-     */
-    public void testGetIssuers() {
-        X509CRLSelector selector = new X509CRLSelector();
-        X500Principal iss1 = new X500Principal("O=First Org.");
-        X500Principal iss2 = new X500Principal("O=Second Org.");
-        X500Principal iss3 = new X500Principal("O=Third Org.");
-        assertNull("The collection should be null.",
-                                        selector.getIssuers());
-        selector.addIssuer(iss1);
-        selector.addIssuer(iss2);
-        Collection result = selector.getIssuers();
-        try {
-            result.add(iss3);
-            fail("The returned collection should be unmodifiable.");
-        } catch (UnsupportedOperationException e) {
-        }
-        assertTrue("The collection should contain the specified DN.",
-                                            result.contains(iss2));
-    }
-
-    /**
-     * getIssuerNames() method testing.
-     * Tests if the method return null in the case of not specified issuers,
-     * if the returned collection corresponds to the specified issuers.
-     */
-    public void testGetIssuerNames() {
-        X509CRLSelector selector = new X509CRLSelector();
-        byte[] iss1 = new byte[]
-            //manually obtained DER encoding of "O=First Org." issuer name;
-            {48, 21, 49, 19, 48, 17, 6, 3, 85, 4, 10, 19, 10,
-                70, 105, 114, 115, 116, 32, 79, 114, 103, 46};
-        byte[] iss2 = new byte[]
-            //manually obtained DER encoding of "O=Second Org." issuer name;
-            {48, 22, 49, 20, 48, 18, 6, 3, 85, 4, 10, 19, 11,
-            83, 101, 99, 111, 110, 100, 32, 79, 114, 103, 46};
-        assertNull("The collection should be null.",
-                                        selector.getIssuerNames());
-        try {
-            selector.addIssuerName(iss1);
-            selector.addIssuerName(iss2);
-        } catch (IOException e) {
-            e.printStackTrace();
-            fail("Unexpected IOException was thrown.");
-        }
-        Collection result = selector.getIssuerNames();
-        assertEquals("The collection should contain all of the specified DNs.",
-                                                2, result.size());
-    }
-
-    /**
-     * getMinCRL() method testing.
-     * Tests if the method return null in the case of not specified minCRL 
-     * criteria, and if the returned value corresponds to the specified one.
-     */
-    public void testGetMinCRL() {
-        X509CRLSelector selector = new X509CRLSelector();
-        assertNull("Initially the minCRL should be null.",
-                                        selector.getMinCRL());
-        BigInteger minCRL = new BigInteger("10000");
-        selector.setMinCRLNumber(minCRL);
-        assertTrue("The result should be equal to specified.",
-                                        minCRL.equals(selector.getMinCRL()));
-    }
-
-    /**
-     * getMaxCRL() method testing.
-     * Tests if the method return null in the case of not specified maxCRL 
-     * criteria, and if the returned value corresponds to the specified one.
-     */
-    public void testGetMaxCRL() {
-        X509CRLSelector selector = new X509CRLSelector();
-        assertNull("Initially the maxCRL should be null.",
-                                        selector.getMaxCRL());
-        BigInteger maxCRL = new BigInteger("10000");
-        selector.setMaxCRLNumber(maxCRL);
-        assertTrue("The result should be equal to specified.",
-                                        maxCRL.equals(selector.getMaxCRL()));
-    }
-
-    /**
-     * getDateAndTime() method testing.
-     * Tests if the method return null in the case of not specified dateAndTime 
-     * criteria, and if the returned value corresponds to the specified one.
-     */
-    public void testGetDateAndTime() {
-        X509CRLSelector selector = new X509CRLSelector();
-        assertNull("Initially the dateAndTime criteria should be null.",
-                                        selector.getDateAndTime());
-        Date date = new Date(200);
-        selector.setDateAndTime(date);
-        assertTrue("The result should be equal to specified.",
-                                        date.equals(selector.getDateAndTime()));
-    }
-
-    /**
-     * match(CRL crl) method testing.
-     * Tests if the null object matches to the selector or not.
-     */
-    public void testMatch() {
-        X509CRLSelector selector = new X509CRLSelector();
-        assertFalse("The null object should not match", 
-                                        selector.match((X509CRL) null));
-    }
-
-    /**
-     * clone() method testing.
-     * Tests if the selector is cloned correctly: the crl which matche to
-     * the initial selector should match to the clone and the change of clone
-     * should not cause the change of initial selector.
-     */
-    public void testClone() {
-        X509CRLSelector selector = new X509CRLSelector();
-        X500Principal iss1 = new X500Principal("O=First Org.");
-        X500Principal iss2 = new X500Principal("O=Second Org.");
-        X500Principal iss3 = new X500Principal("O=Third Org.");
-        BigInteger minCRL = new BigInteger("10000");
-        BigInteger maxCRL = new BigInteger("10000");
-        Date date = new Date(200);
-
-        selector.addIssuer(iss1);
-        selector.addIssuer(iss2);
-        selector.setMinCRLNumber(minCRL);
-        selector.setMaxCRLNumber(maxCRL);
-        selector.setDateAndTime(date);
-
-        X509CRLSelector clone = (X509CRLSelector) selector.clone();
-        TestCRL crl = new TestCRL(iss1);
-        crl.setCrlNumber(minCRL);
-        crl.setUpdateDates(new Date(200), new Date(200));
-        assertTrue("The specified CRL should match the clone selector.",
-                    selector.match(crl));
-
-        clone.addIssuer(iss3);
-        assertFalse("The changes of the clone selector should not cause "
-                    + "the changes of initial object", 
-                                    selector.getIssuerNames().size() == 3);
-    }
-
-    public void testToString() {
-        X509CRLSelector selector = new X509CRLSelector();
-        X500Principal iss1 = new X500Principal("O=First Org.");
-        X500Principal iss2 = new X500Principal("O=Second Org.");
-        BigInteger minCRL = new BigInteger("10000");
-        BigInteger maxCRL = new BigInteger("10000");
-        Date date = new Date(200);
-
-        selector.addIssuer(iss1);
-        selector.addIssuer(iss2);
-        selector.setMinCRLNumber(minCRL);
-        selector.setMaxCRLNumber(maxCRL);
-        selector.setDateAndTime(date);
-
-        assertNotNull("The result should not be null.", selector.toString());
-    }
-
-    public static Test suite() {
-        return new TestSuite(X509CRLSelectorTest.class);
-    }
-
-    public static void main(String[] args) {
-        junit.textui.TestRunner.run(suite());
-    }
-}
-
+/*
+ *  Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+/**
+* @author Alexander Y. Kleymenov
+* @version $Revision$
+*/
+
+package java.security.cert;
+
+import java.io.IOException;
+import java.math.BigInteger;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.security.Principal;
+import java.security.PublicKey;
+import java.security.SignatureException;
+import java.security.cert.CRLException;
+import java.security.cert.X509CRLEntry;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.Set;
+import javax.security.auth.x500.X500Principal;
+
+import org.apache.harmony.security.asn1.ASN1Integer;
+import org.apache.harmony.security.asn1.ASN1OctetString;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ */
+
+public class X509CRLSelectorTest extends TestCase {
+
+    /**
+     * The abstract class stub implementation.
+     */
+    private class TestCRL extends X509CRL {
+
+        private X500Principal principal = null;
+        private BigInteger crlNumber = null;
+        private Date thisUpdate = null;
+        private Date nextUpdate = null;
+
+        public TestCRL(X500Principal principal) {
+            this.principal = principal;
+        }
+
+        public TestCRL(Date thisUpdate, Date nextUpdate) {
+            setUpdateDates(thisUpdate, nextUpdate);
+        }
+
+        public TestCRL(BigInteger crlNumber) {
+            setCrlNumber(crlNumber);
+        }
+
+        public void setUpdateDates(Date thisUpdate, Date nextUpdate) {
+            this.thisUpdate = thisUpdate;
+            this.nextUpdate = nextUpdate;
+        }
+        
+        public void setCrlNumber(BigInteger crlNumber) {
+            this.crlNumber = crlNumber;
+        }
+
+        public X500Principal getIssuerX500Principal() {
+            return principal;
+        }
+
+        public String toString() {
+            return null;
+        }
+
+        public boolean isRevoked(Certificate cert) {
+            return true;
+        }
+
+        public Set getNonCriticalExtensionOIDs() {
+            return null;
+        }
+
+        public Set getCriticalExtensionOIDs() {
+            return null;
+        }
+
+        public byte[] getExtensionValue(String oid) {
+            if ("2.5.29.20".equals(oid) && (crlNumber != null)) {
+                return ASN1OctetString.getInstance().encode(
+                        ASN1Integer.getInstance().encode(
+                                crlNumber.toByteArray()));
+            }
+            return null;
+        }
+
+        public boolean hasUnsupportedCriticalExtension() {
+            return false;
+        }
+
+        public byte[] getEncoded() {
+            return null;
+        }
+
+        public void verify(PublicKey key)
+                 throws CRLException, NoSuchAlgorithmException,
+                        InvalidKeyException, NoSuchProviderException,
+                        SignatureException
+        {
+        }
+
+        public void verify(PublicKey key, String sigProvider)
+                 throws CRLException, NoSuchAlgorithmException,
+                        InvalidKeyException, NoSuchProviderException,
+                        SignatureException
+        {
+        }
+
+        public int getVersion() {
+            return 2;
+        }
+
+        public Principal getIssuerDN() {
+            return null;
+        }
+
+        public Date getThisUpdate() {
+            return thisUpdate;
+        }
+
+        public Date getNextUpdate() {
+            return nextUpdate;
+        }
+
+        public X509CRLEntry getRevokedCertificate(BigInteger serialNumber) {
+            return null;
+        }
+
+        public Set getRevokedCertificates() {
+            return null;
+        }
+
+        public byte[] getTBSCertList() {
+            return null;
+        }
+
+        public byte[] getSignature() {
+            return null;
+        }
+
+        public String getSigAlgName() {
+            return null;
+        }
+
+        public String getSigAlgOID() {
+            return null;
+        }
+
+        public byte[] getSigAlgParams() {
+            return null;
+        }
+    }
+
+    /**
+     * setIssuers(Collection <X500Principal> issuers) method testing.
+     * Tests if CRLs with any issuers match the selector in the case of
+     * null issuerNames criteria, if specified issuers match the selector,
+     * and if not specified issuer does not match the selector.
+     */
+    public void testSetIssuers() {
+        X509CRLSelector selector = new X509CRLSelector();
+        X500Principal iss1 = new X500Principal("O=First Org.");
+        X500Principal iss2 = new X500Principal("O=Second Org.");
+        X500Principal iss3 = new X500Principal("O=Third Org.");
+        TestCRL crl1 = new TestCRL(iss1);
+        TestCRL crl2 = new TestCRL(iss2);
+        TestCRL crl3 = new TestCRL(iss3);
+
+        selector.setIssuers(null);
+        assertTrue("Any CRL issuers should match in the case of null issuers.",
+                    selector.match(crl1) && selector.match(crl2));
+
+        ArrayList issuers = new ArrayList(2);
+        issuers.add(iss1);
+        issuers.add(iss2);
+        selector.setIssuers(issuers);
+        assertTrue("The CRL should match the selection criteria.",
+                    selector.match(crl1) && selector.match(crl2));
+        assertFalse("The CRL should not match the selection criteria.",
+                                            selector.match(crl3));
+        issuers.add(iss3);
+        assertFalse("The internal issuer collection is not protected "
+                    + "against the modifications.", selector.match(crl3));
+    }
+
+    /**
+     * setIssuerNames(Collection <?> names) method testing.
+     * Tests if CRLs with any issuers match the selector in the case of
+     * null issuerNames criteria, if specified issuers match the selector,
+     * if not specified issuer does not match the selector, and if the
+     * internal collection of issuer names is copied during initialization.
+     */
+    public void testSetIssuerNames() {
+        X509CRLSelector selector = new X509CRLSelector();
+        String iss1 = "O=First Org.";
+        byte[] iss2 = new byte[]
+            //manually obtained DER encoding of "O=Second Org." issuer name;
+            {48, 22, 49, 20, 48, 18, 6, 3, 85, 4, 10, 19, 11,
+            83, 101, 99, 111, 110, 100, 32, 79, 114, 103, 46};
+        String iss3 = "O=Third Org.";
+        TestCRL crl1 = new TestCRL(new X500Principal(iss1));
+        TestCRL crl2 = new TestCRL(new X500Principal(iss2));
+        TestCRL crl3 = new TestCRL(new X500Principal(iss3));
+
+        try {
+            selector.setIssuerNames(null);
+        } catch (IOException e) {
+            e.printStackTrace();
+            fail("Unexpected IOException was thrown.");
+        }
+        assertTrue("Any CRL issuers should match in the case of null issuers.",
+                    selector.match(crl1) && selector.match(crl2));
+
+        ArrayList issuers = new ArrayList(2);
+        issuers.add(iss1);
+        issuers.add(iss2);
+        try {
+            selector.setIssuerNames(issuers);
+        } catch (IOException e) {
+            e.printStackTrace();
+            fail("Unexpected IOException was thrown.");
+        }
+        assertTrue("The CRL should match the selection criteria.",
+                    selector.match(crl1) && selector.match(crl2));
+        assertFalse("The CRL should not match the selection criteria.",
+                                            selector.match(crl3));
+        issuers.add(iss3);
+        assertFalse("The internal issuer collection is not protected "
+                    + "against the modifications.", selector.match(crl3));
+    }
+
+    /**
+     * addIssuer(X500Principal issuer) method testing.
+     * Tests if CRLs with specified issuers match the selector,
+     * and if not specified issuer does not match the selector.
+     */
+    public void testAddIssuer() {
+        X509CRLSelector selector = new X509CRLSelector();
+        X500Principal iss1 = new X500Principal("O=First Org.");
+        X500Principal iss2 = new X500Principal("O=Second Org.");
+        TestCRL crl1 = new TestCRL(iss1);
+        TestCRL crl2 = new TestCRL(iss2);
+
+        selector.addIssuer(iss1);
+        assertTrue("The CRL should match the selection criteria.",
+                                            selector.match(crl1));
+        assertFalse("The CRL should not match the selection criteria.",
+                                            selector.match(crl2));
+        selector.addIssuer(iss2);
+        assertTrue("The CRL should match the selection criteria.",
+                                            selector.match(crl2));
+    }
+
+    /**
+     * addIssuerName(String name) method testing.
+     * Tests if CRLs with specified issuers match the selector,
+     * and if not specified issuer does not match the selector.
+     */
+    public void testAddIssuerName1() {
+        X509CRLSelector selector = new X509CRLSelector();
+        String iss1 = "O=First Org.";
+        String iss2 = "O=Second Org.";
+        TestCRL crl1 = new TestCRL(new X500Principal(iss1));
+        TestCRL crl2 = new TestCRL(new X500Principal(iss2));
+
+        try {
+            selector.addIssuerName(iss1);
+        } catch (IOException e) {
+            e.printStackTrace();
+            fail("Unexpected IOException was thrown.");
+        }
+        assertTrue("The CRL should match the selection criteria.",
+                                            selector.match(crl1));
+        assertFalse("The CRL should not match the selection criteria.",
+                                            selector.match(crl2));
+        try {
+            selector.addIssuerName(iss2);
+        } catch (IOException e) {
+            e.printStackTrace();
+            fail("Unexpected IOException was thrown.");
+        }
+        assertTrue("The CRL should match the selection criteria.",
+                                            selector.match(crl2));
+    }
+
+    /**
+     * addIssuerName(byte[] name) method testing.
+     * Tests if CRLs with specified issuers match the selector,
+     * and if not specified issuer does not match the selector.
+     */
+    public void testAddIssuerName2() {
+        X509CRLSelector selector = new X509CRLSelector();
+        byte[] iss1 = new byte[]
+            //manually obtained DER encoding of "O=First Org." issuer name;
+            {48, 21, 49, 19, 48, 17, 6, 3, 85, 4, 10, 19, 10,
+                70, 105, 114, 115, 116, 32, 79, 114, 103, 46};
+        byte[] iss2 = new byte[]
+            //manually obtained DER encoding of "O=Second Org." issuer name;
+            {48, 22, 49, 20, 48, 18, 6, 3, 85, 4, 10, 19, 11,
+            83, 101, 99, 111, 110, 100, 32, 79, 114, 103, 46};
+        TestCRL crl1 = new TestCRL(new X500Principal(iss1));
+        TestCRL crl2 = new TestCRL(new X500Principal(iss2));
+
+        try {
+            selector.addIssuerName(iss1);
+        } catch (IOException e) {
+            e.printStackTrace();
+            fail("Unexpected IOException was thrown.");
+        }
+        assertTrue("The CRL should match the selection criteria.",
+                                            selector.match(crl1));
+        assertFalse("The CRL should not match the selection criteria.",
+                                            selector.match(crl2));
+        try {
+            selector.addIssuerName(iss2);
+        } catch (IOException e) {
+            e.printStackTrace();
+            fail("Unexpected IOException was thrown.");
+        }
+        assertTrue("The CRL should match the selection criteria.",
+                                            selector.match(crl2));
+    }
+
+    /**
+     * setMinCRLNumber(BigInteger minCRL) method testing.
+     * Tests if CRLs with any crl number value match the selector in the case of
+     * null crlNumber criteria, if specified minCRL value matches the selector,
+     * and if CRL with inappropriate crlNumber value does not match the selector. 
+     */
+    public void testSetMinCRLNumber() {
+        X509CRLSelector selector = new X509CRLSelector();
+        BigInteger minCRL = new BigInteger("10000");
+        TestCRL crl = new TestCRL(minCRL);
+
+        selector.setMinCRLNumber(null);
+        assertTrue("Any CRL should match in the case of null minCRLNumber.",
+                                            selector.match(crl));
+        selector.setMinCRLNumber(minCRL);
+        assertTrue("The CRL should match the selection criteria.",
+                                            selector.match(crl));
+        selector.setMinCRLNumber(new BigInteger("10001"));
+        assertFalse("The CRL should not match the selection criteria.",
+                                            selector.match(crl));
+    }
+
+    /**
+     * setMaxCRLNumber(BigInteger maxCRL) method testing.
+     * Tests if CRLs with any crl number value match the selector in the case of
+     * null crlNumber criteria, if specified maxCRL value matches the selector,
+     * and if CRL with inappropriate crlNumber value does not match the selector. 
+     */
+    public void testSetMaxCRLNumber() {
+        X509CRLSelector selector = new X509CRLSelector();
+        BigInteger maxCRL = new BigInteger("10000");
+        TestCRL crl = new TestCRL(maxCRL);
+
+        selector.setMaxCRLNumber(null);
+        assertTrue("Any CRL should match in the case of null minCRLNumber.",
+                                            selector.match(crl));
+        selector.setMaxCRLNumber(maxCRL);
+        assertTrue("The CRL should match the selection criteria.",
+                                            selector.match(crl));
+        selector.setMaxCRLNumber(new BigInteger("9999"));
+        assertFalse("The CRL should not match the selection criteria.",
+                                            selector.match(crl));
+    }
+
+    /**
+     * setDateAndTime(Date dateAndTime) method testing.
+     * Tests if CRLs with any update dates match the selector in the case of
+     * null dateAndTime criteria, if correct dates match and incorrect 
+     * do not match the selector.
+     */
+    public void testSetDateAndTime() {
+        X509CRLSelector selector = new X509CRLSelector();
+        TestCRL crl = new TestCRL(new Date(200), new Date(300));
+        selector.setDateAndTime(null);
+        assertTrue("Any CRL should match in the case of null dateAndTime.",
+                                            selector.match(crl));
+        selector.setDateAndTime(new Date(200));
+        assertTrue("The CRL should match the selection criteria.",
+                                            selector.match(crl));
+        selector.setDateAndTime(new Date(250));
+        assertTrue("The CRL should match the selection criteria.",
+                                            selector.match(crl));
+        selector.setDateAndTime(new Date(300));
+        assertTrue("The CRL should match the selection criteria.",
+                                            selector.match(crl));
+        selector.setDateAndTime(new Date(150));
+        assertFalse("The CRL should not match the selection criteria.",
+                                            selector.match(crl));
+        selector.setDateAndTime(new Date(350));
+        assertFalse("The CRL should not match the selection criteria.",
+                                            selector.match(crl));
+    }
+
+    /**
+     * getIssuers() method testing.
+     * Tests if the method return null in the case of not specified issuers,
+     * if the returned collection corresponds to the specified issuers and
+     * this collection is unmodifiable.
+     */
+    public void testGetIssuers() {
+        X509CRLSelector selector = new X509CRLSelector();
+        X500Principal iss1 = new X500Principal("O=First Org.");
+        X500Principal iss2 = new X500Principal("O=Second Org.");
+        X500Principal iss3 = new X500Principal("O=Third Org.");
+        assertNull("The collection should be null.",
+                                        selector.getIssuers());
+        selector.addIssuer(iss1);
+        selector.addIssuer(iss2);
+        Collection result = selector.getIssuers();
+        try {
+            result.add(iss3);
+            fail("The returned collection should be unmodifiable.");
+        } catch (UnsupportedOperationException e) {
+        }
+        assertTrue("The collection should contain the specified DN.",
+                                            result.contains(iss2));
+    }
+
+    /**
+     * getIssuerNames() method testing.
+     * Tests if the method return null in the case of not specified issuers,
+     * if the returned collection corresponds to the specified issuers.
+     */
+    public void testGetIssuerNames() {
+        X509CRLSelector selector = new X509CRLSelector();
+        byte[] iss1 = new byte[]
+            //manually obtained DER encoding of "O=First Org." issuer name;
+            {48, 21, 49, 19, 48, 17, 6, 3, 85, 4, 10, 19, 10,
+                70, 105, 114, 115, 116, 32, 79, 114, 103, 46};
+        byte[] iss2 = new byte[]
+            //manually obtained DER encoding of "O=Second Org." issuer name;
+            {48, 22, 49, 20, 48, 18, 6, 3, 85, 4, 10, 19, 11,
+            83, 101, 99, 111, 110, 100, 32, 79, 114, 103, 46};
+        assertNull("The collection should be null.",
+                                        selector.getIssuerNames());
+        try {
+            selector.addIssuerName(iss1);
+            selector.addIssuerName(iss2);
+        } catch (IOException e) {
+            e.printStackTrace();
+            fail("Unexpected IOException was thrown.");
+        }
+        Collection result = selector.getIssuerNames();
+        assertEquals("The collection should contain all of the specified DNs.",
+                                                2, result.size());
+    }
+
+    /**
+     * getMinCRL() method testing.
+     * Tests if the method return null in the case of not specified minCRL 
+     * criteria, and if the returned value corresponds to the specified one.
+     */
+    public void testGetMinCRL() {
+        X509CRLSelector selector = new X509CRLSelector();
+        assertNull("Initially the minCRL should be null.",
+                                        selector.getMinCRL());
+        BigInteger minCRL = new BigInteger("10000");
+        selector.setMinCRLNumber(minCRL);
+        assertTrue("The result should be equal to specified.",
+                                        minCRL.equals(selector.getMinCRL()));
+    }
+
+    /**
+     * getMaxCRL() method testing.
+     * Tests if the method return null in the case of not specified maxCRL 
+     * criteria, and if the returned value corresponds to the specified one.
+     */
+    public void testGetMaxCRL() {
+        X509CRLSelector selector = new X509CRLSelector();
+        assertNull("Initially the maxCRL should be null.",
+                                        selector.getMaxCRL());
+        BigInteger maxCRL = new BigInteger("10000");
+        selector.setMaxCRLNumber(maxCRL);
+        assertTrue("The result should be equal to specified.",
+                                        maxCRL.equals(selector.getMaxCRL()));
+    }
+
+    /**
+     * getDateAndTime() method testing.
+     * Tests if the method return null in the case of not specified dateAndTime 
+     * criteria, and if the returned value corresponds to the specified one.
+     */
+    public void testGetDateAndTime() {
+        X509CRLSelector selector = new X509CRLSelector();
+        assertNull("Initially the dateAndTime criteria should be null.",
+                                        selector.getDateAndTime());
+        Date date = new Date(200);
+        selector.setDateAndTime(date);
+        assertTrue("The result should be equal to specified.",
+                                        date.equals(selector.getDateAndTime()));
+    }
+
+    /**
+     * match(CRL crl) method testing.
+     * Tests if the null object matches to the selector or not.
+     */
+    public void testMatch() {
+        X509CRLSelector selector = new X509CRLSelector();
+        assertFalse("The null object should not match", 
+                                        selector.match((X509CRL) null));
+    }
+
+    /**
+     * clone() method testing.
+     * Tests if the selector is cloned correctly: the crl which matche to
+     * the initial selector should match to the clone and the change of clone
+     * should not cause the change of initial selector.
+     */
+    public void testClone() {
+        X509CRLSelector selector = new X509CRLSelector();
+        X500Principal iss1 = new X500Principal("O=First Org.");
+        X500Principal iss2 = new X500Principal("O=Second Org.");
+        X500Principal iss3 = new X500Principal("O=Third Org.");
+        BigInteger minCRL = new BigInteger("10000");
+        BigInteger maxCRL = new BigInteger("10000");
+        Date date = new Date(200);
+
+        selector.addIssuer(iss1);
+        selector.addIssuer(iss2);
+        selector.setMinCRLNumber(minCRL);
+        selector.setMaxCRLNumber(maxCRL);
+        selector.setDateAndTime(date);
+
+        X509CRLSelector clone = (X509CRLSelector) selector.clone();
+        TestCRL crl = new TestCRL(iss1);
+        crl.setCrlNumber(minCRL);
+        crl.setUpdateDates(new Date(200), new Date(200));
+        assertTrue("The specified CRL should match the clone selector.",
+                    selector.match(crl));
+
+        clone.addIssuer(iss3);
+        assertFalse("The changes of the clone selector should not cause "
+                    + "the changes of initial object", 
+                                    selector.getIssuerNames().size() == 3);
+    }
+
+    public void testToString() {
+        X509CRLSelector selector = new X509CRLSelector();
+        X500Principal iss1 = new X500Principal("O=First Org.");
+        X500Principal iss2 = new X500Principal("O=Second Org.");
+        BigInteger minCRL = new BigInteger("10000");
+        BigInteger maxCRL = new BigInteger("10000");
+        Date date = new Date(200);
+
+        selector.addIssuer(iss1);
+        selector.addIssuer(iss2);
+        selector.setMinCRLNumber(minCRL);
+        selector.setMaxCRLNumber(maxCRL);
+        selector.setDateAndTime(date);
+
+        assertNotNull("The result should not be null.", selector.toString());
+    }
+
+    public static Test suite() {
+        return new TestSuite(X509CRLSelectorTest.class);
+    }
+
+    public static void main(String[] args) {
+        junit.textui.TestRunner.run(suite());
+    }
+}
+