diff options
Diffstat (limited to 'core/src/test/java/org/spongycastle/asn1/test/EqualsAndHashCodeTest.java')
-rw-r--r-- | core/src/test/java/org/spongycastle/asn1/test/EqualsAndHashCodeTest.java | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/core/src/test/java/org/spongycastle/asn1/test/EqualsAndHashCodeTest.java b/core/src/test/java/org/spongycastle/asn1/test/EqualsAndHashCodeTest.java new file mode 100644 index 00000000..1993d016 --- /dev/null +++ b/core/src/test/java/org/spongycastle/asn1/test/EqualsAndHashCodeTest.java @@ -0,0 +1,127 @@ +package org.spongycastle.asn1.test; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.util.Date; + +import org.spongycastle.asn1.ASN1Boolean; +import org.spongycastle.asn1.ASN1Enumerated; +import org.spongycastle.asn1.ASN1InputStream; +import org.spongycastle.asn1.ASN1Integer; +import org.spongycastle.asn1.ASN1ObjectIdentifier; +import org.spongycastle.asn1.ASN1OutputStream; +import org.spongycastle.asn1.ASN1Primitive; +import org.spongycastle.asn1.BERConstructedOctetString; +import org.spongycastle.asn1.BERSequence; +import org.spongycastle.asn1.BERSet; +import org.spongycastle.asn1.BERTaggedObject; +import org.spongycastle.asn1.DERApplicationSpecific; +import org.spongycastle.asn1.DERBMPString; +import org.spongycastle.asn1.DERBitString; +import org.spongycastle.asn1.DERGeneralString; +import org.spongycastle.asn1.DERGeneralizedTime; +import org.spongycastle.asn1.DERIA5String; +import org.spongycastle.asn1.DERNull; +import org.spongycastle.asn1.DERNumericString; +import org.spongycastle.asn1.DEROctetString; +import org.spongycastle.asn1.DERPrintableString; +import org.spongycastle.asn1.DERSequence; +import org.spongycastle.asn1.DERSet; +import org.spongycastle.asn1.DERT61String; +import org.spongycastle.asn1.DERTaggedObject; +import org.spongycastle.asn1.DERUTCTime; +import org.spongycastle.asn1.DERUTF8String; +import org.spongycastle.asn1.DERUniversalString; +import org.spongycastle.asn1.DERVisibleString; +import org.spongycastle.util.test.SimpleTestResult; +import org.spongycastle.util.test.Test; +import org.spongycastle.util.test.TestResult; + +public class EqualsAndHashCodeTest + implements Test +{ + public TestResult perform() + { + byte[] data = { 0, 1, 0, 1, 0, 0, 1 }; + + ASN1Primitive values[] = { + new BERConstructedOctetString(data), + new BERSequence(new DERPrintableString("hello world")), + new BERSet(new DERPrintableString("hello world")), + new BERTaggedObject(0, new DERPrintableString("hello world")), + new DERApplicationSpecific(0, data), + new DERBitString(data), + new DERBMPString("hello world"), + new ASN1Boolean(true), + new ASN1Boolean(false), + new ASN1Enumerated(100), + new DERGeneralizedTime("20070315173729Z"), + new DERGeneralString("hello world"), + new DERIA5String("hello"), + new ASN1Integer(1000), + new DERNull(), + new DERNumericString("123456"), + new ASN1ObjectIdentifier("1.1.1.10000.1"), + new DEROctetString(data), + new DERPrintableString("hello world"), + new DERSequence(new DERPrintableString("hello world")), + new DERSet(new DERPrintableString("hello world")), + new DERT61String("hello world"), + new DERTaggedObject(0, new DERPrintableString("hello world")), + new DERUniversalString(data), + new DERUTCTime(new Date()), + new DERUTF8String("hello world"), + new DERVisibleString("hello world") + }; + + try + { + ByteArrayOutputStream bOut = new ByteArrayOutputStream(); + ASN1OutputStream aOut = new ASN1OutputStream(bOut); + + for (int i = 0; i != values.length; i++) + { + aOut.writeObject(values[i]); + } + + ASN1Primitive[] readValues = new ASN1Primitive[values.length]; + + ByteArrayInputStream bIn = new ByteArrayInputStream(bOut.toByteArray()); + ASN1InputStream aIn = new ASN1InputStream(bIn); + + for (int i = 0; i != values.length; i++) + { + ASN1Primitive o = aIn.readObject(); + if (!o.equals(values[i])) + { + return new SimpleTestResult(false, getName() + ": Failed equality test for " + o.getClass()); + } + + if (o.hashCode() != values[i].hashCode()) + { + return new SimpleTestResult(false, getName() + ": Failed hashCode test for " + o.getClass()); + } + } + } + catch (Exception e) + { + return new SimpleTestResult(false, getName() + ": Failed - exception " + e.toString(), e); + } + + return new SimpleTestResult(true, getName() + ": Okay"); + } + + public String getName() + { + return "EqualsAndHashCode"; + } + + public static void main( + String[] args) + { + EqualsAndHashCodeTest test = new EqualsAndHashCodeTest(); + TestResult result = test.perform(); + + System.out.println(result); + } +} |