package org.bouncycastle.asn1.test;
import java.io.IOException;
import org.bouncycastle.asn1.ASN1InputStream;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.isismtt.x509.MonetaryLimit;
public class MonetaryLimitUnitTest
extends ASN1UnitTest
{
public String getName()
{
return "MonetaryLimit";
}
public void performTest()
throws Exception
{
String currency = "AUD";
int amount = 1;
int exponent = 2;
MonetaryLimit limit = new MonetaryLimit(currency, amount, exponent);
checkConstruction(limit, currency, amount, exponent);
limit = MonetaryLimit.getInstance(null);
if (limit != null)
{
fail("null getInstance() failed.");
}
try
{
MonetaryLimit.getInstance(new Object());
fail("getInstance() failed to detect bad object.");
}
catch (IllegalArgumentException e)
{
}
}
private void checkConstruction(
MonetaryLimit limit,
String currency,
int amount,
int exponent)
throws IOException
{
checkValues(limit, currency, amount, exponent);
limit = MonetaryLimit.getInstance(limit);
checkValues(limit, currency, amount, exponent);
ASN1InputStream aIn = new ASN1InputStream(limit.toASN1Primitive().getEncoded());
ASN1Sequence seq = (ASN1Sequence)aIn.readObject();
limit = MonetaryLimit.getInstance(seq);
checkValues(limit, currency, amount, exponent);
}
private void checkValues(
MonetaryLimit limit,
String currency,
int amount,
int exponent)
{
checkMandatoryField("currency", currency, limit.getCurrency());
checkMandatoryField("amount", amount, limit.getAmount().intValue());
checkMandatoryField("exponent", exponent, limit.getExponent().intValue());
}
public static void main(
String[] args)
{
runTest(new MonetaryLimitUnitTest());
}
}