Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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 Format_Always_ReturnsCostRelatedToGivenCurrency()
        {
            var stubProvider = Substitute.For <ICostForOneMillionCharactersProvider>();

            stubProvider
            .GetCostIn(Arg.Is(Currency.Euro))
            .Returns(20);

            var stubFormatter = Substitute.For <ISubtitleTextFormatter>();

            stubFormatter
            .Format(Arg.Any <SubtitleText>())
            .Returns("25 characters long string");

            var calculator = CreateCalculator(stubProvider, stubFormatter);

            var twoSubtitles = new Subtitles(
                new List <Subtitle> {
                SubtitleTests.CreateSubtitle1(),
                SubtitleTests.CreateSubtitle2()
            });

            var expectedCost = new Price(0.001m, Currency.Euro);

            var actualCost = calculator.Calculate(twoSubtitles, Currency.Euro);

            Assert.AreEqual(expectedCost, actualCost);
        }
        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 Translate_TranslationSuccessful_ReturnsTranslatedBatch()
        {
            var batchToTranslate = new List <Subtitle> {
                new Subtitle(
                    new SubtitleId(1),
                    new SubtitleTimestamps(
                        TimestampTests.CreateTimestamp(0, 0, 0, 0),
                        TimestampTests.CreateTimestamp(0, 0, 0, 3)),
                    CreateSingleLineText("First subtitle")),
                new Subtitle(
                    new SubtitleId(2),
                    new SubtitleTimestamps(
                        TimestampTests.CreateTimestamp(0, 0, 0, 4),
                        TimestampTests.CreateTimestamp(0, 0, 0, 7)),
                    CreateSingleLineText("Second subtitle"))
            };

            var expectedTranslation = new List <Subtitle> {
                SubtitleTests.CopyWithNewText(batchToTranslate[0], "Premier sous-titre"),
                SubtitleTests.CopyWithNewText(batchToTranslate[1], "Deuxième sous-titre")
            };

            var stubTranslator = Substitute.For <IBatchTextTranslator>();

            stubTranslator
            .Translate(
                Arg.Is <List <string> >(
                    a => a.SequenceEqual(new List <string> {
                "First subtitle",
                "Second subtitle"
            })),
                Arg.Is(Language.French))
            .Returns(
                new List <string> {
                "Premier sous-titre",
                "Deuxième sous-titre"
            });

            var stubFormatter = Substitute.For <ISubtitleTextFormatter>();

            stubFormatter
            .Format(Arg.Is(CreateSingleLineText("First subtitle")))
            .Returns("First subtitle");
            stubFormatter
            .Format(Arg.Is(CreateSingleLineText("Second subtitle")))
            .Returns("Second subtitle");

            var translator = CreateTranslator(stubTranslator, stubFormatter);

            var actualTranslation = translator.Translate(batchToTranslate, Language.French);

            Assert.AreEqual(expectedTranslation, actualTranslation);
        }
Exemplo n.º 6
0
        public void Translate_TranslationSuccessful_ReturnsTranslatedSubtitles()
        {
            var s1 = new Subtitle(
                new SubtitleId(1),
                new SubtitleTimestamps(
                    TimestampTests.CreateTimestamp(0, 0, 0, 0),
                    TimestampTests.CreateTimestamp(0, 0, 0, 3)),
                CreateSingleLineText("First subtitle"));
            var translated_s1 = SubtitleTests.CopyWithNewText(s1, "Premier sous-titre");

            var s2 = new Subtitle(
                new SubtitleId(2),
                new SubtitleTimestamps(
                    TimestampTests.CreateTimestamp(0, 0, 0, 4),
                    TimestampTests.CreateTimestamp(0, 0, 0, 7)),
                CreateSingleLineText("Second subtitle"));
            var translated_s2 = SubtitleTests.CopyWithNewText(s2, "Deuxième sous-titre");

            var s3 = new Subtitle(
                new SubtitleId(3),
                new SubtitleTimestamps(
                    TimestampTests.CreateTimestamp(0, 0, 0, 8),
                    TimestampTests.CreateTimestamp(0, 0, 0, 11)),
                CreateSingleLineText("Third subtitle"));
            var translated_s3 = SubtitleTests.CopyWithNewText(s2, "Troisième sous-titre");

            var stubBatchTranslator = Substitute.For <ISubtitleBatchTranslator>();

            stubBatchTranslator
            .Translate(
                Arg.Is <List <Subtitle> >(
                    b => b.SequenceEqual(new List <Subtitle> {
                s1, s2
            })),
                Arg.Is(Language.French))
            .Returns(new List <Subtitle> {
                translated_s1, translated_s2
            });
            stubBatchTranslator
            .Translate(
                Arg.Is <List <Subtitle> >(
                    b => b.SequenceEqual(new List <Subtitle> {
                s3
            })),
                Arg.Is(Language.French))
            .Returns(new List <Subtitle> {
                translated_s3
            });

            var toTranslate = new Subtitles(
                new List <Subtitle> {
                s1, s2, s3
            });
            var expectedTranslation = new Subtitles(
                new List <Subtitle> {
                translated_s1, translated_s2, translated_s3
            });
            var translator = new BatchSubtitlesTranslator(stubBatchTranslator, 2);

            var actualTranslation = translator.Translate(toTranslate, Language.French);

            Assert.AreEqual(expectedTranslation, actualTranslation);
        }