public void EncodingEncodesThrowExceptionIfInvalidHexNumber() { Encoding encoding = new EscapeOutRangeEncoding("utf-8"); string input = "あ[@!!Q3]あ"; Assert.Throws <FormatException>(() => encoding.GetBytes(input)); }
public void EncodingEncodesThrowExceptionIfMissingEndToken() { Encoding encoding = new EscapeOutRangeEncoding("utf-8"); string input = "あ[@!!E3"; Assert.Throws <EncoderFallbackException>(() => encoding.GetBytes(input)); }
public void EncodingEncodesInvalidUtf8Symbols() { Encoding encoding = new EscapeOutRangeEncoding("utf-8"); string input = "あ[@!!E3]あ"; byte[] output = encoding.GetBytes(input); Assert.AreEqual(output.Length, encoding.GetByteCount(input)); Assert.Less(output.Length, encoding.GetMaxByteCount(3)); Assert.IsTrue(output.SequenceEqual(new byte[] { 0xE3, 0x81, 0x82, 0xE3, 0xE3, 0x81, 0x82 })); }
public void EncodingDoesNotChangeValidUtf8Symbols() { Encoding encoding = new EscapeOutRangeEncoding("utf-8"); byte[] validBuffer = { 0xE3, 0x81, 0x82, 0xE3, 0xE3, 0x81, 0x82 }; string output = encoding.GetString(validBuffer); Assert.AreEqual(output.Length, encoding.GetCharCount(validBuffer)); Assert.Less(output.Length, encoding.GetMaxCharCount(3)); Assert.AreEqual("あ[@!!E3]あ", output); }
public void EncodingReplaceInvalidUtf8Symbols() { Encoding encoding = new EscapeOutRangeEncoding("utf-8"); byte[] invalidBuffer = { 0xE2, 0x81, 0xE3, 0xE4 }; string output = encoding.GetString(invalidBuffer); Assert.AreEqual(output.Length, encoding.GetCharCount(invalidBuffer)); Assert.Less(output.Length, encoding.GetMaxCharCount(4)); Assert.AreEqual("[@!!E281][@!!E3][@!!E4]", output); }
public void EncodingThrowsWithInvalidArguments() { Encoding encoding = new EscapeOutRangeEncoding("utf-8"); char[] input = "test".ToCharArray(); byte[] output = new byte[10]; Assert.Throws <ArgumentNullException>( () => encoding.GetBytes((char[])null, 0, 0, output, 0)); Assert.Throws <ArgumentOutOfRangeException>( () => encoding.GetBytes(input, -1, 1, output, 0)); Assert.Throws <ArgumentOutOfRangeException>( () => encoding.GetBytes(input, 10, 0, output, 0)); Assert.Throws <ArgumentOutOfRangeException>( () => encoding.GetBytes(input, 0, -1, output, 0)); Assert.Throws <ArgumentOutOfRangeException>( () => encoding.GetBytes(input, 2, 4, output, 0)); Assert.Throws <ArgumentNullException>( () => encoding.GetBytes(input, 0, 4, null, 0)); Assert.Throws <ArgumentOutOfRangeException>( () => encoding.GetBytes(input, 0, 4, output, -1)); Assert.Throws <ArgumentOutOfRangeException>( () => encoding.GetBytes(input, 0, 4, output, 15)); }