Пример #1
0
        /// <summary>
        /// 使用すべきフォーマッタを返します。
        /// </summary>
        /// <param name="description">項目定義</param>
        /// <returns>フォーマッタ</returns>
        public static IFormatter Create(PropertyDescrption description = null)
        {
            if (description == null)
            {
                return(InactionFormatter.GetInstance());
            }

            switch (description.Unit)
            {
            case "円":
            case "百万円":
                return(CurrencyFormatter.GetInstance());

            case "%":
                return(RatioFormatter.GetInstance());

            case "株":
            case "倍":
            case "日":
            case "ヶ月":
            case "人":
                return(NumericFormatter.GetInstance());

            case "年":
            default:
                return(InactionFormatter.GetInstance());
            }
        }
        public void TestFormat()
        {
            var    formatter  = CurrencyFormatter.GetInstance();
            var    yen        = new PropertyDescrption("any", "any", "円");
            var    millionYen = new PropertyDescrption("any", "any", "百万円");
            string formatted;

            // 円
            // カンマの処理だけ
            formatted = formatter.Format("1", yen);
            Assert.AreEqual("1", formatted);
            formatted = formatter.Format("10000", yen);
            Assert.AreEqual("10,000", formatted);
            formatted = formatter.Format("-1000000", yen);
            Assert.AreEqual("-1,000,000", formatted);
            formatted = formatter.Format("", yen);
            Assert.AreEqual("", formatted);

            // 百万円
            // 単位の調整もやる
            formatted = formatter.Format("1000000", millionYen);
            Assert.AreEqual("1", formatted);
            formatted = formatter.Format("1000000000", millionYen);
            Assert.AreEqual("1,000", formatted);
            formatted = formatter.Format("-1000000000000", millionYen);
            Assert.AreEqual("-1,000,000", formatted);
            formatted = formatter.Format("999999", millionYen);
            Assert.AreEqual("0", formatted);
            formatted = formatter.Format("", millionYen);
            Assert.AreEqual("", formatted);
        }