public void Ctor_Empty() { EncoderExceptionFallback fallback = new EncoderExceptionFallback(); Assert.Equal(0, fallback.MaxCharCount); Assert.Equal(654, fallback.GetHashCode()); }
public void CreateFallbackBuffer_Fallback_InvalidSurrogateChars_ThrowsArgumentOutOfRangeException() { EncoderFallbackBuffer buffer = new EncoderExceptionFallback().CreateFallbackBuffer(); AssertExtensions.Throws <ArgumentOutOfRangeException>("charUnknownHigh", () => buffer.Fallback('a', '\uDC00', 0)); AssertExtensions.Throws <ArgumentOutOfRangeException>("charUnknownLow", () => buffer.Fallback('\uD800', 'a', 0)); }
internal static Encoding EncodingFromAcceptCharset(string acceptCharset) { Encoding fallbackEncoding = null; if (!string.IsNullOrEmpty(acceptCharset)) { List <CharsetPart> list = new List <CharsetPart>(AcceptCharsetParts(acceptCharset)); list.Sort((Comparison <CharsetPart>)((x, y) => (y.Quality - x.Quality))); EncoderExceptionFallback encoderFallback = new EncoderExceptionFallback(); DecoderExceptionFallback decoderFallback = new DecoderExceptionFallback(); foreach (CharsetPart part in list) { if (part.Quality > 0) { if (string.Compare("UTF-8", part.Charset, StringComparison.OrdinalIgnoreCase) == 0) { fallbackEncoding = FallbackEncoding; break; } try { fallbackEncoding = Encoding.GetEncoding(part.Charset, encoderFallback, decoderFallback); break; } catch (ArgumentException) { } } } } return(fallbackEncoding ?? FallbackEncoding); }
public void CreateFallbackBuffer_Fallback_InvalidSurrogateChars_ThrowsArgumentOutOfRangeException() { EncoderFallbackBuffer buffer = new EncoderExceptionFallback().CreateFallbackBuffer(); Assert.Throws<ArgumentOutOfRangeException>("charUnknownHigh", () => buffer.Fallback('a', '\uDC00', 0)); Assert.Throws<ArgumentOutOfRangeException>("CharUnknownLow", () => buffer.Fallback('\uD800', 'a', 0)); }
public void CreateFallbackBuffer_Fallback_InvalidSurrogateChars_ThrowsArgumentOutOfRangeException() { EncoderFallbackBuffer buffer = new EncoderExceptionFallback().CreateFallbackBuffer(); Assert.Throws <ArgumentOutOfRangeException>("charUnknownHigh", () => buffer.Fallback('a', '\uDC00', 0)); Assert.Throws <ArgumentOutOfRangeException>( RuntimeDetection.IsNetFramework ? "CharUnknownLow" : "charUnknownLow", () => buffer.Fallback('\uD800', 'a', 0)); }
/// <summary>Gets the best encoding available for the specified charset request.</summary> /// <param name="acceptCharset"> /// The Accept-Charset header value (eg: "iso-8859-5, unicode-1-1;q=0.8"). /// </param> /// <returns>An Encoding object appropriate to the specifed charset request.</returns> internal static Encoding EncodingFromAcceptCharset(string acceptCharset) { // Determines the appropriate encoding mapping according to // RFC 2616.14.2 (http://tools.ietf.org/html/rfc2616#section-14.2). Encoding result = null; if (!string.IsNullOrEmpty(acceptCharset)) { // PERF: keep a cache of original strings to resolved Encoding. List <CharsetPart> parts = new List <CharsetPart>(AcceptCharsetParts(acceptCharset)); parts.Sort(delegate(CharsetPart x, CharsetPart y) { return(y.Quality - x.Quality); }); var encoderFallback = new EncoderExceptionFallback(); var decoderFallback = new DecoderExceptionFallback(); foreach (CharsetPart part in parts) { if (part.Quality > 0) { // When UTF-8 is specified, select the version that doesn't use the BOM. if (String.Compare("utf-8", part.Charset, StringComparison.OrdinalIgnoreCase) == 0) { result = FallbackEncoding; break; } else { try { result = Encoding.GetEncoding(part.Charset, encoderFallback, decoderFallback); break; } catch (ArgumentException) { // This exception is thrown when the character // set isn't supported - it is ignored so // other possible charsets are evaluated. } } } } } // No Charset was specifed, or if charsets were specified, no valid charset was found. // Returning a different charset is also valid. if (result == null) { result = FallbackEncoding; } return(result); }
internal static string GetPrintableText(ICollection <byte> bytes, Encoding encoding, string replacement = ".") { var encoderFallback = new EncoderExceptionFallback(); var decoderFallback = new DecoderReplacementFallback(replacement); encoding = Encoding.GetEncoding(encoding.CodePage, encoderFallback, decoderFallback); var decodedString = encoding.GetString(bytes.ToArray()); var printableText = System.Text.RegularExpressions.Regex.Replace(decodedString, @"\p{Cc}", replacement); return(printableText); }
public void CreateFallbackBuffer() { EncoderFallbackBuffer buffer = new EncoderExceptionFallback().CreateFallbackBuffer(); Assert.Equal((char)0, buffer.GetNextChar()); Assert.False(buffer.MovePrevious()); Assert.Equal(0, buffer.Remaining); EncoderFallbackException ex = Assert.Throws<EncoderFallbackException>(() => buffer.Fallback('a', 0)); Assert.Equal('a', ex.CharUnknown); ex = Assert.Throws<EncoderFallbackException>(() => buffer.Fallback('\uD800', '\uDC00', 0)); Assert.Equal('\uD800', ex.CharUnknownHigh); Assert.Equal('\uDC00', ex.CharUnknownLow); }
public void CreateFallbackBuffer() { EncoderFallbackBuffer buffer = new EncoderExceptionFallback().CreateFallbackBuffer(); Assert.Equal((char)0, buffer.GetNextChar()); Assert.False(buffer.MovePrevious()); Assert.Equal(0, buffer.Remaining); EncoderFallbackException ex = Assert.Throws <EncoderFallbackException>(() => buffer.Fallback('a', 0)); Assert.Equal('a', ex.CharUnknown); ex = Assert.Throws <EncoderFallbackException>(() => buffer.Fallback('\uD800', '\uDC00', 0)); Assert.Equal('\uD800', ex.CharUnknownHigh); Assert.Equal('\uDC00', ex.CharUnknownLow); }
internal static Encoding EncodingFromAcceptCharset(string acceptCharset) { Encoding result = null; if (!string.IsNullOrEmpty(acceptCharset)) { List <CharsetPart> parts = new List <CharsetPart>(AcceptCharsetParts(acceptCharset)); parts.Sort(delegate(CharsetPart x, CharsetPart y) { return(y.Quality - x.Quality); }); var encoderFallback = new EncoderExceptionFallback(); var decoderFallback = new DecoderExceptionFallback(); foreach (CharsetPart part in parts) { if (part.Quality > 0) { if (String.Compare("utf-8", part.Charset, StringComparison.OrdinalIgnoreCase) == 0) { result = FallbackEncoding; break; } else { try { result = Encoding.GetEncoding(part.Charset, encoderFallback, decoderFallback); break; } catch (ArgumentException) { } } } } } if (result == null) { result = FallbackEncoding; } return(result); }
public void EqualsTest(EncoderExceptionFallback fallback, object value, bool expected) { Assert.Equal(expected, fallback.Equals(value)); }
public void Equals(EncoderExceptionFallback fallback, object value, bool expected) { Assert.Equal(expected, fallback.Equals(value)); }
/// <summary> /// Initializes a new instance of the <see cref="EucJpEncoding"/> class. /// </summary> public EucJpEncoding() { DecoderFallback = new DecoderExceptionFallback(); EncoderFallback = new EncoderExceptionFallback(); }
static MainWindow() { EcdFallback = new EncoderExceptionFallback(); DcdFallback = new DecoderExceptionFallback(); }