Skip to content

Commit

Permalink
CoreFx #22406 - implement review comments
Browse files Browse the repository at this point in the history
  • Loading branch information
WinCPP committed Sep 8, 2017
1 parent 21121a7 commit 619ab13
Show file tree
Hide file tree
Showing 4 changed files with 162 additions and 159 deletions.
199 changes: 104 additions & 95 deletions src/System.IO/tests/TextReader/TextReaderTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,27 +10,22 @@ namespace System.IO.Tests
{
public partial class TextReaderTests
{
protected virtual char[] GetSmallData()
{
return "HELLO".ToCharArray();
}
protected static readonly char[] SmallData;
protected static readonly char[] LargeData;
protected static readonly char[] ChArr;

protected virtual char[] GetLargeData()
static TextReaderTests()
{
var testData = "HELLO".ToCharArray();
SmallData = "HELLO".ToCharArray();

var data = new List<char>();
for (int i = 0; i < 1000; i++)
for (int count = 0; count < 1000; ++count)
{
data.AddRange(testData);
data.AddRange(SmallData);
}
LargeData = data.ToArray();

return data.ToArray();
}

protected (char[] chArr, CharArrayTextReader textReader) GetCharArray()
{
var chArr = new char[]
ChArr = new char[]
{
char.MinValue,
char.MaxValue,
Expand Down Expand Up @@ -58,16 +53,18 @@ protected virtual char[] GetLargeData()
'K',
'\u00E6'
};
}

var tr = new CharArrayTextReader(chArr);

return (chArr, tr);
protected (char[] chArr, CharArrayTextReader textReader) GetCharArray()
{
var tr = new CharArrayTextReader(ChArr);
return (ChArr, tr);
}

[Fact]
public void EndOfStream()
{
using (var tr = new CharArrayTextReader(GetSmallData()))
using (var tr = new CharArrayTextReader(SmallData))
{
var result = tr.ReadToEnd();

Expand All @@ -80,7 +77,7 @@ public void EndOfStream()
[Fact]
public void NotEndOfStream()
{
using (var tr = new CharArrayTextReader(GetSmallData()))
using (var tr = new CharArrayTextReader(SmallData))
{
var charBuff = new char[3];
var result = tr.Read(charBuff, 0, 3);
Expand All @@ -96,7 +93,7 @@ public void NotEndOfStream()
[Fact]
public async Task ReadToEndAsync()
{
using (var tr = new CharArrayTextReader(GetLargeData()))
using (var tr = new CharArrayTextReader(LargeData))
{
var result = await tr.ReadToEndAsync();

Expand All @@ -108,45 +105,51 @@ public async Task ReadToEndAsync()
public void TestRead()
{
var baseInfo = GetCharArray();
var tr = baseInfo.textReader;

for (int i = 0; i < baseInfo.chArr.Length; i++)
using (var tr = baseInfo.textReader)
{
int tmp = tr.Read();
Assert.Equal((int)baseInfo.chArr[i], tmp);
for (int count = 0; count < baseInfo.chArr.Length; ++count)
{
int tmp = tr.Read();
Assert.Equal((int)baseInfo.chArr[count], tmp);
}
}

tr.Dispose();
}

[Fact]
public void ArgumentNullOnNullArray()
{
var baseInfo = GetCharArray();
var tr = baseInfo.textReader;

Assert.Throws<ArgumentNullException>(() => tr.Read(null, 0, 0));
using (var tr = baseInfo.textReader)
{
Assert.Throws<ArgumentNullException>(() => tr.Read(null, 0, 0));
}
}

[Fact]
public void ArgumentOutOfRangeOnInvalidOffset()
{
var tr = GetCharArray().textReader;
Assert.Throws<ArgumentOutOfRangeException>(() => tr.Read(new char[0], -1, 0));
using (var tr = GetCharArray().textReader)
{
Assert.Throws<ArgumentOutOfRangeException>(() => tr.Read(new char[0], -1, 0));
}
}

[Fact]
public void ArgumentOutOfRangeOnNegativCount()
{
var tr = GetCharArray().textReader;
AssertExtensions.Throws<ArgumentException>(null, () => tr.Read(new char[0], 0, 1));
using (var tr = GetCharArray().textReader)
{
AssertExtensions.Throws<ArgumentException>(null, () => tr.Read(new char[0], 0, 1));
}
}

[Fact]
public void ArgumentExceptionOffsetAndCount()
{
var tr = GetCharArray().textReader;
AssertExtensions.Throws<ArgumentException>(null, () => tr.Read(new char[0], 2, 0));
using (var tr = GetCharArray().textReader)
{
AssertExtensions.Throws<ArgumentException>(null, () => tr.Read(new char[0], 2, 0));
}
}

[Fact]
Expand All @@ -164,121 +167,127 @@ public void EmptyInput()
public void ReadCharArr()
{
var baseInfo = GetCharArray();
var tr = baseInfo.textReader;

var chArr = new char[baseInfo.chArr.Length];
using (var tr = baseInfo.textReader)
{
var chArr = new char[baseInfo.chArr.Length];

var read = tr.Read(chArr, 0, chArr.Length);
var read = tr.Read(chArr, 0, chArr.Length);
Assert.Equal(chArr.Length, read);

Assert.Equal(chArr.Length, read);
for (int i = 0; i < baseInfo.chArr.Length; i++)
{
Assert.Equal(baseInfo.chArr[i], chArr[i]);
for (int count = 0; count < baseInfo.chArr.Length; ++count)
{
Assert.Equal(baseInfo.chArr[count], chArr[count]);
}
}
}

[Fact]
public void ReadBlockCharArr()
{
var baseInfo = GetCharArray();
var tr = baseInfo.textReader;

var chArr = new char[baseInfo.chArr.Length];
using (var tr = baseInfo.textReader)
{
var chArr = new char[baseInfo.chArr.Length];

var read = tr.ReadBlock(chArr, 0, chArr.Length);
var read = tr.ReadBlock(chArr, 0, chArr.Length);
Assert.Equal(chArr.Length, read);

Assert.Equal(chArr.Length, read);
for (int i = 0; i < baseInfo.chArr.Length; i++)
{
Assert.Equal(baseInfo.chArr[i], chArr[i]);
for (int count = 0; count < baseInfo.chArr.Length; ++count)
{
Assert.Equal(baseInfo.chArr[count], chArr[count]);
}
}
}

[Fact]
public async void ReadBlockAsyncCharArr()
{
var baseInfo = GetCharArray();
var tr = baseInfo.textReader;

var chArr = new char[baseInfo.chArr.Length];
using (var tr = baseInfo.textReader)
{
var chArr = new char[baseInfo.chArr.Length];

var read = await tr.ReadBlockAsync(chArr, 0, chArr.Length);
var read = await tr.ReadBlockAsync(chArr, 0, chArr.Length);
Assert.Equal(chArr.Length, read);

Assert.Equal(chArr.Length, read);
for (int i = 0; i < baseInfo.chArr.Length; i++)
{
Assert.Equal(baseInfo.chArr[i], chArr[i]);
for (int count = 0; count < baseInfo.chArr.Length; ++count)
{
Assert.Equal(baseInfo.chArr[count], chArr[count]);
}
}
}

[Fact]
public async Task ReadAsync()
{
var baseInfo = GetCharArray();
using (var tr = baseInfo.textReader)
{
var chArr = new char[baseInfo.chArr.Length];

var tr = baseInfo.textReader;

var chArr = new char[baseInfo.chArr.Length];

var read = await tr.ReadAsync(chArr, 4, 3);
var read = await tr.ReadAsync(chArr, 4, 3);
Assert.Equal(read, 3);

Assert.Equal(read, 3);
for (int i = 0; i < 3; i++)
{
Assert.Equal(baseInfo.chArr[i], chArr[i + 4]);
for (int count = 0; count < 3; ++count)
{
Assert.Equal(baseInfo.chArr[count], chArr[count + 4]);
}
}
}

[Fact]
public void ReadLines()
{
var baseInfo = GetCharArray();
var tr = baseInfo.textReader;

string valueString = new string(baseInfo.chArr);

using (var tr = baseInfo.textReader)
{
string valueString = new string(baseInfo.chArr);

var data = tr.ReadLine();
Assert.Equal(valueString.Substring(0, valueString.IndexOf('\r')), data);
var data = tr.ReadLine();
Assert.Equal(valueString.Substring(0, valueString.IndexOf('\r')), data);

data = tr.ReadLine();
Assert.Equal(valueString.Substring(valueString.IndexOf('\r') + 1, 3), data);
data = tr.ReadLine();
Assert.Equal(valueString.Substring(valueString.IndexOf('\r') + 1, 3), data);

data = tr.ReadLine();
Assert.Equal(valueString.Substring(valueString.IndexOf('\n') + 1, 2), data);
data = tr.ReadLine();
Assert.Equal(valueString.Substring(valueString.IndexOf('\n') + 1, 2), data);

data = tr.ReadLine();
Assert.Equal((valueString.Substring(valueString.LastIndexOf('\n') + 1)), data);
data = tr.ReadLine();
Assert.Equal((valueString.Substring(valueString.LastIndexOf('\n') + 1)), data);
}
}

[Fact]
public void ReadLines2()
{
var baseInfo = GetCharArray();
var tr = baseInfo.textReader;
using (var tr = baseInfo.textReader)
{
string valueString = new string(baseInfo.chArr);

string valueString = new string(baseInfo.chArr);
var temp = new char[10];
tr.Read(temp, 0, 1);
var data = tr.ReadLine();

var temp = new char[10];
tr.Read(temp, 0, 1);
var data = tr.ReadLine();
Assert.Equal(valueString.Substring(1, valueString.IndexOf('\r') - 1), data);
Assert.Equal(valueString.Substring(1, valueString.IndexOf('\r') - 1), data);
}
}

[Fact]
public async Task ReadLineAsyncContinuousNewLinesAndTabs()
{
var newLineTabData = new char[] { '\n', '\n', '\r', '\r', '\n' };
var tr = new CharArrayTextReader(newLineTabData);

for (int i = 0; i < 4; i++)
using (var tr = new CharArrayTextReader(newLineTabData))
{
var data = await tr.ReadLineAsync();
Assert.Equal(string.Empty, data);
for (int count = 0; count < 4; ++count)
{
var data = await tr.ReadLineAsync();
Assert.Equal(string.Empty, data);
}

var eol = await tr.ReadLineAsync();
Assert.Null(eol);
}

var eol = await tr.ReadLineAsync();
Assert.Null(eol);
}
}
}
38 changes: 20 additions & 18 deletions src/System.IO/tests/TextReader/TextReaderTests.netcoreapp.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,35 +14,37 @@ public partial class TextReaderTests
public void ReadSpan()
{
var baseInfo = GetCharArray();
var tr = baseInfo.textReader;

var chArr = new char[baseInfo.chArr.Length];
var chSpan = new Span<char>(chArr, 0, baseInfo.chArr.Length);
using (var tr = baseInfo.textReader)
{
var chArr = new char[baseInfo.chArr.Length];
var chSpan = new Span<char>(chArr, 0, baseInfo.chArr.Length);

var read = tr.Read(chSpan);
var read = tr.Read(chSpan);
Assert.Equal(chArr.Length, read);

Assert.Equal(chArr.Length, read);
for (int i = 0; i < baseInfo.chArr.Length; i++)
{
Assert.Equal(baseInfo.chArr[i], chArr[i]);
for (int i = 0; i < baseInfo.chArr.Length; i++)
{
Assert.Equal(baseInfo.chArr[i], chArr[i]);
}
}
}

[Fact]
public void ReadBlockSpan()
{
var baseInfo = GetCharArray();
var tr = baseInfo.textReader;

var chArr = new char[baseInfo.chArr.Length];
var chSpan = new Span<char>(chArr, 0, baseInfo.chArr.Length);
using (var tr = baseInfo.textReader)
{
var chArr = new char[baseInfo.chArr.Length];
var chSpan = new Span<char>(chArr, 0, baseInfo.chArr.Length);

var read = tr.Read(chSpan);
var read = tr.Read(chSpan);
Assert.Equal(chArr.Length, read);

Assert.Equal(chArr.Length, read);
for (int i = 0; i < baseInfo.chArr.Length; i++)
{
Assert.Equal(baseInfo.chArr[i], chArr[i]);
for (int i = 0; i < baseInfo.chArr.Length; i++)
{
Assert.Equal(baseInfo.chArr[i], chArr[i]);
}
}
}
}
Expand Down
Loading

0 comments on commit 619ab13

Please sign in to comment.