private void MatchUTF8SequenceOverrunTest(byte[] inbytes, int numBytes, bool isQuery, bool iriParsing) { Encoding noFallbackCharUTF8 = Encoding.GetEncoding( Encoding.UTF8.CodePage, new EncoderReplacementFallback(""), new DecoderReplacementFallback("")); char[] chars = noFallbackCharUTF8.GetChars(inbytes, 0, numBytes); Assert.False( chars.Length == 0, "Invalid test: MatchUTF8Sequence cannot be called when no Unicode characters can be decoded."); // dest is guaranteed to have space for the escaped version of all characters (in the form of %HH). char[] dest = new char[inbytes.Length * 3]; char[] unescapedChars = new char[inbytes.Length]; chars.CopyTo(unescapedChars, 0); int expectedLength = inbytes.Length * 3; ValueStringBuilder vsb = HeapCheck.CreateFilledPooledArray(expectedLength); vsb.Length = 32; UriHelper.MatchUTF8Sequence( ref vsb, unescapedChars, chars.Length, inbytes, numBytes, isQuery, iriParsing); // Check for buffer under and overruns. HeapCheck.ValidatePadding(vsb, expectedLength); }