public void InputContainsAllCodePoints()
        {
            string allChars = TextEncoderTestHelper.GenerateAllCharacters();

            ValidateFromUtf16(allChars);
            ValidateFromUtf32(allChars);
        }
        public void InputBufferContainsAllCodePoints(TextEncoderTestHelper.SupportedEncoding from)
        {
            string inputString = TextEncoderTestHelper.GenerateAllCharacters();

            byte[]      expectedBytes;
            Span <byte> encodedBytes;

            int bytesWritten;

            switch (from)
            {
            case TextEncoderTestHelper.SupportedEncoding.FromUtf8:
                byte[] inputStringUtf8 = testEncoder.GetBytes(inputString);
                expectedBytes = Text.Encoding.Convert(testEncoder, testEncoder, inputStringUtf8);
                encodedBytes  = new Span <byte>(new byte[expectedBytes.Length]);
                ReadOnlySpan <byte> inputUtf8 = inputStringUtf8;
                Assert.True(utf8.TryEncode(inputUtf8, encodedBytes, out int charactersConsumed, out bytesWritten));
                Assert.Equal(inputUtf8.Length, charactersConsumed);
                break;

            case TextEncoderTestHelper.SupportedEncoding.FromUtf16:
                byte[] inputStringUtf16 = testEncoderUnicode.GetBytes(inputString);
                expectedBytes = Text.Encoding.Convert(testEncoderUnicode, testEncoder, inputStringUtf16);
                encodedBytes  = new Span <byte>(new byte[expectedBytes.Length]);
                ReadOnlySpan <char> inputUtf16 = inputStringUtf16.AsSpan().NonPortableCast <byte, char>();
                Assert.True(utf8.TryEncode(inputUtf16, encodedBytes, out charactersConsumed, out bytesWritten));
                Assert.Equal(inputUtf16.Length, charactersConsumed);
                break;

            case TextEncoderTestHelper.SupportedEncoding.FromString:
                inputStringUtf16 = testEncoderUnicode.GetBytes(inputString);
                expectedBytes    = Text.Encoding.Convert(testEncoderUnicode, testEncoder, inputStringUtf16);
                encodedBytes     = new Span <byte>(new byte[expectedBytes.Length]);
                string inputStr = inputString;
                Assert.True(utf8.TryEncode(inputStr, encodedBytes, out bytesWritten));
                break;

            case TextEncoderTestHelper.SupportedEncoding.FromUtf32:
            default:
                byte[] inputStringUtf32 = testEncoderUtf32.GetBytes(inputString);
                expectedBytes = Text.Encoding.Convert(testEncoderUtf32, testEncoder, inputStringUtf32);
                encodedBytes  = new Span <byte>(new byte[expectedBytes.Length]);
                ReadOnlySpan <uint> input = inputStringUtf32.AsSpan().NonPortableCast <byte, uint>();
                Assert.True(utf8.TryEncode(input, encodedBytes, out charactersConsumed, out bytesWritten));
                Assert.Equal(input.Length, charactersConsumed);
                break;
            }

            Assert.Equal(expectedBytes.Length, bytesWritten);
            Assert.True(expectedBytes.AsSpan().SequenceEqual(encodedBytes));
        }