diff --git a/Directory.Packages.props b/Directory.Packages.props index 9f75fabf27..da903d714e 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -1,27 +1,28 @@  - - true - - - - - - - - - - - - - - - - - - - - - - - + + true + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Tests/FixCommonErrors/FixCommonErrorsTest.cs b/src/Tests/FixCommonErrors/FixCommonErrorsTest.cs index c93c003cc2..488f123e70 100644 --- a/src/Tests/FixCommonErrors/FixCommonErrorsTest.cs +++ b/src/Tests/FixCommonErrors/FixCommonErrorsTest.cs @@ -502,10 +502,10 @@ public void FixOcrErrorsViaHardcodedRules2() using (var form = new GoToLine()) { Configuration.Settings.Tools.OcrFixUseHardcodedRules = true; - const string input = "Foobar\r\n-"; + string input = $"Foobar{Environment.NewLine}-"; var ofe = new Nikse.SubtitleEdit.Logic.Ocr.OcrFixEngine("eng", "us_en", form); var res = ofe.FixOcrErrorsViaHardcodedRules(input, "Previous line.", null, new HashSet()); - Assert.AreEqual(res, "Foobar\r\n-"); + Assert.AreEqual(res, $"Foobar{Environment.NewLine}-"); } } @@ -557,9 +557,9 @@ public void FixCommonOcrErrorsFrenchHardCodedRuleNoChange() { using (var target = GetFixCommonErrorsLib()) { - InitializeFixCommonErrorsLine(target, "ENCORE UNE VICTIME\r\nDE L'ASSASSIN MYSTERIEUX."); + InitializeFixCommonErrorsLine(target, $"ENCORE UNE VICTIME{Environment.NewLine}DE L'ASSASSIN MYSTERIEUX."); target.FixOcrErrorsViaReplaceList("fra"); - Assert.AreEqual("ENCORE UNE VICTIME\r\nDE L'ASSASSIN MYSTERIEUX.", target.Subtitle.Paragraphs[0].Text); + Assert.AreEqual($"ENCORE UNE VICTIME{Environment.NewLine}DE L'ASSASSIN MYSTERIEUX.", target.Subtitle.Paragraphs[0].Text); } } @@ -569,9 +569,9 @@ public void FixCommonOcrErrorsFrenchHardCodedRuleChange() { using (var target = GetFixCommonErrorsLib()) { - InitializeFixCommonErrorsLine(target, "Encore une victime\r\nde L'assassin mysterieux."); + InitializeFixCommonErrorsLine(target, $"Encore une victime{Environment.NewLine}de L'assassin mysterieux."); target.FixOcrErrorsViaReplaceList("fra"); - Assert.AreEqual("Encore une victime\r\nde l'assassin mysterieux.", target.Subtitle.Paragraphs[0].Text); + Assert.AreEqual($"Encore une victime{Environment.NewLine}de l'assassin mysterieux.", target.Subtitle.Paragraphs[0].Text); } } @@ -1373,7 +1373,7 @@ public void FixEmptyLinesTest1() { using (var target = GetFixCommonErrorsLib()) { - InitializeFixCommonErrorsLine(target, "\r\nHello world!\r\n"); + InitializeFixCommonErrorsLine(target, $"{Environment.NewLine}Hello world!{Environment.NewLine}"); new FixEmptyLines().Fix(_subtitle, new EmptyFixCallback()); Assert.AreEqual(_subtitle.Paragraphs[0].Text, "Hello world!"); } @@ -1384,7 +1384,7 @@ public void FixEmptyLinesTest2() { using (var target = GetFixCommonErrorsLib()) { - InitializeFixCommonErrorsLine(target, "\r\nHello world!\r\n"); + InitializeFixCommonErrorsLine(target, $"{Environment.NewLine}Hello world!{Environment.NewLine}"); new FixEmptyLines().Fix(_subtitle, new EmptyFixCallback()); Assert.AreEqual(_subtitle.Paragraphs[0].Text, "Hello world!"); } @@ -1969,22 +1969,22 @@ public void FixEllipsesAfterAssaTag() [TestMethod] public void FixDoubleGreaterThanTest2() { - const string input1 = ">>Hello world!\r\n>>Hello"; - const string input2 = ">>Hello world!\r\n>>Hello"; - const string input3 = ">>Hello world!\r\n>>Hello"; - const string input4 = ">>Hello world!\r\n>>Hello"; + var input1 = $">>Hello world!{Environment.NewLine}>>Hello"; + var input2 = $">>Hello world!{Environment.NewLine}>>Hello"; + var input3 = $">>Hello world!{Environment.NewLine}>>Hello"; + var input4 = $">>Hello world!{Environment.NewLine}>>Hello"; - const string expected1 = "Hello world!\r\nHello"; - const string expected2 = "Hello world!\r\nHello"; - const string expected3 = "Hello world!\r\nHello"; - const string expected4 = "Hello world!\r\nHello"; + var expected1 = $"Hello world!{Environment.NewLine}Hello"; + var expected2 = $"Hello world!{Environment.NewLine}Hello"; + var expected3 = $"Hello world!{Environment.NewLine}Hello"; + var expected4 = $"Hello world!{Environment.NewLine}Hello"; var lines1 = input1.SplitToLines(); var lines2 = input2.SplitToLines(); var lines3 = input3.SplitToLines(); var lines4 = input4.SplitToLines(); - for (int i = 0; i < lines1.Count; i++) + for (var i = 0; i < lines1.Count; i++) { lines1[i] = Helper.FixDoubleGreaterThanHelper(lines1[i]); lines2[i] = Helper.FixDoubleGreaterThanHelper(lines2[i]); @@ -2175,9 +2175,9 @@ public void FixDoubleDashTest2() using (var target = GetFixCommonErrorsLib()) { // and - InitializeFixCommonErrorsLine(target, "Mm-hmm.\r\n-- foobar"); + InitializeFixCommonErrorsLine(target, $"Mm-hmm.{Environment.NewLine}-- foobar"); new FixDoubleDash().Fix(_subtitle, new EmptyFixCallback()); - Assert.AreEqual(_subtitle.Paragraphs[0].Text, "Mm-hmm.\r\n...foobar"); + Assert.AreEqual(_subtitle.Paragraphs[0].Text, $"Mm-hmm.{Environment.NewLine}...foobar"); } } @@ -3635,7 +3635,7 @@ public void UnbreakShortLinesPixelWidth() using (var target = GetFixCommonErrorsLib()) { Configuration.Settings.General.SubtitleLineMaximumPixelWidth = 576; - InitializeFixCommonErrorsLine(target, "It is I this illustrious illiteration.\r\nIt's this..."); + InitializeFixCommonErrorsLine(target, $"It is I this illustrious illiteration.{Environment.NewLine}It's this..."); new FixShortLinesPixelWidth(TextWidth.CalcPixelWidth).Fix(_subtitle, new EmptyFixCallback()); Assert.AreEqual("It is I this illustrious illiteration. It's this...", _subtitle.Paragraphs[0].Text); } @@ -3648,9 +3648,9 @@ public void UnbreakShortLinesPixelWidthDialog() { Configuration.Settings.General.SubtitleLineMaximumPixelWidth = 576; Configuration.Settings.General.DialogStyle = DialogType.DashSecondLineWithoutSpace; - InitializeFixCommonErrorsLine(target, "It is I this illustrious illiteration.\r\n-It's this..."); + InitializeFixCommonErrorsLine(target, $"It is I this illustrious illiteration.{Environment.NewLine}-It's this..."); new FixShortLinesPixelWidth(TextWidth.CalcPixelWidth).Fix(_subtitle, new EmptyFixCallback()); - Assert.AreEqual("It is I this illustrious illiteration.\r\n-It's this...", _subtitle.Paragraphs[0].Text); + Assert.AreEqual($"It is I this illustrious illiteration.{Environment.NewLine}-It's this...", _subtitle.Paragraphs[0].Text); } } @@ -3660,9 +3660,9 @@ public void UnbreakShortLinesPixelWidthTooLong() using (var target = GetFixCommonErrorsLib()) { Configuration.Settings.General.SubtitleLineMaximumPixelWidth = 576; - InitializeFixCommonErrorsLine(target, "It is I this illustrious illiteration.\r\nIt's super..."); + InitializeFixCommonErrorsLine(target, $"It is I this illustrious illiteration.{Environment.NewLine}It's super..."); new FixShortLinesPixelWidth(TextWidth.CalcPixelWidth).Fix(_subtitle, new EmptyFixCallback()); - Assert.AreEqual("It is I this illustrious illiteration.\r\nIt's super...", _subtitle.Paragraphs[0].Text); + Assert.AreEqual($"It is I this illustrious illiteration.{Environment.NewLine}It's super...", _subtitle.Paragraphs[0].Text); } } @@ -3672,7 +3672,7 @@ public void UnbreakShortLinesPixelWidthTags() using (var target = GetFixCommonErrorsLib()) { Configuration.Settings.General.SubtitleLineMaximumPixelWidth = 576; - InitializeFixCommonErrorsLine(target, "It is I this illustrious illiteration.\r\nIt's this..."); + InitializeFixCommonErrorsLine(target, $"It is I this illustrious illiteration.{Environment.NewLine}It's this..."); new FixShortLinesPixelWidth(TextWidth.CalcPixelWidth).Fix(_subtitle, new EmptyFixCallback()); Assert.AreEqual("It is I this illustrious illiteration. It's this...", _subtitle.Paragraphs[0].Text); } diff --git a/src/Tests/GoogleCloudVision/GoogleCloudVisionJsonToLinesTest.cs b/src/Tests/GoogleCloudVision/GoogleCloudVisionJsonToLinesTest.cs index b330f586de..b22a84a580 100644 --- a/src/Tests/GoogleCloudVision/GoogleCloudVisionJsonToLinesTest.cs +++ b/src/Tests/GoogleCloudVision/GoogleCloudVisionJsonToLinesTest.cs @@ -1,4 +1,5 @@ -using Nikse.SubtitleEdit.Core.Common; +using System; +using Nikse.SubtitleEdit.Core.Common; using Nikse.SubtitleEdit.Core.VobSub.Ocr.Service; namespace Tests.GoogleCloudVision @@ -15,7 +16,7 @@ public void JsonToLines1() Configuration.Settings.Tools.OcrGoogleCloudVisionSeHandlesTextMerge = true; var lines = GoogleCloudVisionApi.JsonToStringList("nl", JsonInput1); Assert.AreEqual(1, lines.Count); - Assert.AreEqual("Wat ben jij aan het doen?\r\n-Ik bouw een marshmallow-hotel.", lines[0]); + Assert.AreEqual($"Wat ben jij aan het doen?{Environment.NewLine}-Ik bouw een marshmallow-hotel.", lines[0]); } [TestMethod] @@ -24,7 +25,7 @@ public void JsonToLines2() Configuration.Settings.Tools.OcrGoogleCloudVisionSeHandlesTextMerge = true; var lines = GoogleCloudVisionApi.JsonToStringList("en", JsonInput2); Assert.AreEqual(1, lines.Count); - Assert.AreEqual("I've already said what's\r\nnecessary to be said.", lines[0]); + Assert.AreEqual($"I've already said what's{Environment.NewLine}necessary to be said.", lines[0]); } } } diff --git a/src/Tests/Logic/Forms/RemoveTextForHearImpairedTest.cs b/src/Tests/Logic/Forms/RemoveTextForHearImpairedTest.cs index ac7a340c57..424c2c8b5b 100644 --- a/src/Tests/Logic/Forms/RemoveTextForHearImpairedTest.cs +++ b/src/Tests/Logic/Forms/RemoveTextForHearImpairedTest.cs @@ -145,8 +145,8 @@ public void RemoveColonTest3() target.Settings.OnlyIfInSeparateLine = false; target.Settings.ColonSeparateLine = false; target.Settings.RemoveTextBeforeColonOnlyUppercase = false; - const string text = "Barry, remember: She cannot\r\nteleport if she cannot see."; - const string expected = text; + string text = $"Barry, remember: She cannot{Environment.NewLine}teleport if she cannot see."; + string expected = text; string actual = target.RemoveColon(text); Assert.AreEqual(expected, actual); } @@ -161,8 +161,8 @@ public void RemoveColonTest4() target.Settings.OnlyIfInSeparateLine = false; target.Settings.ColonSeparateLine = false; target.Settings.RemoveTextBeforeColonOnlyUppercase = false; - const string text = "http://subscene.com/u/659433\r\nImproved by: @Ivandrofly"; - const string expected = text; + string text = $"http://subscene.com/u/659433{Environment.NewLine}Improved by: @Ivandrofly"; + string expected = text; string actual = target.RemoveColon(text); Assert.AreEqual(expected, actual); } @@ -329,8 +329,8 @@ public void RemoveHI1() target.Settings.RemoveTextBetweenSquares = true; target.Settings.RemoveTextBeforeColonOnlyUppercase = false; target.Settings.ColonSeparateLine = false; - const string text = "- Aw, save it. Storm?\r\n- [Storm]\r\nWe're outta here."; - const string expected = "- Aw, save it. Storm?\r\n- We're outta here."; + string text = $"- Aw, save it. Storm?{Environment.NewLine}- [Storm]\r\nWe're outta here."; + string expected = $"- Aw, save it. Storm?{Environment.NewLine}- We're outta here."; string actual = target.RemoveTextFromHearImpaired(text, _interjectionsLanguageCode); Assert.AreEqual(expected, actual); } @@ -364,8 +364,8 @@ public void RemoveHINot() target.Settings.OnlyIfInSeparateLine = false; target.Settings.RemoveTextBeforeColonOnlyUppercase = false; target.Settings.ColonSeparateLine = false; - const string text = "is the body of a mutant kid\r\non the 6:00 news."; - const string expected = "is the body of a mutant kid\r\non the 6:00 news."; + string text = $"is the body of a mutant kid{Environment.NewLine}on the 6:00 news."; + string expected = $"is the body of a mutant kid{Environment.NewLine}on the 6:00 news."; string actual = target.RemoveTextFromHearImpaired(text, _interjectionsLanguageCode); Assert.AreEqual(expected, actual); } diff --git a/src/Tests/Logic/SplitLongLinesHelperTest.cs b/src/Tests/Logic/SplitLongLinesHelperTest.cs index 31aeee8623..037bdf26c6 100644 --- a/src/Tests/Logic/SplitLongLinesHelperTest.cs +++ b/src/Tests/Logic/SplitLongLinesHelperTest.cs @@ -49,8 +49,8 @@ public void SplitLongLinesInSubtitleTest() Configuration.Settings.Tools.AutoBreakUsePixelWidth = false; var procSubtitle = SplitLongLinesHelper.SplitLongLinesInSubtitle(_subtitle, _maxLineLength * 2, _maxLineLength); - Assert.AreEqual("We have never been to Asia,\r\nnor have we visited Africa.", procSubtitle.Paragraphs[0].Text); - Assert.AreEqual("We have never\r\nbeen to Asia, nor\r\nhave we visited Africa.", procSubtitle.Paragraphs[1].Text); + Assert.AreEqual($"We have never been to Asia,{Environment.NewLine}nor have we visited Africa.", procSubtitle.Paragraphs[0].Text); + Assert.AreEqual($"We have never{Environment.NewLine}been to Asia, nor{Environment.NewLine}have we visited Africa.", procSubtitle.Paragraphs[1].Text); Assert.AreEqual(_subtitle.Paragraphs[2].Text, procSubtitle.Paragraphs[2].Text); Assert.AreNotEqual(_subtitle.Paragraphs.Count, procSubtitle.Paragraphs.Count); @@ -60,8 +60,8 @@ public void SplitLongLinesInSubtitleTest() Assert.AreEqual(Utilities.AutoBreakLine("Of yourself and laugh it off to realise that life isn’t so bad after all.", "en"), procSubtitle.Paragraphs[4].Text); // too long - Assert.AreEqual("Sometimes, all you need to do is\r\ncompletely make an ass of yourself", procSubtitle.Paragraphs[5].Text); - Assert.AreEqual("and laugh it off to realise that\r\nlife isn’t so bad after all.", procSubtitle.Paragraphs[6].Text); + Assert.AreEqual($"Sometimes, all you need to do is{Environment.NewLine}completely make an ass of yourself", procSubtitle.Paragraphs[5].Text); + Assert.AreEqual($"and laugh it off to realise that{Environment.NewLine}life isn’t so bad after all.", procSubtitle.Paragraphs[6].Text); // timing test if (procSubtitle.Paragraphs[5].DurationTotalMilliseconds > procSubtitle.Paragraphs[6].DurationTotalMilliseconds) @@ -88,7 +88,7 @@ public void SplitLongLinesInSubtitleTest2() [TestMethod] public void MillisecondsPerCharTest() { - string text = Utilities.AutoBreakLine("The waves were crashing on the\r\nshore; it was a lovely sight."); + string text = Utilities.AutoBreakLine($"The waves were crashing on the{Environment.NewLine}shore; it was a lovely sight."); double optimalDuration = Utilities.GetOptimalDisplayMilliseconds(text); double displayCharLen = HtmlUtil.RemoveHtmlTags(text, true).Length - (Utilities.GetNumberOfLines(text) - 1) * Environment.NewLine.Length; double msPerChar = optimalDuration / displayCharLen; diff --git a/src/Tests/Logic/SubtitleFormats/SubtitleFormatsTest.cs b/src/Tests/Logic/SubtitleFormats/SubtitleFormatsTest.cs index 9be3c1092d..39e3952ca9 100644 --- a/src/Tests/Logic/SubtitleFormats/SubtitleFormatsTest.cs +++ b/src/Tests/Logic/SubtitleFormats/SubtitleFormatsTest.cs @@ -1355,7 +1355,7 @@ public void PhoenixSubtitleTest() // Test text. phxSub.LoadSubtitle(subtitle, new List(text.SplitToLines()), null); Assert.AreEqual("You should come to the Drama Club, too.", subtitle.Paragraphs[0].Text); - Assert.AreEqual("Yeah. The Drama Club is worried\r\nthat you haven't been coming.", subtitle.Paragraphs[1].Text); + Assert.AreEqual($"Yeah. The Drama Club is worried{Environment.NewLine}that you haven't been coming.", subtitle.Paragraphs[1].Text); // Test frames. Assert.AreEqual(SubtitleFormat.FramesToMilliseconds(2447), subtitle.Paragraphs[0].StartTime.TotalMilliseconds); diff --git a/src/Tests/Logic/UtilitiesTest.cs b/src/Tests/Logic/UtilitiesTest.cs index 5377d93d7d..0358dc8daf 100644 --- a/src/Tests/Logic/UtilitiesTest.cs +++ b/src/Tests/Logic/UtilitiesTest.cs @@ -288,6 +288,11 @@ public void AutoBreakLine3Lines3() [DoNotParallelize] public void AutoBreakPreferPixelWidth() { + if (Environment.OSVersion.Platform == PlatformID.Unix) + { + Assert.Inconclusive(); + } + Configuration.Settings.Tools.AutoBreakUsePixelWidth = true; string res = Utilities.AutoBreakLine("Iiiiii iiiiii iiiiii iiii WWWWWW WWWWWW WWWWWW."); Assert.IsTrue(res.SplitToLines()[0].Contains('W')); @@ -297,6 +302,11 @@ public void AutoBreakPreferPixelWidth() [DoNotParallelize] public void AutoBreakPreferPixelWidth2() { + if (Environment.OSVersion.Platform is PlatformID.Unix) + { + Assert.Inconclusive(); + } + Configuration.Settings.Tools.AutoBreakUsePixelWidth = true; Configuration.Settings.Tools.AutoBreakPreferBottomHeavy = false; string res = Utilities.AutoBreakLine("Samo želim životnog partnera koji će mi biti prijatelj do kraja života,"); @@ -636,8 +646,8 @@ public void FixUnneededSpacesFontTag2() [TestMethod] public void FixUnneededSpacesFontTag3() { - string s = Utilities.RemoveUnneededSpaces("- Foobar! \r\n (PEOPLE SPEAKING INDISTINCTLY) ", "en"); - Assert.AreEqual(s, "- Foobar!\r\n(PEOPLE SPEAKING INDISTINCTLY)"); + string s = Utilities.RemoveUnneededSpaces($"- Foobar! {Environment.NewLine} (PEOPLE SPEAKING INDISTINCTLY) ", "en"); + Assert.AreEqual(s, $"- Foobar!{Environment.NewLine}(PEOPLE SPEAKING INDISTINCTLY)"); } [TestMethod] @@ -646,8 +656,8 @@ public void RemoveUnneededSpacesAfterQuote() const string lang = "en"; // variant 1 - string s = Utilities.RemoveUnneededSpaces("\" In five years the Corleone family\r\nwill be completely legitimate.\"", lang); - Assert.AreEqual("\"In five years the Corleone family\r\nwill be completely legitimate.\"", s); + string s = Utilities.RemoveUnneededSpaces($"\" In five years the Corleone family{Environment.NewLine}will be completely legitimate.\"", lang); + Assert.AreEqual($"\"In five years the Corleone family{Environment.NewLine}will be completely legitimate.\"", s); // variant 2 s = Utilities.RemoveUnneededSpaces("Foobar? \" Foobar\".", lang); diff --git a/src/Tests/Tests.csproj b/src/Tests/Tests.csproj index 8ead06da0d..547b591dbb 100644 --- a/src/Tests/Tests.csproj +++ b/src/Tests/Tests.csproj @@ -58,6 +58,7 @@ + diff --git a/src/libse/Common/StringExtensions.cs b/src/libse/Common/StringExtensions.cs index d7c8c2cec9..0a0d4ec1c3 100644 --- a/src/libse/Common/StringExtensions.cs +++ b/src/libse/Common/StringExtensions.cs @@ -62,7 +62,7 @@ public static bool LineBreakStartsWithHtmlTag(this string text, bool threeLength return false; } - text = text.Substring(newLineIdx + 2); + text = text.Substring(newLineIdx + Environment.NewLine.Length); return StartsWithHtmlTag(text, threeLengthTag, includeFont); } diff --git a/src/libse/Common/Utilities.cs b/src/libse/Common/Utilities.cs index aada8425eb..b4ae56ee74 100644 --- a/src/libse/Common/Utilities.cs +++ b/src/libse/Common/Utilities.cs @@ -282,8 +282,8 @@ public static string AutoBreakLineMoreThanTwoLines(string text, int maximumLengt string s = AutoBreakLinePrivate(text, maximumLength, mergeLinesShorterThan, language, Configuration.Settings.Tools.AutoBreakLineEndingEarly); var arr = HtmlUtil.RemoveHtmlTags(s, true).SplitToLines(); - if (arr.Count == 1 && arr[0].Length <= maximumLength || - arr.Count == 2 && arr[0].Length <= maximumLength && arr[1].Length <= maximumLength) + + if (arr.All(line => line.Length < maximumLength)) { return s; } diff --git a/src/ui/SubtitleEdit.csproj b/src/ui/SubtitleEdit.csproj index 5029434890..2c8eee4af6 100644 --- a/src/ui/SubtitleEdit.csproj +++ b/src/ui/SubtitleEdit.csproj @@ -14,6 +14,8 @@ true true true + true + true app.manifest @@ -286,6 +288,7 @@ +