public void Subtitle_IsOriginal_WhenActionUndone()
        {
            var subtitle         = SubtitleContainer.GetSubtitleFromFile(SubtitleContainer.ValidSubtitleName);
            var offset           = TimeSpan.FromSeconds(1);
            var timeOffsetAction = new SubtitleTimeOffsetAction(offset, subtitle);

            var originalStartTimes = subtitle.Items.Select(s => s.StartTime).ToArray();
            var originalEndTimes   = subtitle.Items.Select(s => s.EndTime).ToArray();

            timeOffsetAction.PerformAction();
            timeOffsetAction.UndoAction();

            var newStartTimes = subtitle.Items.Select(s => s.StartTime).ToArray();
            var newEndTimes   = subtitle.Items.Select(s => s.EndTime).ToArray();

            for (var i = 0; i < originalStartTimes.Length; i++)
            {
                var originalTime = originalStartTimes[i];
                var newTime      = newStartTimes[i];

                Assert.True(newTime == originalTime);
            }

            for (var i = 0; i < originalEndTimes.Length; i++)
            {
                var originalTime = originalEndTimes[i];
                var newTime      = newEndTimes[i];

                Assert.True(newTime == originalTime);
            }
        }
Exemple #2
0
        public void SubtitleAction_PerformAction_DoesCallback()
        {
            var validSubtitle  = SubtitleContainer.GetSubtitleFromFile(SubtitleContainer.ValidSubtitleName);
            var subtitleAction = new SubtitleTimeOffsetAction(TimeSpan.FromSeconds(1), validSubtitle);
            var didCallback    = false;

            subtitleAction.PerformAction(() => didCallback = true);

            Assert.True(didCallback);
        }
Exemple #3
0
        public void PerformAction()
        {
            var subtitleCreator = new SubtitleCreator();
            var subtitle        = subtitleCreator.CreateFromFile(File.OpenRead(_sourceFile));

            if (_timeOffset != 0)
            {
                Console.WriteLine("Offsetting your subtitle by " + _timeOffset + " seconds");

                var timeOffsetAction = new SubtitleTimeOffsetAction(TimeSpan.FromSeconds(_timeOffset), subtitle);
                timeOffsetAction.PerformAction();
            }

            if (!string.IsNullOrEmpty(_language))
            {
                var culture          = new CultureInfo(_language);
                var translatorAction = new SubtitleTranslatorAction(subtitle, culture);

                var reset = new ManualResetEvent(false);

                Console.WriteLine("Translating your subtitle to " + culture.EnglishName);
                Console.WriteLine("Please wait...");

                translatorAction.PerformAction(
                    () =>
                {
                    SaveSubtitleToOutput(subtitle, _destination);
                    reset.Set();
                });

                reset.WaitOne();
            }
            else
            {
                SaveSubtitleToOutput(subtitle, _destination);
            }
        }