提交 c8526d8d 编写于 作者: H Heejae Chang

added unit tests

上级 0f02de0d
......@@ -10,8 +10,6 @@
using System.IO.Compression;
using Roslyn.Test.Utilities;
using System.Linq;
using System.Collections.Immutable;
using System.Reflection;
namespace Microsoft.CodeAnalysis.UnitTests
{
......@@ -194,6 +192,36 @@ public void FromSource_Large()
AssertEx.Equal(Encoding.Unicode.GetPreamble().Concat(Encoding.Unicode.GetBytes(LargeSource)), Decompress(text.Blob.Skip(4)));
}
[Fact]
public void FromTextReader_Small()
{
var expected = SourceText.From(SmallSource, Encoding.UTF8, SourceHashAlgorithm.Sha1);
var expectedEmbeded = EmbeddedText.FromSource("pathToSmall", expected);
var actual = SourceText.From(new StringReader(SmallSource), SmallSource.Length, Encoding.UTF8, SourceHashAlgorithm.Sha1);
var actualEmbeded = EmbeddedText.FromSource(expectedEmbeded.FilePath, actual);
Assert.Equal(expectedEmbeded.FilePath, actualEmbeded.FilePath);
Assert.Equal(expectedEmbeded.ChecksumAlgorithm, actualEmbeded.ChecksumAlgorithm);
AssertEx.Equal(expectedEmbeded.Checksum, actualEmbeded.Checksum);
AssertEx.Equal(expectedEmbeded.Blob, actualEmbeded.Blob);
}
[Fact]
public void FromTextReader_Large()
{
var expected = SourceText.From(LargeSource, Encoding.UTF8, SourceHashAlgorithm.Sha1);
var expectedEmbeded = EmbeddedText.FromSource("pathToSmall", expected);
var actual = SourceText.From(new StringReader(LargeSource), LargeSource.Length, Encoding.UTF8, SourceHashAlgorithm.Sha1);
var actualEmbeded = EmbeddedText.FromSource(expectedEmbeded.FilePath, actual);
Assert.Equal(expectedEmbeded.FilePath, actualEmbeded.FilePath);
Assert.Equal(expectedEmbeded.ChecksumAlgorithm, actualEmbeded.ChecksumAlgorithm);
AssertEx.Equal(expectedEmbeded.Checksum, actualEmbeded.Checksum);
AssertEx.Equal(expectedEmbeded.Blob, actualEmbeded.Blob);
}
[Fact]
public void FromSource_Precomputed()
{
......
......@@ -29,6 +29,11 @@ private static SourceText CreateSourceText(Stream stream, Encoding encoding = nu
return LargeText.Decode(stream, encoding ?? Encoding.UTF8, SourceHashAlgorithm.Sha1, throwIfBinaryDetected: true, canBeEmbedded: false);
}
private static SourceText CreateSourceText(TextReader reader, int length, Encoding encoding = null)
{
return LargeText.Decode(reader, length, encoding ?? Encoding.UTF8, SourceHashAlgorithm.Sha1);
}
private const string HelloWorld = "Hello, world!";
[Fact]
......@@ -313,5 +318,18 @@ public void LinesGetText2()
var data = CreateSourceText(text);
Assert.Equal("foo", data.Lines[0].ToString());
}
[Fact]
public void FromTextReader()
{
var expected = "foo";
var expectedSourceText = CreateSourceText(expected);
var actual = new StringReader(expected);
var actualSourceText = CreateSourceText(actual, expected.Length);
Assert.Equal("foo", actualSourceText.Lines[0].ToString());
Assert.Equal<byte>(expectedSourceText.GetChecksum(), actualSourceText.GetChecksum());
}
}
}
\ No newline at end of file
......@@ -229,6 +229,43 @@ public void FromThrowsIfBinary()
Assert.Throws<InvalidDataException>(() => SourceText.From(stream, throwIfBinaryDetected: true));
}
[Fact]
public void FromTextReader()
{
var expected = "Text reader source text test";
var expectedSourceText = SourceText.From(expected);
var actual = new StringReader(expected);
var actualSourceText = SourceText.From(actual, expected.Length);
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);
}
[Fact]
public void FromTextReader_Large()
{
var expected = new string('l', SourceText.LargeObjectHeapLimitInChars);
var expectedSourceText = SourceText.From(expected);
var actual = new StringReader(expected);
var actualSourceText = SourceText.From(actual, expected.Length);
Assert.IsType<LargeText>(actualSourceText);
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);
}
private static void TestTryReadByteOrderMark(Encoding expectedEncoding, int expectedPreambleLength, byte[] data)
{
TestTryReadByteOrderMark(expectedEncoding, expectedPreambleLength, data, data == null ? 0 : data.Length);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册