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 @@
+