提交 32c80e87 编写于 作者: H Heejae Chang

fixed test failures.

allow SourceText From TextReader to have null encoding lke the  one from string.
上级 c8526d8d
......@@ -240,11 +240,9 @@ public void FromTextReader()
Assert.Equal<byte>(expectedSourceText.GetChecksum(), actualSourceText.GetChecksum());
var utf8NoBOM = new UTF8Encoding(encoderShouldEmitUTF8Identifier: false);
Assert.Same(s_utf8, SourceText.From(actual, expected.Length, s_utf8).Encoding);
Assert.Same(s_unicode, SourceText.From(actual, expected.Length, s_unicode).Encoding);
Assert.Equal(utf8NoBOM, SourceText.From(actual, expected.Length, null).Encoding);
Assert.Null(SourceText.From(actual, expected.Length, null).Encoding);
}
[Fact]
......@@ -263,7 +261,7 @@ public void FromTextReader_Large()
Assert.Same(s_utf8, SourceText.From(actual, expected.Length, s_utf8).Encoding);
Assert.Same(s_unicode, SourceText.From(actual, expected.Length, s_unicode).Encoding);
Assert.Equal(utf8NoBOM, SourceText.From(actual, expected.Length, null).Encoding);
Assert.Null(SourceText.From(actual, expected.Length, null).Encoding);
}
private static void TestTryReadByteOrderMark(Encoding expectedEncoding, int expectedPreambleLength, byte[] data)
......
......@@ -24,13 +24,13 @@ internal sealed class LargeText : SourceText
private readonly ImmutableArray<char[]> _chunks;
private readonly int[] _chunkStartOffsets;
private readonly int _length;
private readonly Encoding _encoding;
private readonly Encoding _encodingOpt;
internal LargeText(ImmutableArray<char[]> chunks, Encoding encoding, ImmutableArray<byte> checksum, SourceHashAlgorithm checksumAlgorithm, ImmutableArray<byte> embeddedTextBlob)
internal LargeText(ImmutableArray<char[]> chunks, Encoding encodingOpt, ImmutableArray<byte> checksum, SourceHashAlgorithm checksumAlgorithm, ImmutableArray<byte> embeddedTextBlob)
: base(checksum, checksumAlgorithm, embeddedTextBlob)
{
_chunks = chunks;
_encoding = encoding;
_encodingOpt = encodingOpt;
_chunkStartOffsets = new int[chunks.Length];
int offset = 0;
......@@ -43,8 +43,8 @@ internal LargeText(ImmutableArray<char[]> chunks, Encoding encoding, ImmutableAr
_length = offset;
}
internal LargeText(ImmutableArray<char[]> chunks, Encoding encoding, SourceHashAlgorithm checksumAlgorithm)
: this(chunks, encoding, default(ImmutableArray<byte>), checksumAlgorithm, default(ImmutableArray<byte>))
internal LargeText(ImmutableArray<char[]> chunks, Encoding encodingOpt, SourceHashAlgorithm checksumAlgorithm)
: this(chunks, encodingOpt, default(ImmutableArray<byte>), checksumAlgorithm, default(ImmutableArray<byte>))
{
}
......@@ -74,17 +74,17 @@ internal static SourceText Decode(Stream stream, Encoding encoding, SourceHashAl
}
}
internal static SourceText Decode(TextReader reader, int length, Encoding encoding, SourceHashAlgorithm checksumAlgorithm)
internal static SourceText Decode(TextReader reader, int length, Encoding encodingOpt, SourceHashAlgorithm checksumAlgorithm)
{
if (length == 0)
{
return SourceText.From(string.Empty, encoding, checksumAlgorithm);
return SourceText.From(string.Empty, encodingOpt, checksumAlgorithm);
}
// throwIfBinaryDetected == false since we are given text reader from the beginning
var chunks = ReadFromTextReader(reader, length, throwIfBinaryDetected: false);
return new LargeText(chunks, encoding, checksumAlgorithm);
return new LargeText(chunks, encodingOpt, checksumAlgorithm);
}
private static ImmutableArray<char[]> ReadFromTextReader(TextReader reader, int maxCharRemainingGuess, bool throwIfBinaryDetected)
......@@ -173,7 +173,7 @@ private int GetIndexFromPosition(int position)
}
}
public override Encoding Encoding => _encoding;
public override Encoding Encoding => _encodingOpt;
public override int Length => _length;
......
......@@ -124,10 +124,6 @@ public static SourceText From(string text, Encoding encoding = null, SourceHashA
throw new ArgumentNullException(nameof(reader));
}
ValidateChecksumAlgorithm(checksumAlgorithm);
encoding = encoding ?? s_utf8EncodingWithNoBOM;
// If the resulting string would end up on the large object heap, then use LargeEncodedText.
if (length >= LargeObjectHeapLimitInChars)
{
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册