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 件のコメント:
コメントを投稿