using System; using System.Text; namespace MyExSample { class Program { static void Main(string[] args) { int[] Array = Console.ReadLine().Split(' ').ArrayToInts(); Console.WriteLine(Array.ArrayToString()); } } static public class MyExtensions { public static string ArrayToString(this int[] Array) { if (Array.Length == 0) { return (""); } StringBuilder sb = new StringBuilder(); sb.Append(Array[0]); for (int i = 1; i < Array.Length; i++) { sb.Append(" "); sb.Append(Array[i]); } return (sb.ToString()); } public static int[] ArrayToInts(this string[] Texts) { int N = Texts.Length; int[] A = new int[N]; for (int i = 0; i < N; i++) { A[i] = int.Parse(Texts[i]); } return (A); } } }/*------*/
using Microsoft.VisualStudio.TestTools.UnitTesting; namespace MyExSample.Tests { [TestClass()] public class MyExtensionsTests { [TestMethod()] public void ArrayToIntsTest() { int[] Array; Array = new string[] { }.ArrayToInts(); Assert.AreEqual(0, Array.Length); Array = new string[] { "1", "2", "3" }.ArrayToInts(); Assert.AreEqual(3, Array.Length); Assert.AreEqual(1, Array[0]); Assert.AreEqual(2, Array[1]); Assert.AreEqual(3, Array[2]); } [TestMethod()] public void ArrayToStringTest() { Assert.AreEqual("", new int[] { }.ArrayToString()); Assert.AreEqual("1 2 3", new int[] { 1, 2, 3 }.ArrayToString()); } } }
文字列の配列を整数の配列に変換するやつと、整数の配列を文字列に変換するやつ。エラー処理とかは一切していないので実際に使う場合はてきとーにごにょごにょと。
ところで、MsTestで配列をテストするのにいい方法は無いものか。forで回してエラーメッセージにIndexを入れておくとかかなぁ… それこそ拡張メソッドで実現するべきっぽいですよね。まぁMsTestが使いづらかろうともデフォルトで使える以上は使い続けますが。
0 件のコメント:
コメントを投稿