/// <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); }