public static void VerifyDecode(TagClass tagClass, int tagValue, bool constructed, string inputHex) { Asn1Tag expectedTag = new Asn1Tag(tagClass, tagValue, constructed); byte[] input = inputHex.HexToByteArray(); byte[] padded = input; Array.Resize(ref padded, input.Length + 3); int consumed; Asn1Tag tag; Assert.False(Asn1Tag.TryDecode(input.AsSpan(0, input.Length - 1), out tag, out consumed)); Assert.Equal(0, consumed); Assert.Equal(default(Asn1Tag), tag); Assert.Throws <AsnContentException>(() => Asn1Tag.Decode(input.AsSpan(0, input.Length - 1), out consumed)); Assert.Equal(0, consumed); Assert.True(Asn1Tag.TryDecode(padded, out tag, out consumed)); Assert.Equal(input.Length, consumed); Assert.Equal(expectedTag, tag); Assert.True(Asn1Tag.TryDecode(input, out tag, out consumed)); Assert.Equal(input.Length, consumed); Assert.Equal(expectedTag, tag); tag = Asn1Tag.Decode(padded, out consumed); Assert.Equal(input.Length, consumed); Assert.Equal(expectedTag, tag); tag = Asn1Tag.Decode(input, out consumed); Assert.Equal(input.Length, consumed); Assert.Equal(expectedTag, tag); }