@@ -272,6 +272,23 @@ public void BasicDecodingWithFinalBlockTrueKnownInputInvalid(string inputString,
272272 Assert . True ( Base64TestHelper . VerifyDecodingCorrectness ( expectedConsumed , decodedBytes . Length , source , decodedBytes ) ) ;
273273 }
274274
275+ [ Theory ]
276+ [ InlineData ( "\u00ec z/T" , 0 , 0 ) ] // scalar code-path
277+ [ InlineData ( "z/Ta123\u00ec " , 4 , 3 ) ]
278+ [ InlineData ( "\u00ec z/TpH7sqEkerqMweH1uSw==" , 0 , 0 ) ] // Vector128 code-path
279+ [ InlineData ( "z/TpH7sqEkerqMweH1uSw\u00ec ==" , 20 , 15 ) ]
280+ [ InlineData ( "\u00ec z/TpH7sqEkerqMweH1uSw1a5ebaAF9xa8B0ze1wet4epo==" , 0 , 0 ) ] // Vector256 / AVX code-path
281+ [ InlineData ( "z/TpH7sqEkerqMweH1uSw1a5ebaAF9xa8B0ze1wet4epo\u00ec ==" , 44 , 33 ) ]
282+ public void BasicDecodingNonAsciiInputInvalid ( string inputString , int expectedConsumed , int expectedWritten )
283+ {
284+ Span < byte > source = Encoding . UTF8 . GetBytes ( inputString ) ;
285+ Span < byte > decodedBytes = new byte [ Base64 . GetMaxDecodedFromUtf8Length ( source . Length ) ] ;
286+
287+ Assert . Equal ( OperationStatus . InvalidData , Base64 . DecodeFromUtf8 ( source , decodedBytes , out int consumed , out int decodedByteCount ) ) ;
288+ Assert . Equal ( expectedConsumed , consumed ) ;
289+ Assert . Equal ( expectedWritten , decodedByteCount ) ;
290+ }
291+
275292 [ Theory ]
276293 [ InlineData ( "AQID" , 3 ) ]
277294 [ InlineData ( "AQIDBAUG" , 6 ) ]
0 commit comments