//[InlineData(TextEncoderTestHelper.SupportedEncoding.FromUtf32)] // Open issue: https://github.com/dotnet/corefxlab/issues/1513 public void InputBufferContainsOnlyInvalidData(TextEncoderTestHelper.SupportedEncoding from) { string inputStringLow = TextEncoderTestHelper.GenerateOnlyInvalidString(TextEncoderConstants.DataLength); string inputStringHigh = TextEncoderTestHelper.GenerateOnlyInvalidString(TextEncoderConstants.DataLength, true); byte[] inputUtf8Bytes = TextEncoderTestHelper.GenerateOnlyInvalidUtf8Bytes(TextEncoderConstants.DataLength); int bytesWritten; switch (from) { case TextEncoderTestHelper.SupportedEncoding.FromUtf8: byte[] expectedBytes = Text.Encoding.Convert(testEncoder, testEncoder, inputUtf8Bytes); Span <byte> encodedBytes = new Span <byte>(new byte[expectedBytes.Length]); ReadOnlySpan <byte> inputUtf8 = inputUtf8Bytes; Assert.False(utf8.TryEncode(inputUtf8, encodedBytes, out int charactersConsumed, out bytesWritten)); Assert.Equal(0, charactersConsumed); break; case TextEncoderTestHelper.SupportedEncoding.FromUtf16: byte[] inputStringUtf16 = testEncoderUnicode.GetBytes(inputStringLow); expectedBytes = Text.Encoding.Convert(testEncoderUnicode, testEncoder, inputStringUtf16); encodedBytes = new Span <byte>(new byte[expectedBytes.Length]); ReadOnlySpan <char> inputUtf16 = inputStringLow.AsSpan(); Assert.False(utf8.TryEncode(inputUtf16, encodedBytes, out charactersConsumed, out bytesWritten)); Assert.Equal(0, charactersConsumed); inputStringUtf16 = testEncoderUnicode.GetBytes(inputStringHigh); expectedBytes = Text.Encoding.Convert(testEncoderUnicode, testEncoder, inputStringUtf16); encodedBytes = new Span <byte>(new byte[expectedBytes.Length]); inputUtf16 = inputStringHigh.AsSpan(); Assert.False(utf8.TryEncode(inputUtf16, encodedBytes, out charactersConsumed, out bytesWritten)); Assert.Equal(0, charactersConsumed); break; case TextEncoderTestHelper.SupportedEncoding.FromString: inputStringUtf16 = testEncoderUnicode.GetBytes(inputStringLow); expectedBytes = Text.Encoding.Convert(testEncoderUnicode, testEncoder, inputStringUtf16); encodedBytes = new Span <byte>(new byte[expectedBytes.Length]); string inputStr = inputStringLow; Assert.False(utf8.TryEncode(inputStr, encodedBytes, out bytesWritten)); inputStringUtf16 = testEncoderUnicode.GetBytes(inputStringHigh); expectedBytes = Text.Encoding.Convert(testEncoderUnicode, testEncoder, inputStringUtf16); encodedBytes = new Span <byte>(new byte[expectedBytes.Length]); inputStr = inputStringHigh; Assert.False(utf8.TryEncode(inputStr, encodedBytes, out bytesWritten)); break; case TextEncoderTestHelper.SupportedEncoding.FromUtf32: // Invalid if codePoint > 0x10FFFF default: expectedBytes = Text.Encoding.Convert(testEncoderUtf32, testEncoder, inputUtf8Bytes); encodedBytes = new Span <byte>(new byte[expectedBytes.Length]); ReadOnlySpan <uint> input = inputUtf8Bytes.AsSpan().NonPortableCast <byte, uint>(); Assert.False(utf8.TryEncode(input, encodedBytes, out charactersConsumed, out bytesWritten)); Assert.Equal(0, charactersConsumed); break; } Assert.Equal(0, bytesWritten); }