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); } }
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); }
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); } }