Пример #1
0
        public void TryDecodeToUnicodeMultipleCodePoints(bool useUtf8Encoder, uint[] expectedCodePointsArray, byte[] inputBytesArray, Buffers.TransformationStatus expectedReturnVal)
        {
            ReadOnlySpan <byte> expectedBytes = expectedCodePointsArray.AsSpan().AsBytes();
            ReadOnlySpan <byte> inputBytes    = inputBytesArray;
            Span <byte>         codePoints    = new byte[expectedBytes.Length];
            int written;
            int consumed;

            Buffers.TransformationStatus result;

            if (useUtf8Encoder)
            {
                result = Encoders.Utf8.ToUtf32(inputBytes, codePoints, out consumed, out written);
            }
            else
            {
                result = Encoders.Utf16.ToUtf32(inputBytes, codePoints, out consumed, out written);
            }

            Assert.Equal(expectedReturnVal, result);
            Assert.Equal(inputBytes.Length, consumed);
            Assert.Equal(codePoints.Length, written);
            Assert.True(expectedBytes.SequenceEqual(codePoints), "Bad output sequence");
        }
Пример #2
0
        public void TryEncodeFromUnicodeMultipleCodePoints(bool useUtf8Encoder, byte[] expectedBytes, uint[] codePointsArray, Buffers.TransformationStatus expectedReturnVal)
        {
            ReadOnlySpan <byte> codePoints = codePointsArray.AsSpan().AsBytes();
            Span <byte>         buffer     = new byte[expectedBytes.Length];
            int written;
            int consumed;

            Buffers.TransformationStatus result;

            if (useUtf8Encoder)
            {
                result = Encoders.Utf32.ToUtf8(codePoints, buffer, out consumed, out written);
            }
            else
            {
                result = Encoders.Utf32.ToUtf16(codePoints, buffer, out consumed, out written);
            }

            Assert.Equal(expectedReturnVal, result);
            Assert.Equal(expectedBytes.Length, written);

            if (result == Buffers.TransformationStatus.Done)
            {
                Assert.Equal(codePoints.Length, consumed);
            }

            Assert.True(buffer.Slice(0, written).SequenceEqual(expectedBytes), "Bad output sequence");
        }