public void SendNextLineAsync_2CallsPlusNulls_AllLinesWritten() { //note that null/empty strings are not ignored here (end-of-data marks are "swallowed" before, i.e. in LineDispenser) //arrange const int targetNo = 11; var target = new TextDispenserForTarget(_writer, targetNo); var targetPO = new PrivateObject(target); //act target.SendNextLineAsync("first line".ToExternalTuple(targetNo)).Wait(); target.SendNextLineAsync("second line".ToExternalTuple(targetNo)).Wait(); target.SendNextLineAsync(string.Empty.ToExternalTuple(targetNo)).Wait(); target.SendNextLineAsync(new Tuple <ExternalLine, int>(null, targetNo)).Wait(); //assert targetPO.GetField("TargetNo").Should().Be(targetNo); var writtenLines = WrittenLines.ToList(); writtenLines.Count().Should().Be(4); writtenLines[0].Should().Be("first line"); writtenLines[1].Should().Be("second line"); writtenLines[2].Should().Be(string.Empty); writtenLines[3].Should().Be(string.Empty); //note that null string sent to TextWriter is indistinguishable from empty string }
public void SendNextLine_2CallsPlusNulls_AllLinesWritten() { //note that null/empty strings are not ignored here (end-of-data marks are handled in LineDispenser (and besides they are null Tuples and not Tuples with empty lines) //arrange const int targetNo = 11; var target = new TextDispenserForTarget(_writer, targetNo); var targetPO = new PrivateObject(target); //act target.SendNextLine("first line".ToExternalTuple(targetNo)); //note that targetNo sent to a LineDispenserForTarget here is ignored target.SendNextLine("second line".ToExternalTuple(targetNo)); target.SendNextLine(string.Empty.ToExternalTuple(targetNo)); target.SendNextLine(new Tuple <ExternalLine, int>(null, targetNo)); //assert targetPO.GetField("TargetNo").Should().Be(targetNo); var writtenLines = WrittenLines.ToList(); writtenLines.Count().Should().Be(4); writtenLines[0].Should().Be("first line"); writtenLines[1].Should().Be("second line"); writtenLines[2].Should().Be(string.Empty); writtenLines[3].Should().Be(string.Empty); //note that null string sent to TextWriter is indistinguishable from empty string }
public void SendNextLine_2Calls_2LinesWritten() { //arrange const int targetNo = 4; var dispenser = new TextDispenserForTarget(_writer, targetNo); var dispenserPO = new PrivateObject(dispenser); //act dispenser.SendNextLine("first line".ToExternalTuple(targetNo)); dispenser.SendNextLine("second line".ToExternalTuple(targetNo)); //assert dispenserPO.GetField("TargetNo").Should().Be(targetNo); var writtenLines = WrittenLines.ToList(); writtenLines.Count().Should().Be(2); writtenLines[0].Should().Be("first line"); writtenLines[1].Should().Be("second line"); }
public void Dispose_Call_MakesTargetDisposed() { //arrange const int targetNo = 9; var target = new TextDispenserForTarget(_writer, targetNo); var targetPO = new PrivateObject(target); //act target.SendNextLine("first line".ToExternalTuple(targetNo)); target.Dispose(); Action a = () => { target.SendNextLine("second line".ToExternalTuple(targetNo)); }; //assert a.Should().Throw <ObjectDisposedException>().WithMessage("Cannot write to a closed TextWriter."); targetPO.GetField("TargetNo").Should().Be(targetNo); var writtenLines = WrittenLines.ToList(); writtenLines.Count().Should().Be(1); writtenLines[0].Should().Be("first line"); }