diff options
Diffstat (limited to 'bcprov/src/main/java/org/bouncycastle/asn1/test/QCStatementUnitTest.java')
-rw-r--r-- | bcprov/src/main/java/org/bouncycastle/asn1/test/QCStatementUnitTest.java | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/test/QCStatementUnitTest.java b/bcprov/src/main/java/org/bouncycastle/asn1/test/QCStatementUnitTest.java new file mode 100644 index 0000000..d7a84a5 --- /dev/null +++ b/bcprov/src/main/java/org/bouncycastle/asn1/test/QCStatementUnitTest.java @@ -0,0 +1,104 @@ +package org.bouncycastle.asn1.test; + +import java.io.IOException; + +import org.bouncycastle.asn1.ASN1Encodable; +import org.bouncycastle.asn1.ASN1InputStream; +import org.bouncycastle.asn1.ASN1ObjectIdentifier; +import org.bouncycastle.asn1.ASN1Sequence; +import org.bouncycastle.asn1.x509.qualified.QCStatement; +import org.bouncycastle.asn1.x509.qualified.RFC3739QCObjectIdentifiers; +import org.bouncycastle.asn1.x509.qualified.SemanticsInformation; +import org.bouncycastle.util.test.SimpleTest; + +public class QCStatementUnitTest + extends SimpleTest +{ + public String getName() + { + return "QCStatement"; + } + + public void performTest() + throws Exception + { + QCStatement mv = new QCStatement(RFC3739QCObjectIdentifiers.id_qcs_pkixQCSyntax_v1); + + checkConstruction(mv, RFC3739QCObjectIdentifiers.id_qcs_pkixQCSyntax_v1, null); + + ASN1Encodable info = new SemanticsInformation(new ASN1ObjectIdentifier("1.2")); + + mv = new QCStatement(RFC3739QCObjectIdentifiers.id_qcs_pkixQCSyntax_v1, info); + + checkConstruction(mv, RFC3739QCObjectIdentifiers.id_qcs_pkixQCSyntax_v1, info); + + mv = QCStatement.getInstance(null); + + if (mv != null) + { + fail("null getInstance() failed."); + } + + try + { + QCStatement.getInstance(new Object()); + + fail("getInstance() failed to detect bad object."); + } + catch (IllegalArgumentException e) + { + // expected + } + } + + private void checkConstruction( + QCStatement mv, + ASN1ObjectIdentifier statementId, + ASN1Encodable statementInfo) + throws IOException + { + checkStatement(mv, statementId, statementInfo); + + mv = QCStatement.getInstance(mv); + + checkStatement(mv, statementId, statementInfo); + + ASN1InputStream aIn = new ASN1InputStream(mv.toASN1Object().getEncoded()); + + ASN1Sequence seq = (ASN1Sequence)aIn.readObject(); + + mv = QCStatement.getInstance(seq); + + checkStatement(mv, statementId, statementInfo); + } + + private void checkStatement( + QCStatement qcs, + ASN1ObjectIdentifier statementId, + ASN1Encodable statementInfo) + throws IOException + { + if (!qcs.getStatementId().equals(statementId)) + { + fail("statementIds don't match."); + } + + if (statementInfo != null) + { + if (!qcs.getStatementInfo().equals(statementInfo)) + { + fail("statementInfos don't match."); + } + } + else if (qcs.getStatementInfo() != null) + { + fail("statementInfo found when none expected."); + } + } + + public static void main( + String[] args) + { + runTest(new QCStatementUnitTest()); + } +} |