public void InputContainsOnlyInvalidDataFromUtf32() { uint[] codepoints = TextEncoderTestHelper.GenerateOnlyInvalidUtf32CodePoints(TextEncoderConstants.DataLength / sizeof(uint)); ReadOnlySpan <byte> input = MemoryMarshal.AsBytes(codepoints.AsSpan()); Span <byte> output = new byte[16]; Assert.Equal(OperationStatus.InvalidData, Encodings.Utf32.ToUtf8(input, output, out int consumed, out int written)); Assert.Equal(0, consumed); Assert.Equal(0, written); }
public void InputContainsSomeInvalidDataFromUtf32() { uint[] codepoints = TextEncoderTestHelper.GenerateOnlyInvalidUtf32CodePoints(TextEncoderConstants.DataLength / sizeof(uint)); ReadOnlySpan <byte> input = MemoryMarshal.AsBytes(codepoints.AsSpan()); ReadOnlySpan <byte> expected = Text.Encoding.Convert(Text.Encoding.UTF32, Text.Encoding.UTF8, input.ToArray()); int expectedWritten = TextEncoderTestHelper.GetUtf8ByteCount(codepoints); Span <byte> output = new byte[expectedWritten]; Assert.Equal(OperationStatus.InvalidData, Encodings.Utf32.ToUtf8(input, output, out int consumed, out int written)); Assert.True(consumed < input.Length, "Consumed more input than expected"); Assert.Equal(expectedWritten, written); Assert.True(expected.Slice(0, expectedWritten).SequenceEqual(output)); }