diff --git a/ICD.Common.Utils.Tests/StringUtilsTest.cs b/ICD.Common.Utils.Tests/StringUtilsTest.cs index c30931e..18318ff 100644 --- a/ICD.Common.Utils.Tests/StringUtilsTest.cs +++ b/ICD.Common.Utils.Tests/StringUtilsTest.cs @@ -61,10 +61,10 @@ namespace ICD.Common.Utils.Tests Assert.AreEqual("[-3 - 5]", StringUtils.RangeFormat(-3, 5)); } - [Test, UsedImplicitly] - public void UppercaseFirstTest() + [TestCase("foobar", "Foobar")] + public void UppercaseFirstTest(string value, string expected) { - Assert.AreEqual("Foobar", StringUtils.UppercaseFirst("foobar")); + Assert.AreEqual(expected, StringUtils.UppercaseFirst(value)); } [TestCase("test", "Test")] @@ -74,16 +74,24 @@ namespace ICD.Common.Utils.Tests Assert.AreEqual(expected, StringUtils.ToTitleCase(input)); } - [Test, UsedImplicitly] - public void ToIpIdStringTest() + [TestCase((byte)0x67, "0x67")] + public void ToIpIdStringTest(byte ipid, string expected) { - Assert.AreEqual("0x67", StringUtils.ToIpIdString(0x67)); + Assert.AreEqual(expected, StringUtils.ToIpIdString(ipid)); } - [Test, UsedImplicitly] - public void FromIpIdStringTest() + [TestCase("0x67", (byte)0x67)] + public void FromIpIdStringTest(string value, byte expected) { - Assert.AreEqual(0x67, StringUtils.FromIpIdString("0x67")); + Assert.AreEqual(expected, StringUtils.FromIpIdString(value)); + } + + [TestCase("0x67", true, (byte)0x67)] + public void TryFromIpIdStringTest(string value, bool expected, byte expectedOutput) + { + byte output; + Assert.AreEqual(expected, StringUtils.TryFromIpIdString(value, out output)); + Assert.AreEqual(expectedOutput, output); } [UsedImplicitly] diff --git a/ICD.Common.Utils/StringUtils.cs b/ICD.Common.Utils/StringUtils.cs index fa323c4..2569b14 100644 --- a/ICD.Common.Utils/StringUtils.cs +++ b/ICD.Common.Utils/StringUtils.cs @@ -564,6 +564,30 @@ namespace ICD.Common.Utils } } + /// + /// Formats "0xFF" to an IPID. + /// + /// + /// + /// + public static bool TryFromIpIdString(string value, out byte result) + { + if (value == null) + throw new ArgumentNullException("value"); + + result = 0; + + try + { + result = (byte)Convert.ToInt64(value, 16); + return true; + } + catch (ArgumentOutOfRangeException) + { + return false; + } + } + /// /// Removes all whitespace from the string. ///