diff --git a/src/TimeZoneConverter/TZConvert.cs b/src/TimeZoneConverter/TZConvert.cs
index e5470f0..44bbea2 100644
--- a/src/TimeZoneConverter/TZConvert.cs
+++ b/src/TimeZoneConverter/TZConvert.cs
@@ -124,6 +124,12 @@ public static string IanaToWindows(string ianaTimeZoneName)
/// true if successful, false otherwise.
public static bool TryIanaToWindows(string ianaTimeZoneName, [MaybeNullWhen(false)] out string windowsTimeZoneId)
{
+ if (string.IsNullOrWhiteSpace(ianaTimeZoneName))
+ {
+ windowsTimeZoneId = null;
+ return false;
+ }
+
return IanaMap.TryGetValue(ianaTimeZoneName, out windowsTimeZoneId!);
}
@@ -337,6 +343,12 @@ public static TimeZoneInfo GetTimeZoneInfo(string windowsOrIanaTimeZoneId)
public static bool TryGetTimeZoneInfo(string windowsOrIanaTimeZoneId,
[MaybeNullWhen(false)] out TimeZoneInfo timeZoneInfo)
{
+ if (string.IsNullOrWhiteSpace(windowsOrIanaTimeZoneId))
+ {
+ timeZoneInfo = null;
+ return false;
+ }
+
if (string.Equals(windowsOrIanaTimeZoneId, "UTC", StringComparison.OrdinalIgnoreCase))
{
timeZoneInfo = TimeZoneInfo.Utc;
@@ -395,6 +407,11 @@ public static IList IanaToRails(string ianaTimeZoneName)
/// true if successful, false otherwise.
public static bool TryIanaToRails(string ianaTimeZoneName, out IList railsTimeZoneNames)
{
+ if (string.IsNullOrWhiteSpace(ianaTimeZoneName))
+ {
+ railsTimeZoneNames = Array.Empty();
+ return false;
+ }
// in the case of an Etc/GMT+/-n zone, use the Rails fixed-offset zone. For example, `Etc/GMT-6` -> `+06:00` or `Etc/GMT+3` -> `-03:00`
if (ianaTimeZoneName.StartsWith("Etc/GMT", StringComparison.OrdinalIgnoreCase))
@@ -466,6 +483,12 @@ public static string RailsToIana(string railsTimeZoneName)
/// true if successful, false otherwise.
public static bool TryRailsToIana(string railsTimeZoneName, [MaybeNullWhen(false)] out string ianaTimeZoneName)
{
+ if (string.IsNullOrWhiteSpace(railsTimeZoneName))
+ {
+ ianaTimeZoneName = null;
+ return false;
+ }
+
return RailsMap.TryGetValue(railsTimeZoneName, out ianaTimeZoneName);
}
diff --git a/test/TimeZoneConverter.Tests/MiscTests.cs b/test/TimeZoneConverter.Tests/MiscTests.cs
new file mode 100644
index 0000000..6ee5591
--- /dev/null
+++ b/test/TimeZoneConverter.Tests/MiscTests.cs
@@ -0,0 +1,73 @@
+using Xunit.Abstractions;
+
+namespace TimeZoneConverter.Tests;
+
+public class MiscTests()
+{
+#pragma warning disable CS8625
+
+ [Fact]
+ public void No_Exception_From_TryGetTimeZoneInfo()
+ {
+ Assert.False(TZConvert.TryGetTimeZoneInfo(null, out var _));
+ Assert.False(TZConvert.TryGetTimeZoneInfo("", out var _));
+ Assert.False(TZConvert.TryGetTimeZoneInfo(" ", out var _));
+ Assert.False(TZConvert.TryGetTimeZoneInfo("blah", out var _));
+ }
+
+ [Fact]
+ public void No_Exception_From_TryIanaToRails()
+ {
+ Assert.False(TZConvert.TryIanaToRails(null, out var _));
+ Assert.False(TZConvert.TryIanaToRails("", out var _));
+ Assert.False(TZConvert.TryIanaToRails(" ", out var _));
+ Assert.False(TZConvert.TryIanaToRails("blah", out var _));
+ }
+
+ [Fact]
+ public void No_Exception_From_TryIanaToWindows()
+ {
+ Assert.False(TZConvert.TryIanaToWindows(null, out var _));
+ Assert.False(TZConvert.TryIanaToWindows("", out var _));
+ Assert.False(TZConvert.TryIanaToWindows(" ", out var _));
+ Assert.False(TZConvert.TryIanaToWindows("blah", out var _));
+ }
+
+ [Fact]
+ public void No_Exception_From_TryRailsToIana()
+ {
+ Assert.False(TZConvert.TryRailsToIana(null, out var _));
+ Assert.False(TZConvert.TryRailsToIana("", out var _));
+ Assert.False(TZConvert.TryRailsToIana(" ", out var _));
+ Assert.False(TZConvert.TryRailsToIana("blah", out var _));
+ }
+
+ [Fact]
+ public void No_Exception_From_TryRailsToWindows()
+ {
+ Assert.False(TZConvert.TryRailsToWindows(null, out var _));
+ Assert.False(TZConvert.TryRailsToWindows("", out var _));
+ Assert.False(TZConvert.TryRailsToWindows(" ", out var _));
+ Assert.False(TZConvert.TryRailsToWindows("blah", out var _));
+ }
+
+ [Fact]
+ public void No_Exception_From_TryWindowsToIana()
+ {
+ Assert.False(TZConvert.TryWindowsToIana(null, out var _));
+ Assert.False(TZConvert.TryWindowsToIana("", out var _));
+ Assert.False(TZConvert.TryWindowsToIana(" ", out var _));
+ Assert.False(TZConvert.TryWindowsToIana("blah", out var _));
+ }
+
+ [Fact]
+ public void No_Exception_From_TryWindowsToRails()
+ {
+ Assert.False(TZConvert.TryWindowsToRails(null, out var _));
+ Assert.False(TZConvert.TryWindowsToRails("", out var _));
+ Assert.False(TZConvert.TryWindowsToRails(" ", out var _));
+ Assert.False(TZConvert.TryWindowsToRails("blah", out var _));
+ }
+
+#pragma warning restore CS8625
+}