summary refs log tree commit diff
path: root/crypto/test
diff options
context:
space:
mode:
authorPeter Dettman <peter.dettman@bouncycastle.org>2013-11-01 20:06:11 +0700
committerPeter Dettman <peter.dettman@bouncycastle.org>2013-11-01 20:06:11 +0700
commitce1f2e3ff0a0d0004aecaefed95d2b16defd9554 (patch)
tree5d57d7400e871e77b648cd4a9b0651ba5e0e37bb /crypto/test
parentMinor edit to comment (diff)
downloadBouncyCastle.NET-ed25519-ce1f2e3ff0a0d0004aecaefed95d2b16defd9554.tar.xz
Add EnumeratedTest class
Diffstat (limited to 'crypto/test')
-rw-r--r--crypto/test/src/asn1/test/EnumeratedTest.cs113
1 files changed, 113 insertions, 0 deletions
diff --git a/crypto/test/src/asn1/test/EnumeratedTest.cs b/crypto/test/src/asn1/test/EnumeratedTest.cs
new file mode 100644
index 000000000..d881e4c3e
--- /dev/null
+++ b/crypto/test/src/asn1/test/EnumeratedTest.cs
@@ -0,0 +1,113 @@
+namespace crypto.test.src.asn1.test
+{
+    using NUnit.Framework;
+
+    using Org.BouncyCastle.Asn1;
+    using Org.BouncyCastle.Utilities.Encoders;
+
+    /// <summary>
+    /// Tests used to verify correct decoding of the ENUMERATED type.
+    /// </summary>
+    [TestFixture]
+    public class EnumeratedTest
+    {
+        /// <summary>
+        /// Test vector used to test decoding of multiple items.
+        /// </summary>
+        /// <remarks>This sample uses an ENUMERATED and a BOOLEAN.</remarks>
+        private static readonly byte[] MultipleSingleByteItems = Hex.Decode("30060a01010101ff");
+
+        /// <summary>
+        /// Test vector used to test decoding of multiple items.
+        /// </summary>
+        /// <remarks>This sample uses two ENUMERATEDs.</remarks>
+        private static readonly byte[] MultipleDoubleByteItems = Hex.Decode("30080a0201010a020202");
+
+        /// <summary>
+        /// Test vector used to test decoding of multiple items.
+        /// </summary>
+        /// <remarks>This sample uses an ENUMERATED and an OBJECT IDENTIFIER.</remarks>
+        private static readonly byte[] MultipleTripleByteItems = Hex.Decode("300a0a0301010106032b0601");
+
+        /// <summary>
+        /// Makes sure multiple identically sized values are parsed correctly.
+        /// </summary>
+        [Test]
+        public void TestReadingMultipleSingleByteItems()
+        {
+            Asn1Object obj = Asn1Object.FromByteArray(MultipleSingleByteItems);
+
+            Assert.IsTrue(obj is DerSequence, "Null ASN.1 SEQUENCE");
+
+            DerSequence sequence = (DerSequence)obj;
+
+            Assert.AreEqual(2, sequence.Count, "2 items expected");
+
+            DerEnumerated enumerated = sequence[0] as DerEnumerated;
+
+            Assert.IsNotNull(enumerated, "ENUMERATED expected");
+
+            Assert.AreEqual(1, enumerated.Value.IntValue, "Unexpected ENUMERATED value");
+
+            DerBoolean boolean = sequence[1] as DerBoolean;
+
+            Assert.IsNotNull(boolean, "BOOLEAN expected");
+
+            Assert.IsTrue(boolean.IsTrue, "Unexpected BOOLEAN value");
+        }
+
+        /// <summary>
+        /// Makes sure multiple identically sized values are parsed correctly.
+        /// </summary>
+        [Test]
+        public void TestReadingMultipleDoubleByteItems()
+        {
+            Asn1Object obj = Asn1Object.FromByteArray(MultipleDoubleByteItems);
+
+            Assert.IsTrue(obj is DerSequence, "Null ASN.1 SEQUENCE");
+
+            DerSequence sequence = (DerSequence)obj;
+
+            Assert.AreEqual(2, sequence.Count, "2 items expected");
+
+            DerEnumerated enumerated1 = sequence[0] as DerEnumerated;
+
+            Assert.IsNotNull(enumerated1, "ENUMERATED expected");
+
+            Assert.AreEqual(257, enumerated1.Value.IntValue, "Unexpected ENUMERATED value");
+
+            DerEnumerated enumerated2 = sequence[1] as DerEnumerated;
+
+            Assert.IsNotNull(enumerated2, "ENUMERATED expected");
+
+            Assert.AreEqual(514, enumerated2.Value.IntValue, "Unexpected ENUMERATED value");
+        }
+
+        /// <summary>
+        /// Makes sure multiple identically sized values are parsed correctly.
+        /// </summary>
+        [Test]
+        public void TestReadingMultipleTripleByteItems()
+        {
+            Asn1Object obj = Asn1Object.FromByteArray(MultipleTripleByteItems);
+
+            Assert.IsTrue(obj is DerSequence, "Null ASN.1 SEQUENCE");
+
+            DerSequence sequence = (DerSequence)obj;
+
+            Assert.AreEqual(2, sequence.Count, "2 items expected");
+
+            DerEnumerated enumerated = sequence[0] as DerEnumerated;
+
+            Assert.IsNotNull(enumerated, "ENUMERATED expected");
+
+            Assert.AreEqual(65793, enumerated.Value.IntValue, "Unexpected ENUMERATED value");
+
+            DerObjectIdentifier objectId = sequence[1] as DerObjectIdentifier;
+
+            Assert.IsNotNull(objectId, "OBJECT IDENTIFIER expected");
+
+            Assert.AreEqual("1.3.6.1", objectId.Id, "Unexpected OBJECT IDENTIFIER value");
+        }
+    }
+}