Test case for Integer and Floating point formatters (2/18)

http://bugzilla.ximian.com/show_bug.cgi?id=71112であるように、数値のフォーマッティング関係が結構不具合が多いです。自分がMonoを使って仕事をする場合は、この辺は致命傷になるのでちまちまテストケースを書いてみることに。ただ、型(byte/sbyte/short/ushrot/int/uint/long/ulong/float/double/decimal)とフォーマット(C/D/E/F/G/N/P/R/X/Custom)の組み合わせをまともにやるととんでもない量になるので型をint/doubleに絞っていますが、それでもテストメソッドで500くらいにはなりそ。(^^;

一応、MS.NETを正にしていますが、仕様が分からないケースも多くてコード書くのが大変そう。たとえば、

using System;

class X
{
  public static void Main ()
  {
    Console.WriteLine (Int32.MaxValue.ToString ("E0.0"));
    Console.WriteLine (Int32.MaxValue.ToString ("E0"));
    Console.WriteLine (Int32.MaxValue.ToString ("E.0"));
    Console.WriteLine (Int32.MaxValue.ToString ("E0.X"));
    Console.WriteLine (Int32.MaxValue.ToString ("E0.9"));
    Console.WriteLine (Int32.MaxValue.ToString ("E9.0"));
  }
}

/* MS.NET
E10.2
2E+009
E2147483647.0
E0X
E09
E92147483647.0
 */

最初のヤツがどういう理屈でE10.2になるのかさっぱりです。(^^;