diff options
Diffstat (limited to 'libraries/spongycastle/core/src/test/java/org/spongycastle/asn1/test/QCStatementUnitTest.java')
-rw-r--r-- | libraries/spongycastle/core/src/test/java/org/spongycastle/asn1/test/QCStatementUnitTest.java | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/libraries/spongycastle/core/src/test/java/org/spongycastle/asn1/test/QCStatementUnitTest.java b/libraries/spongycastle/core/src/test/java/org/spongycastle/asn1/test/QCStatementUnitTest.java new file mode 100644 index 000000000..02094ed12 --- /dev/null +++ b/libraries/spongycastle/core/src/test/java/org/spongycastle/asn1/test/QCStatementUnitTest.java @@ -0,0 +1,105 @@ +package org.spongycastle.asn1.test; + +import java.io.IOException; + +import org.spongycastle.asn1.ASN1Encodable; +import org.spongycastle.asn1.ASN1InputStream; +import org.spongycastle.asn1.ASN1ObjectIdentifier; +import org.spongycastle.asn1.ASN1Sequence; +import org.spongycastle.asn1.DERObjectIdentifier; +import org.spongycastle.asn1.x509.qualified.QCStatement; +import org.spongycastle.asn1.x509.qualified.RFC3739QCObjectIdentifiers; +import org.spongycastle.asn1.x509.qualified.SemanticsInformation; +import org.spongycastle.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, + DERObjectIdentifier 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, + DERObjectIdentifier 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()); + } +} |