diff --git a/src/Forms/FixCommonErrors.cs b/src/Forms/FixCommonErrors.cs
index 781de3ca1..57c639faa 100644
--- a/src/Forms/FixCommonErrors.cs
+++ b/src/Forms/FixCommonErrors.cs
@@ -1373,6 +1373,11 @@ namespace Nikse.SubtitleEdit.Forms
{
Paragraph p = _subtitle.Paragraphs[i];
Paragraph next = _subtitle.GetParagraphOrDefault(i + 1);
+ string nextText = string.Empty;
+ if (next != null)
+ nextText = Utilities.RemoveHtmlTags(next.Text).TrimStart('-').TrimStart();
+ string tempNoHtml = Utilities.RemoveHtmlTags(p.Text).TrimEnd();
+
if (IsOneLineUrl(p.Text))
{
@@ -1380,11 +1385,11 @@ namespace Nikse.SubtitleEdit.Forms
}
else if (next != null &&
next.Text.Length > 0 &&
- Utilities.GetLetters(true, false, false).Contains(next.Text[0].ToString()) &&
- p.Text.Length > 0 &&
- (!"\",.!?:;>-])♪♫".Contains(p.Text[p.Text.Length - 1].ToString())))
+ Utilities.GetLetters(true, false, false).Contains(nextText[0].ToString()) &&
+ tempNoHtml.Length > 0 &&
+ (!"\",.!?:;>-])♪♫".Contains(tempNoHtml[tempNoHtml.Length - 1].ToString())))
{
- if (!p.Text.EndsWith(")") && !p.Text.EndsWith("]") && !p.Text.EndsWith("*") && !p.Text.EndsWith("¶")) // hear impaired
+ if (!tempNoHtml.EndsWith(")") && !tempNoHtml.EndsWith("]") && !tempNoHtml.EndsWith("*") && !tempNoHtml.EndsWith("¶")) // hear impaired
{
if (p.Text != p.Text.ToUpper())
{
@@ -1397,10 +1402,22 @@ namespace Nikse.SubtitleEdit.Forms
if (AllowFix(i + 1, fixAction))
{
string oldText = p.Text;
- _totalFixes++;
- missigPeriodsAtEndOfLine++;
- p.Text += ".";
- AddFixToListView(p, i + 1, fixAction, oldText, p.Text);
+ if (p.Text.EndsWith(">"))
+ {
+ int lastLT = p.Text.LastIndexOf("<");
+ if (lastLT > 0)
+ p.Text = p.Text.Insert(lastLT, ".");
+ }
+ else
+ {
+ p.Text += ".";
+ }
+ if (p.Text != oldText)
+ {
+ _totalFixes++;
+ missigPeriodsAtEndOfLine++;
+ AddFixToListView(p, i + 1, fixAction, oldText, p.Text);
+ }
}
}
}
diff --git a/src/Logic/Configuration.cs b/src/Logic/Configuration.cs
index b4bafb6a2..e1abcd7d8 100644
--- a/src/Logic/Configuration.cs
+++ b/src/Logic/Configuration.cs
@@ -112,6 +112,8 @@ namespace Nikse.SubtitleEdit.Logic
Instance._baseDir = Path.GetDirectoryName(a.Location);
else
Instance._baseDir = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
+ if (Instance._baseDir.EndsWith("Test\\bin\\Release"))
+ Instance._baseDir = Instance._baseDir.Replace("Test\\bin\\Release", "bin\\Release");
if (!Instance._baseDir.EndsWith(Path.DirectorySeparatorChar.ToString()))
Instance._baseDir += Path.DirectorySeparatorChar;
}
diff --git a/src/Test/FixCommonErrorsTest.cs b/src/Test/FixCommonErrorsTest.cs
index 23f41c3fa..5816d9827 100644
--- a/src/Test/FixCommonErrorsTest.cs
+++ b/src/Test/FixCommonErrorsTest.cs
@@ -1,6 +1,6 @@
-using Nikse.SubtitleEdit.Forms;
+using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
-using System;
+using Nikse.SubtitleEdit.Forms;
using Nikse.SubtitleEdit.Logic;
namespace Test
@@ -36,7 +36,14 @@ namespace Test
Subtitle subtitle = new Subtitle();
subtitle.Paragraphs.Add(new Paragraph(line, 100, 10000));
target.Initialize(subtitle);
- target.ButtonFixClick(null, null);
+ }
+
+ private static void InitializeFixCommonErrorsLine(FixCommonErrors_Accessor target, string line, string line2)
+ {
+ Subtitle subtitle = new Subtitle();
+ subtitle.Paragraphs.Add(new Paragraph(line, 100, 10000));
+ subtitle.Paragraphs.Add(new Paragraph(line2, 10001, 30000));
+ target.Initialize(subtitle);
}
#region Additional test attributes
@@ -70,9 +77,6 @@ namespace Test
#endregion
#region Merge short lines
- ///
- ///A test for Merge short lines
- ///
[TestMethod()]
[DeploymentItem("SubtitleEdit.exe")]
public void FixShortLinesNormal()
@@ -83,9 +87,6 @@ namespace Test
Assert.AreEqual(target._subtitle.Paragraphs[0].Text, "This is short!");
}
- ///
- ///A test for Merge short lines
- ///
[TestMethod()]
[DeploymentItem("SubtitleEdit.exe")]
public void FixShortLinesLong()
@@ -96,9 +97,6 @@ namespace Test
Assert.AreEqual(target._subtitle.Paragraphs[0].Text, "This I'm pretty sure is not a" + Environment.NewLine + "short line, that should be merged!!!");
}
- ///
- ///A test for Merge short lines
- ///
[TestMethod()]
[DeploymentItem("SubtitleEdit.exe")]
public void FixShortLinesNormalItalic()
@@ -109,9 +107,6 @@ namespace Test
Assert.AreEqual(target._subtitle.Paragraphs[0].Text, "This is short!");
}
- ///
- ///A test for Merge short lines
- ///
[TestMethod()]
[DeploymentItem("SubtitleEdit.exe")]
public void FixShortLinesDialogue()
@@ -122,9 +117,6 @@ namespace Test
Assert.AreEqual(target._subtitle.Paragraphs[0].Text, "- Hallo!" + Environment.NewLine + "- Hi");
}
- ///
- ///A test for Merge short lines
- ///
[TestMethod()]
[DeploymentItem("SubtitleEdit.exe")]
public void FixShortLinesDialogueItalic()
@@ -149,5 +141,130 @@ namespace Test
Assert.AreEqual(target._subtitle.Paragraphs[0].Text, "- Hallo!" + Environment.NewLine + "- Hi");
}
#endregion
+
+ #region Fix Italics
+ [TestMethod()]
+ [DeploymentItem("SubtitleEdit.exe")]
+ public void FixItalicsBeginOnly()
+ {
+ FixCommonErrors_Accessor target = new FixCommonErrors_Accessor();
+ InitializeFixCommonErrorsLine(target, "Hey!" + Environment.NewLine + "Boy!");
+ target.FixInvalidItalicTags();
+ Assert.AreEqual(target._subtitle.Paragraphs[0].Text, "Hey!" + Environment.NewLine + "Boy!");
+ }
+
+ [TestMethod()]
+ [DeploymentItem("SubtitleEdit.exe")]
+ public void FixItalicsFirstLineEndMissing()
+ {
+ FixCommonErrors_Accessor target = new FixCommonErrors_Accessor();
+ InitializeFixCommonErrorsLine(target, "(jones) seems their attackers headed north." + Environment.NewLine + "Hi!");
+ target.FixInvalidItalicTags();
+ Assert.AreEqual(target._subtitle.Paragraphs[0].Text, "(jones) seems their attackers headed north." + Environment.NewLine + "Hi!");
+ }
+
+ [TestMethod()]
+ [DeploymentItem("SubtitleEdit.exe")]
+ public void FixItalicsStartInMiddle()
+ {
+ FixCommonErrors_Accessor target = new FixCommonErrors_Accessor();
+ InitializeFixCommonErrorsLine(target, "Seems their attackers headed north.");
+ target.FixInvalidItalicTags();
+ Assert.AreEqual(target._subtitle.Paragraphs[0].Text, "Seems their attackers headed north.");
+ }
+
+ [TestMethod()]
+ [DeploymentItem("SubtitleEdit.exe")]
+ public void FixItalicsEmptyStart()
+ {
+ FixCommonErrors_Accessor target = new FixCommonErrors_Accessor();
+ InitializeFixCommonErrorsLine(target, "test");
+ target.FixInvalidItalicTags();
+ Assert.AreEqual(target._subtitle.Paragraphs[0].Text, "test");
+ }
+
+ [TestMethod()]
+ [DeploymentItem("SubtitleEdit.exe")]
+ public void FixItalicsSecondLineMissingEnd()
+ {
+ FixCommonErrors_Accessor target = new FixCommonErrors_Accessor();
+ InitializeFixCommonErrorsLine(target, "- And..." + Environment.NewLine + "Awesome it is!");
+ target.FixInvalidItalicTags();
+ Assert.AreEqual(target._subtitle.Paragraphs[0].Text, "- And..." + Environment.NewLine + "Awesome it is!");
+ }
+
+ [TestMethod()]
+ [DeploymentItem("SubtitleEdit.exe")]
+ public void FixItalicsBadEnding()
+ {
+ FixCommonErrors_Accessor target = new FixCommonErrors_Accessor();
+ InitializeFixCommonErrorsLine(target, "Awesome it is!");
+ target.FixInvalidItalicTags();
+ Assert.AreEqual(target._subtitle.Paragraphs[0].Text, "Awesome it is!");
+ }
+
+ [TestMethod()]
+ [DeploymentItem("SubtitleEdit.exe")]
+ public void FixItalicsBadEnding2()
+ {
+ FixCommonErrors_Accessor target = new FixCommonErrors_Accessor();
+ InitializeFixCommonErrorsLine(target, "Awesome it is!");
+ target.FixInvalidItalicTags();
+ Assert.AreEqual(target._subtitle.Paragraphs[0].Text, "Awesome it is!");
+ }
+
+ [TestMethod()]
+ [DeploymentItem("SubtitleEdit.exe")]
+ public void FixItalicsBadEnding3()
+ {
+ FixCommonErrors_Accessor target = new FixCommonErrors_Accessor();
+ InitializeFixCommonErrorsLine(target, "Awesome it is!");
+ target.FixInvalidItalicTags();
+ Assert.AreEqual(target._subtitle.Paragraphs[0].Text, "Awesome it is!");
+ }
+
+ [TestMethod()]
+ [DeploymentItem("SubtitleEdit.exe")]
+ public void FixItalicsBadEnding4()
+ {
+ FixCommonErrors_Accessor target = new FixCommonErrors_Accessor();
+ InitializeFixCommonErrorsLine(target, "Awesome it is!");
+ target.FixInvalidItalicTags();
+ Assert.AreEqual(target._subtitle.Paragraphs[0].Text, "Awesome it is!");
+ }
+ #endregion
+
+ #region Fix Missing Periods At End Of Line
+ [TestMethod()]
+ [DeploymentItem("SubtitleEdit.exe")]
+ public void FixMissingPeriodsAtEndOfLineNone()
+ {
+ FixCommonErrors_Accessor target = new FixCommonErrors_Accessor();
+ InitializeFixCommonErrorsLine(target, "This is line one!" + Environment.NewLine + "Boy!", "This is line one!" + Environment.NewLine + "Boy!");
+ target.FixMissingPeriodsAtEndOfLine();
+ Assert.AreEqual(target._subtitle.Paragraphs[0].Text, "This is line one!" + Environment.NewLine + "Boy!");
+ }
+
+ [TestMethod()]
+ [DeploymentItem("SubtitleEdit.exe")]
+ public void FixMissingPeriodsAtEndOfLineItalicAndMissing()
+ {
+ FixCommonErrors_Accessor target = new FixCommonErrors_Accessor();
+ InitializeFixCommonErrorsLine(target, "This is line one!" + Environment.NewLine + "Boy", "This is line one!" + Environment.NewLine + "Boy!");
+ target.FixMissingPeriodsAtEndOfLine();
+ Assert.AreEqual(target._subtitle.Paragraphs[0].Text, "This is line one!" + Environment.NewLine + "Boy.");
+ }
+
+ [TestMethod()]
+ [DeploymentItem("SubtitleEdit.exe")]
+ public void FixMissingPeriodsAtEndOfLineItalicAndMissing2()
+ {
+ FixCommonErrors_Accessor target = new FixCommonErrors_Accessor();
+ InitializeFixCommonErrorsLine(target, "This is line one!" + Environment.NewLine + "Boy", "This is line one!" + Environment.NewLine + "Boy!");
+ target.FixMissingPeriodsAtEndOfLine();
+ Assert.AreEqual(target._subtitle.Paragraphs[0].Text, "This is line one!" + Environment.NewLine + "Boy.");
+ }
+ #endregion
+
}
}