diff options
Diffstat (limited to 'mcs/class/corlib')
-rw-r--r-- | mcs/class/corlib/System.IO/BinaryReader.cs | 7 | ||||
-rw-r--r-- | mcs/class/corlib/Test/System.IO/BinaryReaderTest.cs | 14 |
2 files changed, 21 insertions, 0 deletions
diff --git a/mcs/class/corlib/System.IO/BinaryReader.cs b/mcs/class/corlib/System.IO/BinaryReader.cs index 73235c9c23d..bbcd8174e71 100644 --- a/mcs/class/corlib/System.IO/BinaryReader.cs +++ b/mcs/class/corlib/System.IO/BinaryReader.cs @@ -253,6 +253,13 @@ namespace System.IO { m_buffer [pos ++] = (byte)read_byte; bytes_read ++; + if (m_encoding is UnicodeEncoding) { + CheckBuffer (pos + 1); + read_byte = m_stream.ReadByte(); + if (read_byte != -1) { + m_buffer [pos++] = (byte)read_byte; + } + } int n = m_encoding.GetChars (m_buffer, 0, pos, buffer, index + chars_read); if (n > 0) diff --git a/mcs/class/corlib/Test/System.IO/BinaryReaderTest.cs b/mcs/class/corlib/Test/System.IO/BinaryReaderTest.cs index 852d69089b3..ca4e3daafdd 100644 --- a/mcs/class/corlib/Test/System.IO/BinaryReaderTest.cs +++ b/mcs/class/corlib/Test/System.IO/BinaryReaderTest.cs @@ -274,6 +274,20 @@ namespace MonoTests.System.IO } } + [Test] + public void TestReadUnicode () + { + char testChar1 = 'H'; + using (var stream = new MemoryStream()) + using (var writer = new BinaryWriter(stream, Encoding.Unicode, true)) + using (var reader = new BinaryReader(stream, Encoding.Unicode)) + { + writer.Write(testChar1); + stream.Position = 0; + Assert.AreEqual ('H', reader.ReadChar ()); + } + } + //-TODO: (TestRead[Type]*) Verify the ReadBoolean, ReadByte .... // ReadBoolean, ReadByte, ReadChar, ReadInt32 Done |