public static void EncoderExceptionFallbackBufferTest() { Encoder encoder = Encoding.GetEncoding("us-ascii", new EncoderExceptionFallback(), new DecoderExceptionFallback()).GetEncoder(); char [] chars = new char[] { '\uFFFF' }; byte [] bytes = new byte[2]; Assert.Throws <EncoderFallbackException>(() => encoder.GetBytes(chars, 0, 1, bytes, 0, true)); EncoderFallbackBuffer fallbackBuffer = encoder.FallbackBuffer; Assert.True(fallbackBuffer is EncoderExceptionFallbackBuffer, "Expected to get EncoderExceptionFallbackBuffer type"); Assert.Throws <EncoderFallbackException>(() => fallbackBuffer.Fallback(chars[0], 0)); Assert.Throws <EncoderFallbackException>(() => fallbackBuffer.Fallback('\u0040', 0)); Assert.Throws <EncoderFallbackException>(() => fallbackBuffer.Fallback('\uD800', '\uDC00', 0)); Assert.Equal(0, fallbackBuffer.Remaining); Assert.Equal('\u0000', fallbackBuffer.GetNextChar()); Assert.False(fallbackBuffer.MovePrevious(), "MovePrevious expected to always return false"); fallbackBuffer.Reset(); Assert.Equal(0, fallbackBuffer.Remaining); Assert.Equal('\u0000', fallbackBuffer.GetNextChar()); }
public override bool MovePrevious() { if (Data.HasValue) { return(LastResortEncoderFallbackBuffer.MovePrevious()); } Pos = 0; return(true); }
public static void EncoderReplacementFallbackBufferTest() { Encoder encoder = Encoding.GetEncoding("us-ascii", new EncoderReplacementFallback(), new DecoderReplacementFallback()).GetEncoder(); char [] chars = new char [] { '\uFFFF' }; byte [] bytes = new byte [2]; EncoderFallbackBuffer fallbackBuffer = encoder.FallbackBuffer; Assert.True(fallbackBuffer is EncoderReplacementFallbackBuffer, "Expected to get EncoderReplacementFallbackBuffer type"); Assert.True(fallbackBuffer.Fallback(chars[0], 0), "Expected we fallback on the given buffer"); Assert.Equal(1, fallbackBuffer.Remaining); Assert.False(fallbackBuffer.MovePrevious(), "Expected we cannot move back on the replacement buffer as we are at the Beginning of the buffer"); Assert.Equal('?', fallbackBuffer.GetNextChar()); Assert.True(fallbackBuffer.MovePrevious(), "Expected we can move back on the replacement buffer"); Assert.Equal('?', fallbackBuffer.GetNextChar()); fallbackBuffer.Reset(); Assert.Equal(0, fallbackBuffer.Remaining); Assert.Equal('\u0000', fallbackBuffer.GetNextChar()); Assert.False(fallbackBuffer.MovePrevious(), "Expected we cannot move back on the replacement buffer as we are rest the buffer"); }