blob: 3a5fc7e3680f839feeb5212437509a0caf489a5c [file] [log] [blame]
package org.bouncycastle.asn1.test;
import java.io.IOException;
import org.bouncycastle.asn1.ASN1InputStream;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.x509.qualified.TypeOfBiometricData;
import org.bouncycastle.util.test.SimpleTest;
public class TypeOfBiometricDataUnitTest
extends SimpleTest
{
public String getName()
{
return "TypeOfBiometricData";
}
public void performTest()
throws Exception
{
//
// predefined
//
checkPredefinedType(TypeOfBiometricData.PICTURE);
checkPredefinedType(TypeOfBiometricData.HANDWRITTEN_SIGNATURE);
//
// non-predefined
//
ASN1ObjectIdentifier localType = new ASN1ObjectIdentifier("1.1");
TypeOfBiometricData type = new TypeOfBiometricData(localType);
checkNonPredefined(type, localType);
type = TypeOfBiometricData.getInstance(type);
checkNonPredefined(type, localType);
ASN1Primitive obj = type.toASN1Primitive();
type = TypeOfBiometricData.getInstance(obj);
checkNonPredefined(type, localType);
type = TypeOfBiometricData.getInstance(null);
if (type != null)
{
fail("null getInstance() failed.");
}
try
{
TypeOfBiometricData.getInstance(new Object());
fail("getInstance() failed to detect bad object.");
}
catch (IllegalArgumentException e)
{
// expected
}
try
{
new TypeOfBiometricData(100);
fail("constructor failed to detect bad predefined type.");
}
catch (IllegalArgumentException e)
{
// expected
}
if (TypeOfBiometricData.PICTURE != 0)
{
fail("predefined picture should be 0");
}
if (TypeOfBiometricData.HANDWRITTEN_SIGNATURE != 1)
{
fail("predefined handwritten signature should be 1");
}
}
private void checkPredefinedType(
int predefinedType)
throws IOException
{
TypeOfBiometricData type = new TypeOfBiometricData(predefinedType);
checkPredefined(type, predefinedType);
type = TypeOfBiometricData.getInstance(type);
checkPredefined(type, predefinedType);
ASN1InputStream aIn = new ASN1InputStream(type.toASN1Primitive().getEncoded());
ASN1Primitive obj = aIn.readObject();
type = TypeOfBiometricData.getInstance(obj);
checkPredefined(type, predefinedType);
}
private void checkPredefined(
TypeOfBiometricData type,
int value)
{
if (!type.isPredefined())
{
fail("predefined type expected but not found.");
}
if (type.getPredefinedBiometricType() != value)
{
fail("predefined type does not match.");
}
}
private void checkNonPredefined(
TypeOfBiometricData type,
ASN1ObjectIdentifier value)
{
if (type.isPredefined())
{
fail("predefined type found when not expected.");
}
if (!type.getBiometricDataOid().equals(value))
{
fail("data oid does not match.");
}
}
public static void main(
String[] args)
{
runTest(new TypeOfBiometricDataUnitTest());
}
}