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"); }
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"); }