Add IsNumericArray extension

This commit is contained in:
Matt Nadareski
2025-11-04 10:08:56 -05:00
parent 2763d3915b
commit fb1fc5d85d
2 changed files with 49 additions and 0 deletions

View File

@@ -36,6 +36,42 @@ namespace SabreTools.IO.Test.Extensions
#endregion
#region IsNumericArray
[Fact]
public void IsNumericArray_Empty_False()
{
byte[] arr = [];
bool actual = arr.IsNumericArray();
Assert.False(actual);
}
[Fact]
public void IsNumericArray_NonNumeric_False()
{
byte[] arr = Encoding.ASCII.GetBytes("ABCDEF");
bool actual = arr.IsNumericArray();
Assert.False(actual);
}
[Fact]
public void IsNumericArray_MixedNumeric_False()
{
byte[] arr = Encoding.ASCII.GetBytes("ABC123");
bool actual = arr.IsNumericArray();
Assert.False(actual);
}
[Fact]
public void IsNumericArray_Numeric_True()
{
byte[] arr = Encoding.ASCII.GetBytes("0123456789");
bool actual = arr.IsNumericArray();
Assert.True(actual);
}
#endregion
#region FindAllPositions
[Fact]

View File

@@ -16,6 +16,19 @@ namespace SabreTools.IO.Extensions
return array == null || array.Length == 0;
}
/// <summary>
/// Indicates if an array contains all ASCII numeric digits
/// </summary>
public static bool IsNumericArray(this byte[] arr)
{
// Empty arrays cannot be numeric
if (arr.Length == 0)
return false;
// '0' to '9'
return Array.TrueForAll(arr, b => b >= 0x30 && b <= 0x39);
}
#region Matching
/// <summary>