public static void Universal15OKFromVerbose() { Asn1Tag tag = new Asn1Tag(TagClass.Universal, 15); Span <byte> encoded = stackalloc byte[1]; Assert.Equal(1, tag.CalculateEncodedSize()); tag.Encode(encoded); Assert.Equal("0F", encoded.ByteArrayToHex()); }
public static void VerifyEncode(TagClass tagClass, int tagValue, bool constructed, string expectedHex) { Asn1Tag tag = new Asn1Tag(tagClass, tagValue, constructed); Span <byte> buf = stackalloc byte[10]; Assert.False(tag.TryEncode(Span <byte> .Empty, out int written)); Assert.Equal(0, written); int expectedSize = expectedHex.Length / 2; Assert.Equal(expectedSize, tag.CalculateEncodedSize()); Assert.False(tag.TryEncode(buf.Slice(0, expectedSize - 1), out written)); Assert.Equal(0, written); AssertExtensions.Throws <ArgumentException>( "destination", () => { Span <byte> tmp = stackalloc byte[expectedSize - 1]; return(tag.Encode(tmp)); }); Assert.True(tag.TryEncode(buf, out written)); Assert.Equal(expectedSize, written); Assert.Equal(expectedHex, buf.Slice(0, written).ByteArrayToHex()); written = tag.Encode(buf.Slice(1)); Assert.Equal(expectedSize, written); Assert.Equal(expectedHex, buf.Slice(1, written).ByteArrayToHex()); Assert.True(tag.TryEncode(buf.Slice(0, expectedSize), out written)); Assert.Equal(expectedSize, written); Assert.Equal(expectedHex, buf.Slice(0, written).ByteArrayToHex()); written = tag.Encode(buf.Slice(1, expectedSize)); Assert.Equal(expectedSize, written); Assert.Equal(expectedHex, buf.Slice(1, written).ByteArrayToHex()); }