diff options
Diffstat (limited to 'libraries/spongycastle/core/src/test/java/org/spongycastle/asn1/test/SemanticsInformationUnitTest.java')
-rw-r--r-- | libraries/spongycastle/core/src/test/java/org/spongycastle/asn1/test/SemanticsInformationUnitTest.java | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/libraries/spongycastle/core/src/test/java/org/spongycastle/asn1/test/SemanticsInformationUnitTest.java b/libraries/spongycastle/core/src/test/java/org/spongycastle/asn1/test/SemanticsInformationUnitTest.java new file mode 100644 index 000000000..6c437485f --- /dev/null +++ b/libraries/spongycastle/core/src/test/java/org/spongycastle/asn1/test/SemanticsInformationUnitTest.java @@ -0,0 +1,136 @@ +package org.spongycastle.asn1.test; + +import org.spongycastle.asn1.ASN1EncodableVector; +import org.spongycastle.asn1.ASN1InputStream; +import org.spongycastle.asn1.ASN1ObjectIdentifier; +import org.spongycastle.asn1.ASN1Sequence; +import org.spongycastle.asn1.DERObjectIdentifier; +import org.spongycastle.asn1.DERSequence; +import org.spongycastle.asn1.x509.GeneralName; +import org.spongycastle.asn1.x509.X509Name; +import org.spongycastle.asn1.x509.qualified.SemanticsInformation; +import org.spongycastle.util.test.SimpleTest; + +public class SemanticsInformationUnitTest + extends SimpleTest +{ + public String getName() + { + return "SemanticsInformation"; + } + + public void performTest() + throws Exception + { + ASN1ObjectIdentifier statementId = new ASN1ObjectIdentifier("1.1"); + SemanticsInformation mv = new SemanticsInformation(statementId); + + checkConstruction(mv, statementId, null); + + GeneralName[] names = new GeneralName[2]; + + names[0] = new GeneralName(GeneralName.rfc822Name, "test@test.org"); + names[1] = new GeneralName(new X509Name("cn=test")); + + mv = new SemanticsInformation(statementId, names); + + checkConstruction(mv, statementId, names); + + mv = new SemanticsInformation(names); + + checkConstruction(mv, null, names); + + mv = SemanticsInformation.getInstance(null); + + if (mv != null) + { + fail("null getInstance() failed."); + } + + try + { + SemanticsInformation.getInstance(new Object()); + + fail("getInstance() failed to detect bad object."); + } + catch (IllegalArgumentException e) + { + // expected + } + + try + { + ASN1EncodableVector v = new ASN1EncodableVector(); + + SemanticsInformation.getInstance(new DERSequence(v)); + + fail("constructor failed to detect empty sequence."); + } + catch (IllegalArgumentException e) + { + // expected + } + } + + private void checkConstruction( + SemanticsInformation mv, + DERObjectIdentifier semanticsIdentifier, + GeneralName[] names) + throws Exception + { + checkStatement(mv, semanticsIdentifier, names); + + mv = SemanticsInformation.getInstance(mv); + + checkStatement(mv, semanticsIdentifier, names); + + ASN1InputStream aIn = new ASN1InputStream(mv.toASN1Object().getEncoded()); + + ASN1Sequence seq = (ASN1Sequence)aIn.readObject(); + + mv = SemanticsInformation.getInstance(seq); + + checkStatement(mv, semanticsIdentifier, names); + } + + private void checkStatement( + SemanticsInformation si, + DERObjectIdentifier id, + GeneralName[] names) + { + if (id != null) + { + if (!si.getSemanticsIdentifier().equals(id)) + { + fail("ids don't match."); + } + } + else if (si.getSemanticsIdentifier() != null) + { + fail("statementId found when none expected."); + } + + if (names != null) + { + GeneralName[] siNames = si.getNameRegistrationAuthorities(); + + for (int i = 0; i != siNames.length; i++) + { + if (!names[i].equals(siNames[i])) + { + fail("name registration authorities don't match."); + } + } + } + else if (si.getNameRegistrationAuthorities() != null) + { + fail("name registration authorities found when none expected."); + } + } + + public static void main( + String[] args) + { + runTest(new SemanticsInformationUnitTest()); + } +} |