/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 Vladimir N. Molotkov
*/
package org.apache.harmony.security.tests.java.security.spec;
import java.math.BigInteger;
import java.security.spec.ECPoint;
import junit.framework.TestCase;
/**
* Tests for ECPoint
class fields and methods.
*
*/
public class ECPointTest extends TestCase {
/**
* Constructor for ECPointTest.
* @param name
*/
public ECPointTest(String name) {
super(name);
}
//
// Tests
//
/**
* Test #1 for ECPoint(BigInteger, BigInteger)
constructor
* Assertion: creates ECPoint
instance
* Test preconditions: valid parameters passed
* Expected: must pass without any exceptions
*/
public final void testECPoint01() {
new ECPoint(BigInteger.ZERO, BigInteger.ZERO);
new ECPoint(BigInteger.valueOf(-23456L), BigInteger.valueOf(-23456L));
new ECPoint(BigInteger.valueOf(123456L), BigInteger.valueOf(123456L));
new ECPoint(BigInteger.valueOf(-56L), BigInteger.valueOf(234L));
new ECPoint(BigInteger.valueOf(3456L), BigInteger.valueOf(-2344L));
}
/**
* Test #2 for ECPoint(BigInteger x, BigInteger y)
constructor
* Assertion: throws NullPointerException
if x
or
* y
is null
* Test preconditions: pass null
as mentioned parameters
* Expected: must throw NullPointerException
*/
public final void testECPoint02() {
// test case 1: x is null
try {
new ECPoint(null, BigInteger.ZERO);
fail("#1: Expected NPE not thrown");
} catch (NullPointerException ok) {
}
// test case 2: y is null
try {
new ECPoint(BigInteger.ZERO, null);
fail("#2: Expected NPE not thrown");
} catch (NullPointerException ok) {
}
// test case 3: both : x and y are null
try {
new ECPoint(null, null);
fail("#3: Expected NPE not thrown");
} catch (NullPointerException ok) {
}
}
/**
* Test #1 for getAffineX()
method
* Assertion: returns affine x
coordinate
* Test preconditions: ECPoint
instance
* created using valid parameters
* Expected: must return affine x
coordinate
* which is equal to the one passed to the constructor;
* (both must refer the same object)
*/
public final void testGetAffineX01() {
BigInteger x = BigInteger.valueOf(-23456L);
ECPoint p = new ECPoint(x, BigInteger.valueOf(23456L));
BigInteger xRet = p.getAffineX();
assertEquals(x, xRet);
assertSame(x, xRet);
}
/**
* Test #2 for getAffineX()
method
* Assertion: returns null
for ECPoint.POINT_INFINITY
* Test preconditions: none
* Expected: must return null
for
* ECPoint.POINT_INFINITY
*/
public final void testGetAffineX02() {
assertNull(ECPoint.POINT_INFINITY.getAffineX());
}
/**
* Test #1 for getAffineY()
method
* Assertion: returns affine y
coordinate
* Test preconditions: ECPoint
instance
* created using valid parameters
* Expected: must return affine y
coordinate
* which is equal to the one passed to the constructor;
* (both must refer the same object)
*/
public final void testGetAffineY01() {
BigInteger y = BigInteger.valueOf(23456L);
ECPoint p = new ECPoint(BigInteger.valueOf(-23456L), y);
BigInteger yRet = p.getAffineY();
assertEquals(y, yRet);
assertSame(y, yRet);
}
/**
* Test #2 for getAffineX()
method
* Assertion: returns null
for ECPoint.POINT_INFINITY
* Test preconditions: none
* Expected: must return null
for
* ECPoint.POINT_INFINITY
*/
public final void testGetAffineY02() {
assertNull(ECPoint.POINT_INFINITY.getAffineY());
}
/**
* Test #1 for equals(Object other)
method
* Assertion: return true if this and other objects are equal
* Test preconditions: see test comments
* Expected: all objects in this test must be equal
*/
public final void testEqualsObject01() {
// test case 1: must be equal to itself
ECPoint p2=null, p1 =
new ECPoint(BigInteger.valueOf(-23456L), BigInteger.ONE);
assertTrue(p1.equals(p1));
// test case 2: equal objects
p1 = new ECPoint(BigInteger.valueOf(-23456L), BigInteger.ONE);
p2 = new ECPoint(BigInteger.valueOf(-23456L), BigInteger.valueOf(1L));
assertTrue(p1.equals(p2) && p2.equals(p1));
// test case 3: equal POINT_INFINITY object(s)
p1 = ECPoint.POINT_INFINITY;
p2 = ECPoint.POINT_INFINITY;
assertTrue(p1.equals(p2) && p2.equals(p1));
}
/**
* Test #2 for equals(Object other)
method
* Assertion: return false if this and other objects are not equal
* Test preconditions: see test comments
* Expected: all objects in this test must be not equal
*/
public final void testEqualsObject02() {
// test case 1: must be not equal to null
ECPoint p2=null, p1 =
new ECPoint(BigInteger.valueOf(-23456L), BigInteger.ONE);
assertFalse(p1.equals(p2));
// test case 2: not equal objects - x
p1 = new ECPoint(BigInteger.valueOf(-23457L), BigInteger.ONE);
p2 = new ECPoint(BigInteger.valueOf(-23456L), BigInteger.valueOf(1L));
assertFalse(p1.equals(p2) || p2.equals(p1));
// test case 3: not equal objects - y
p1 = new ECPoint(BigInteger.valueOf(-23457L), BigInteger.ONE);
p2 = new ECPoint(BigInteger.valueOf(-23456L), BigInteger.ZERO);
assertFalse(p1.equals(p2) || p2.equals(p1));
// test case 4: not equal - some point and POINT_INFINITY
p1 = ECPoint.POINT_INFINITY;
p2 = new ECPoint(BigInteger.valueOf(-23456L), BigInteger.ZERO);
assertFalse(p1.equals(p2) || p2.equals(p1));
}
/**
* Test #1 for hashCode()
method.
*
* Assertion: must return the same value if invoked
* repeatedly on the same object.
*/
public final void testHashCode01() {
ECPoint f = new ECPoint(BigInteger.valueOf(-23457L), BigInteger.ONE);
int hc = f.hashCode();
assertTrue(hc == f.hashCode() &&
hc == f.hashCode() &&
hc == f.hashCode() &&
hc == f.hashCode() &&
hc == f.hashCode() &&
hc == f.hashCode() &&
hc == f.hashCode() &&
hc == f.hashCode());
// the same for POINT_INFINITY
hc = ECPoint.POINT_INFINITY.hashCode();
assertTrue(hc == ECPoint.POINT_INFINITY.hashCode() &&
hc == ECPoint.POINT_INFINITY.hashCode() &&
hc == ECPoint.POINT_INFINITY.hashCode() &&
hc == ECPoint.POINT_INFINITY.hashCode() &&
hc == ECPoint.POINT_INFINITY.hashCode() &&
hc == ECPoint.POINT_INFINITY.hashCode() &&
hc == ECPoint.POINT_INFINITY.hashCode() &&
hc == ECPoint.POINT_INFINITY.hashCode());
}
/**
* Test #2 for hashCode()
method.
*
* Assertion: must return the same value if invoked
* on equal (according to the equals(Object)
method) objects.
*/
public final void testHashCode02() {
ECPoint p1 = new ECPoint(BigInteger.valueOf(-23456L), BigInteger.ONE);
ECPoint p2 = new ECPoint(BigInteger.valueOf(-23456L), BigInteger.valueOf(1L));
assertEquals(p1.hashCode(), p2.hashCode());
}
}