diff --git a/src/SIL.Machine/Corpora/ParatextProjectSettings.cs b/src/SIL.Machine/Corpora/ParatextProjectSettings.cs index 28bdbbf4..1ff1dd90 100644 --- a/src/SIL.Machine/Corpora/ParatextProjectSettings.cs +++ b/src/SIL.Machine/Corpora/ParatextProjectSettings.cs @@ -89,8 +89,13 @@ public bool IsBookFileName(string fileName, out string bookId) { bookId = null; - if (!fileName.StartsWith(FileNamePrefix) || !fileName.EndsWith(FileNameSuffix)) + if ( + !fileName.StartsWith(FileNamePrefix, ignoreCase: true, CultureInfo.InvariantCulture) + || !fileName.EndsWith(FileNameSuffix, ignoreCase: true, CultureInfo.InvariantCulture) + ) + { return false; + } string bookPart = fileName.Substring( FileNamePrefix.Length, diff --git a/tests/SIL.Machine.Tests/Corpora/ParatextProjectSettingsTests.cs b/tests/SIL.Machine.Tests/Corpora/ParatextProjectSettingsTests.cs index 63be4d01..4aa2b5d1 100644 --- a/tests/SIL.Machine.Tests/Corpora/ParatextProjectSettingsTests.cs +++ b/tests/SIL.Machine.Tests/Corpora/ParatextProjectSettingsTests.cs @@ -171,6 +171,14 @@ public void IsBookFileName_WrongBookPart_BookNumBookId() Assert.That(settings.IsBookFileName("PROJ100.SFM", out _), Is.False); } + [Test] + public void IsBookFileName_CaseInsensitive() + { + ParatextProjectSettings settings = CreateSettings("MAT"); + Assert.That(settings.IsBookFileName("PROJMRK.sfm", out string bookId), Is.True); + Assert.That(bookId, Is.EqualTo("MRK")); + } + private static ParatextProjectSettings CreateSettings(string fileNameForm) { return new ParatextProjectSettings(