public void Parse_SubtitleParserThrows_ThrowsParsingException( int indexOfCorrectSub, int indexOfIncorrectSub) { var subsToParse = new UnvalidatedSubtitles( new List <UnvalidatedSubtitle> { UnvalidatedSubtitleTests.CreateUnvalidatedSubtitle1(), UnvalidatedSubtitleTests.CreateUnvalidatedSubtitle2() }); var stubSubtitleParser = Substitute.For <ISubtitleParser>(); stubSubtitleParser .Parse(Arg.Is(subsToParse.Value.ElementAt(indexOfCorrectSub))) .Returns(SubtitleTests.CreateSubtitle1()); stubSubtitleParser .Parse(Arg.Is(subsToParse.Value.ElementAt(indexOfIncorrectSub))) .Throws <Exception>(); var parser = CreateParser(stubSubtitleParser); var exception = Assert.Throws <SubtitlesParsingException>( () => parser.Parse(subsToParse)); Assert.AreEqual( indexOfIncorrectSub + 1, exception.IncorrectSubtitleId); }
public void Parse_SuccessfulParsing_ReturnsSubtitles() { var unvalidatedSubtitles = new UnvalidatedSubtitles( new List <UnvalidatedSubtitle> { UnvalidatedSubtitleTests.CreateUnvalidatedSubtitle1(), UnvalidatedSubtitleTests.CreateUnvalidatedSubtitle2() }); var expectedSubtitles = new Subtitles( new List <Subtitle> { SubtitleTests.CreateSubtitle1(), SubtitleTests.CreateSubtitle2() }); var stubParser = Substitute.For <ISubtitleParser>(); stubParser .Parse(Arg.Is(unvalidatedSubtitles.Value.ElementAt(0))) .Returns(expectedSubtitles.Value.ElementAt(0)); stubParser .Parse(Arg.Is(unvalidatedSubtitles.Value.ElementAt(1))) .Returns(expectedSubtitles.Value.ElementAt(1)); var parser = CreateParser(stubParser); var actualSubtitles = parser.Parse(unvalidatedSubtitles); Assert.AreEqual( expectedSubtitles, actualSubtitles); }
public void Map_Always_ReturnsUnvalidatedSubtitles() { var subsToMap = new Subtitles( new List <Subtitle> { SubtitleTests.CreateSubtitle1(), SubtitleTests.CreateSubtitle2() }); var stubMapper = Substitute.For <ISubtitleToUnvalidatedMapper>(); var expectedUnvalidatedSubs = new UnvalidatedSubtitles( new List <UnvalidatedSubtitle> { UnvalidatedSubtitleTests.CreateUnvalidatedSubtitle1(), UnvalidatedSubtitleTests.CreateUnvalidatedSubtitle2() }); stubMapper .Map(Arg.Is(subsToMap.Value.ElementAt(0))) .Returns(expectedUnvalidatedSubs.Value.ElementAt(0)); stubMapper .Map(Arg.Is(subsToMap.Value.ElementAt(1))) .Returns(expectedUnvalidatedSubs.Value.ElementAt(1)); var mapper = CreateMapper(stubMapper); var actualUnvalidatedSubs = mapper.Map(subsToMap); Assert.AreEqual( expectedUnvalidatedSubs, actualUnvalidatedSubs); }
public void Parse_NullUnvalidatedSubtitles_Throws() { UnvalidatedSubtitles nullSubtitles = null; var parser = CreateParser(); Assert.Throws <ArgumentNullException>( () => parser.Parse(nullSubtitles)); }
public void Serialize_WritesSubtitlesToGivenFile() { var subsToSerialize = new UnvalidatedSubtitles( new List <UnvalidatedSubtitle> { new UnvalidatedSubtitle( new List <CharacterLine> { new CharacterLine("1"), new CharacterLine("First line"), new CharacterLine("Second line") }), new UnvalidatedSubtitle( new List <CharacterLine> { new CharacterLine("2"), new CharacterLine("Subtitle 2") }) }); var stubMapper = Substitute.For <ISubtitlesMapper>(); stubMapper .Map(Arg.Any <Subtitles>()) .Returns(subsToSerialize); var expectedLines = new List <CharacterLine> { new CharacterLine("1"), new CharacterLine("First line"), new CharacterLine("Second line"), new CharacterLine(string.Empty), new CharacterLine("2"), new CharacterLine("Subtitle 2"), new CharacterLine(string.Empty) }; var mockWriter = Substitute.For <IFileLineWriter>(); var serializer = CreateSerializer(mockWriter, stubMapper); var stubSubtitles = SubtitlesTests.CreateSubtitles1(); var stubPath = new FilePath("/a/path.srt"); serializer.Serialize(stubSubtitles, stubPath); mockWriter.Received() .WriteLines( Arg.Is(stubPath), Arg.Is <List <CharacterLine> >( l => l.SequenceEqual(expectedLines))); }
public void ReadUnvalidatedSubtitles_ReadSuccessful_ReturnsUnvalidatedSubtitles() { var stubReader = Substitute.For <IFileLineReader>(); stubReader .ReadAllLines(Arg.Any <FilePath>()) .Returns(new List <CharacterLine> { new CharacterLine("1"), new CharacterLine("00:01:01,000 --> 00:01:02,000"), new CharacterLine("First subtitle"), new CharacterLine(""), new CharacterLine("2"), new CharacterLine("00:01:03,000 --> 00:01:04,000"), new CharacterLine("Second subtitle"), new CharacterLine("") }); var expectedSubtitles = new UnvalidatedSubtitles( new List <UnvalidatedSubtitle> { CreateUnvalidatedSubtitle(new List <string> { "1", "00:01:01,000 --> 00:01:02,000", "First subtitle" }), CreateUnvalidatedSubtitle(new List <string> { "2", "00:01:03,000 --> 00:01:04,000", "Second subtitle" }) }); var reader = CreateReader(stubReader); var actualSubtitles = reader.ReadUnvalidatedSubtitles(new FilePath("a file")); Assert.AreEqual( expectedSubtitles, actualSubtitles); }