public void IsLeapMonth()
        {
            Dictionary <int, int> d = new Dictionary <int, int> ();

            d [2001] = 5;
            d [2004] = 3;
            d [2006] = 8;
            d [2009] = 6;
            d [2012] = 5;
            d [2014] = 10;
            d [2017] = 7;
            d [2020] = 5;
            d [2023] = 3;
            d [2025] = 7;             // hmm ...
            d [2028] = 6;
            d [2031] = 4;             // hmmmm ...
            d [2033] = 12;            // hmmmmmm ...
            d [2036] = 7;
            for (int y = 2000; y < 2038; y++)
            {
                for (int m = 1; m <= 12; m++)
                {
                    Assert.AreEqual(d.ContainsKey(y) && d [y] == m, cn.IsLeapMonth(y, m), "cn" + y + "/" + m);
                }
            }

            d       = new Dictionary <int, int> ();
            d [90]  = 5;
            d [93]  = 3;
            d [95]  = 8;
            d [98]  = 6;
            d [101] = 5;
            d [103] = 10;
            d [106] = 7;
            d [109] = 5;
            d [112] = 3;
            d [114] = 7;
            d [117] = 6;
            d [120] = 4;
            d [122] = 12;
            d [125] = 7;
            for (int y = 89; y < 127; y++)
            {
                for (int m = 1; m <= 12; m++)
                {
                    Assert.AreEqual(d.ContainsKey(y) && d [y] == m, tw.IsLeapMonth(y, m), "tw" + y + "/" + m);
                }
            }

            d      = new Dictionary <int, int> ();
            d [13] = 5;
            d [16] = 3;
            d [18] = 8;
            d [21] = 6;
            d [24] = 4;
            d [26] = 10;
            d [29] = 6;
            for (int y = 12; y < 32; y++)
            {
                for (int m = 1; m <= 12; m++)
                {
                    Assert.AreEqual(d.ContainsKey(y) && d [y] == m, jp.IsLeapMonth(y, m, 4), "jp" + y + "/" + m);
                }
            }

            d        = new Dictionary <int, int> ();
            d [2001] = 5;
            d [2004] = 3;
            d [2006] = 8;
            d [2009] = 6;
            d [2012] = 4;
            d [2014] = 10;
            d [2017] = 6;
            for (int y = 2000; y < 2020; y++)
            {
                for (int m = 1; m <= 12; m++)
                {
                    Assert.AreEqual(d.ContainsKey(y) && d [y] == m, kr.IsLeapMonth(y, m), "kr" + y + "/" + m);
                }
            }
        }