diff --git a/X10D.Tests/src/Core/ArrayTests.cs b/X10D.Tests/src/Core/ArrayTests.cs index 8bd6533..c837c7e 100644 --- a/X10D.Tests/src/Core/ArrayTests.cs +++ b/X10D.Tests/src/Core/ArrayTests.cs @@ -5,6 +5,18 @@ namespace X10D.Tests.Core; [TestClass] public class ArrayTests { + [TestMethod] + [DataRow(1)] + [DataRow("f")] + [DataRow(true)] + public void AsArray(object o) + { + object[] array = o.AsArray(); + Assert.IsNotNull(array); + Assert.IsTrue(array.Length == 1); + Assert.AreEqual(o, array[0]); + } + [TestMethod] [DataRow] [DataRow(1)] diff --git a/X10D.Tests/src/Core/EnumerableTests.cs b/X10D.Tests/src/Core/EnumerableTests.cs index b320c96..a048c0d 100644 --- a/X10D.Tests/src/Core/EnumerableTests.cs +++ b/X10D.Tests/src/Core/EnumerableTests.cs @@ -5,6 +5,18 @@ namespace X10D.Tests.Core; [TestClass] public partial class EnumerableTests { + [TestMethod] + [DataRow(1)] + [DataRow("f")] + [DataRow(true)] + public void AsEnumerable(object o) + { + IEnumerable array = o.AsEnumerable().ToArray(); // prevent multiple enumeration of IEnumerable + Assert.IsNotNull(array); + Assert.IsTrue(array.Count() == 1); + Assert.AreEqual(o, array.ElementAt(0)); + } + [TestMethod] [DataRow(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)] public void Shuffled(params int[] source) diff --git a/X10D/src/Extensions/Extensions.cs b/X10D/src/Extensions/Extensions.cs new file mode 100644 index 0000000..d446978 --- /dev/null +++ b/X10D/src/Extensions/Extensions.cs @@ -0,0 +1,33 @@ +namespace X10D; + +/// +/// Extension methods which apply to all types. +/// +public static class Extensions +{ + /// + /// Returns an array containing the specified value. + /// + /// The value to encapsulate. + /// The value type. + /// + /// An array of type with length 1, whose only element is . + /// + public static T[] AsArray(this T value) + { + return new[] {value}; + } + + /// + /// Returns an enumerable collection containing the specified value. + /// + /// The value to encapsulate. + /// The value type. + /// + /// An enumerable collection of type , whose only element is . + /// + public static IEnumerable AsEnumerable(this T value) + { + yield return value; + } +}