summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/release-notes.md3
-rw-r--r--src/SMAPI.Tests/Utilities/SDateTests.cs10
-rw-r--r--src/SMAPI/Utilities/SDate.cs4
3 files changed, 12 insertions, 5 deletions
diff --git a/docs/release-notes.md b/docs/release-notes.md
index f1911716..4ca11f01 100644
--- a/docs/release-notes.md
+++ b/docs/release-notes.md
@@ -5,6 +5,9 @@
* For players:
* Improved translations. Thanks to ChulkyBow (updated Ukrainian)!
+* For mod authors:
+ * The `SDate` constructor is no longer case-sensitive for season names.
+
* For console commands:
* Fixed `player_add` with Journal Scraps and Secret Notes.
diff --git a/src/SMAPI.Tests/Utilities/SDateTests.cs b/src/SMAPI.Tests/Utilities/SDateTests.cs
index 0461952e..374f4921 100644
--- a/src/SMAPI.Tests/Utilities/SDateTests.cs
+++ b/src/SMAPI.Tests/Utilities/SDateTests.cs
@@ -16,9 +16,12 @@ namespace SMAPI.Tests.Utilities
/*********
** Fields
*********/
- /// <summary>All valid seasons.</summary>
+ /// <summary>The valid seasons.</summary>
private static readonly string[] ValidSeasons = { "spring", "summer", "fall", "winter" };
+ /// <summary>Sample user inputs for season names.</summary>
+ private static readonly string[] SampleSeasonValues = SDateTests.ValidSeasons.Concat(new[] { " WIntEr " }).ToArray();
+
/// <summary>All valid days of a month.</summary>
private static readonly int[] ValidDays = Enumerable.Range(1, 28).ToArray();
@@ -55,19 +58,18 @@ namespace SMAPI.Tests.Utilities
** Constructor
****/
[Test(Description = "Assert that the constructor sets the expected values for all valid dates.")]
- public void Constructor_SetsExpectedValues([ValueSource(nameof(SDateTests.ValidSeasons))] string season, [ValueSource(nameof(SDateTests.ValidDays))] int day, [Values(1, 2, 100)] int year)
+ public void Constructor_SetsExpectedValues([ValueSource(nameof(SDateTests.SampleSeasonValues))] string season, [ValueSource(nameof(SDateTests.ValidDays))] int day, [Values(1, 2, 100)] int year)
{
// act
SDate date = new SDate(day, season, year);
// assert
Assert.AreEqual(day, date.Day);
- Assert.AreEqual(season, date.Season);
+ Assert.AreEqual(season.Trim().ToLowerInvariant(), date.Season);
Assert.AreEqual(year, date.Year);
}
[Test(Description = "Assert that the constructor throws an exception if the values are invalid.")]
- [TestCase(01, "Spring", 1)] // seasons are case-sensitive
[TestCase(01, "springs", 1)] // invalid season name
[TestCase(-1, "spring", 1)] // day < 0
[TestCase(0, "spring", 1)] // day zero
diff --git a/src/SMAPI/Utilities/SDate.cs b/src/SMAPI/Utilities/SDate.cs
index cd075dcc..e10a59f8 100644
--- a/src/SMAPI/Utilities/SDate.cs
+++ b/src/SMAPI/Utilities/SDate.cs
@@ -250,6 +250,8 @@ namespace StardewModdingAPI.Utilities
/// <exception cref="ArgumentException">One of the arguments has an invalid value (like day 35).</exception>
private SDate(int day, string season, int year, bool allowDayZero)
{
+ season = season?.Trim().ToLowerInvariant();
+
// validate
if (season == null)
throw new ArgumentNullException(nameof(season));
@@ -277,7 +279,7 @@ namespace StardewModdingAPI.Utilities
/// <param name="year">The year.</param>
private bool IsDayZero(int day, string season, int year)
{
- return day == 0 && season == "spring" && year == 1;
+ return day == 0 && season?.Trim().ToLower() == "spring" && year == 1;
}
/// <summary>Get the day of week for a given date.</summary>