public void GetStations_Success() { string stationData = "dummyStr"; string stationName1 = StationData.StationName1; string stationName2 = StationData.StationName2; string stationName3 = StationData.StationName3; var textReaderMock = new Mock <TextReader>(); textReaderMock.SetupSequence(tr => tr.Peek()) .Returns(0) .Returns(0) .Returns(0) .Returns(0) .Returns(-1); textReaderMock.SetupSequence(tr => tr.ReadLine()) .Returns(string.Empty) .Returns(stationData) .Returns(stationData) .Returns(stationData); var stationParserMock = new Mock <IStationParcer <string> >(); stationParserMock.SetupSequence(sp => sp.Parce(It.IsAny <string>())) .Returns(new Station(1, stationName1, 0, 0)) .Returns(new Station(2, stationName2, 0, 0)) .Returns(new Station(3, stationName3, 0, 0)); var ds = new TxtTextReaderStationDataSource(textReaderMock.Object, stationParserMock.Object); // Act var result = ds.GetStations(); Assert.IsNotNull(result); textReaderMock.Verify(tr => tr.Peek(), Times.Exactly(5)); textReaderMock.Verify(tr => tr.ReadLine(), Times.Exactly(4)); stationParserMock.Verify(tr => tr.Parce(It.IsAny <string>()), Times.Exactly(3)); var resArr = result.ToArray(); Assert.AreEqual(3, resArr.Length, "Count of returned stations is not valid."); Assert.AreEqual(stationName1, resArr[0].Name, "Station has invalid name"); Assert.AreEqual(stationName2, resArr[1].Name, "Station has invalid name"); Assert.AreEqual(stationName3, resArr[2].Name, "Station has invalid name"); }
public void GetStations_ParserReturnsNull_Failed() { string stationData = "dummyStr"; var textReaderMock = new Mock <TextReader>(); textReaderMock.Setup(tr => tr.Peek()) .Returns(0); textReaderMock.Setup(tr => tr.ReadLine()) .Returns(stationData); var stationParserMock = new Mock <IStationParcer <string> >(); stationParserMock.Setup(sp => sp.Parce(It.IsAny <string>())) .Returns((IStation)null); var ds = new TxtTextReaderStationDataSource(textReaderMock.Object, stationParserMock.Object); // Act Assert.Throws <Exception>(() => ds.GetStations()); }