public override bool Equals(object obj) { if (obj == null) { return(false); } MockNumeric numeric = obj as MockNumeric; return(numeric != null && numeric.Number == Number); }
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { if (value == null) { return(value); } if (destinationType == typeof(string)) { MockNumeric val = value as MockNumeric; return(val.Number.ToString("C", culture)); } return(base.ConvertTo(context, culture, value, destinationType)); }
public void IFormattable () { CultureInfo originalCulture = CultureInfo.CurrentCulture; try { Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-GB"); table = new DataTable (); view = table.DefaultView; table.Columns.Add (new DataColumn ("Amount", typeof (MockNumeric))); DataRow row = table.NewRow (); row ["Amount"] = new MockNumericFormattable (1); table.Rows.Add (row); row = table.NewRow (); row ["Amount"] = new MockNumericFormattable (2); table.Rows.Add (row); row = table.NewRow (); row ["Amount"] = new MockNumeric (3); table.Rows.Add (row); tableStyle = new DataGridTableStyle (); ColumnPoker amountColumnStyle = new ColumnPoker (); amountColumnStyle.MappingName = "Amount"; tableStyle.GridColumnStyles.Add (amountColumnStyle); BindingContext bc = new BindingContext (); DataGrid dg = new DataGrid (); dg.BindingContext = bc; dg.TableStyles.Add (tableStyle); dg.DataSource = table; CurrencyManager cm = (CurrencyManager) bc [view]; TextBox tb = amountColumnStyle.TextBox; Assert.IsNotNull (tb, "#A1"); Assert.AreEqual (string.Empty, tb.Text, "#A2"); amountColumnStyle.DoEdit (cm, 0, new Rectangle (new Point (0,0), new Size (100, 100)), false, null, true); Assert.AreEqual ("uno", tb.Text, "#B1"); Assert.AreEqual (new MockNumericFormattable (1), table.Rows [0] ["Amount"], "#B2"); amountColumnStyle.DoEdit (cm, 1, new Rectangle (new Point (0,0), new Size (100, 100)), false, null, true); Assert.AreEqual ("dos", tb.Text, "#C1"); Assert.AreEqual (new MockNumericFormattable (2), table.Rows [1] ["Amount"], "#C2"); amountColumnStyle.DoEdit (cm, 2, new Rectangle (new Point (0,0), new Size (100, 100)), false, null, true); Assert.AreEqual ("tres", tb.Text, "#D1"); Assert.AreEqual (new MockNumeric (3), table.Rows [2] ["Amount"], "#D2"); amountColumnStyle.Format = string.Empty; amountColumnStyle.DoEdit (cm, 0, new Rectangle (new Point (0,0), new Size (100, 100)), false, null, true); Assert.AreEqual ("uno", tb.Text, "#E1"); Assert.AreEqual (new MockNumericFormattable (1), table.Rows [0] ["Amount"], "#E2"); amountColumnStyle.Format = "currency"; amountColumnStyle.DoEdit (cm, 0, new Rectangle (new Point (0,0), new Size (100, 100)), false, null, true); Assert.AreEqual ("#£1.00", tb.Text, "#F1"); Assert.AreEqual (new MockNumericFormattable (1), table.Rows [0] ["Amount"], "#F2"); amountColumnStyle.DoEdit (cm, 2, new Rectangle (new Point (0,0), new Size (100, 100)), false, null, true); Assert.AreEqual ("tres", tb.Text, "#G1"); Assert.AreEqual (new MockNumeric (3), table.Rows [2] ["Amount"], "#G2"); amountColumnStyle.DoEdit (cm, 0, new Rectangle (new Point (0,0), new Size (100, 100)), false, "#£5.00", true); Assert.AreEqual ("#£5.00", tb.Text, "#H1"); Assert.AreEqual (new MockNumericFormattable (1), table.Rows [0] ["Amount"], "#H2"); amountColumnStyle.DoEdit (cm, 0, new Rectangle (new Point (0,0), new Size (100, 100)), false, "INVALID", true); Assert.IsFalse (amountColumnStyle.DoCommit (cm, 0), "#I1"); Assert.AreEqual ("INVALID", tb.Text, "#I2"); //Assert.AreEqual ("INVALID", table.Rows [0] ["Amount"], "#I3"); amountColumnStyle.FormatInfo = new CultureInfo ("en-US"); amountColumnStyle.DoEdit (cm, 1, new Rectangle (new Point (0,0), new Size (100, 100)), false, null, true); Assert.AreEqual ("#$2.00", tb.Text, "#J1"); Assert.AreEqual (new MockNumericFormattable (2), table.Rows [1] ["Amount"], "#J2"); } finally { Thread.CurrentThread.CurrentCulture = originalCulture; } }
public void IFormattable() { CultureInfo originalCulture = CultureInfo.CurrentCulture; try { Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB"); table = new DataTable(); view = table.DefaultView; table.Columns.Add(new DataColumn("Amount", typeof(MockNumericFormattable))); DataRow row = table.NewRow(); row ["Amount"] = new MockNumericFormattable(1); table.Rows.Add(row); row = table.NewRow(); row ["Amount"] = new MockNumericFormattable(2); table.Rows.Add(row); row = table.NewRow(); row ["Amount"] = new MockNumeric(3); table.Rows.Add(row); tableStyle = new DataGridTableStyle(); ColumnPoker amountColumnStyle = new ColumnPoker(); amountColumnStyle.MappingName = "Amount"; tableStyle.GridColumnStyles.Add(amountColumnStyle); BindingContext bc = new BindingContext(); DataGrid dg = new DataGrid(); dg.BindingContext = bc; dg.TableStyles.Add(tableStyle); dg.DataSource = table; CurrencyManager cm = (CurrencyManager)bc [view]; TextBox tb = amountColumnStyle.TextBox; Assert.IsNotNull(tb, "#A1"); Assert.AreEqual(string.Empty, tb.Text, "#A2"); amountColumnStyle.DoEdit(cm, 0, new Rectangle(new Point(0, 0), new Size(100, 100)), false, null, true); Assert.AreEqual("uno", tb.Text, "#B1"); Assert.AreEqual(new MockNumericFormattable(1), table.Rows [0] ["Amount"], "#B2"); amountColumnStyle.DoEdit(cm, 1, new Rectangle(new Point(0, 0), new Size(100, 100)), false, null, true); Assert.AreEqual("dos", tb.Text, "#C1"); Assert.AreEqual(new MockNumericFormattable(2), table.Rows [1] ["Amount"], "#C2"); amountColumnStyle.DoEdit(cm, 2, new Rectangle(new Point(0, 0), new Size(100, 100)), false, null, true); Assert.AreEqual("tres", tb.Text, "#D1"); Assert.AreEqual(new MockNumeric(3), table.Rows [2] ["Amount"], "#D2"); amountColumnStyle.Format = string.Empty; amountColumnStyle.DoEdit(cm, 0, new Rectangle(new Point(0, 0), new Size(100, 100)), false, null, true); Assert.AreEqual("uno", tb.Text, "#E1"); Assert.AreEqual(new MockNumericFormattable(1), table.Rows [0] ["Amount"], "#E2"); amountColumnStyle.Format = "currency"; amountColumnStyle.DoEdit(cm, 0, new Rectangle(new Point(0, 0), new Size(100, 100)), false, null, true); Assert.AreEqual("#£1.00", tb.Text, "#F1"); Assert.AreEqual(new MockNumericFormattable(1), table.Rows [0] ["Amount"], "#F2"); amountColumnStyle.DoEdit(cm, 2, new Rectangle(new Point(0, 0), new Size(100, 100)), false, null, true); Assert.AreEqual("tres", tb.Text, "#G1"); Assert.AreEqual(new MockNumeric(3), table.Rows [2] ["Amount"], "#G2"); amountColumnStyle.DoEdit(cm, 0, new Rectangle(new Point(0, 0), new Size(100, 100)), false, "#£5.00", true); Assert.AreEqual("#£5.00", tb.Text, "#H1"); Assert.AreEqual(new MockNumericFormattable(1), table.Rows [0] ["Amount"], "#H2"); amountColumnStyle.DoEdit(cm, 0, new Rectangle(new Point(0, 0), new Size(100, 100)), false, "INVALID", true); Assert.IsTrue(amountColumnStyle.DoCommit(cm, 0), "#I1"); Assert.AreEqual("INVALID", tb.Text, "#I2"); Assert.AreEqual("INVALID", table.Rows [0] ["Amount"], "#I3"); amountColumnStyle.FormatInfo = new CultureInfo("en-US"); amountColumnStyle.DoEdit(cm, 1, new Rectangle(new Point(0, 0), new Size(100, 100)), false, null, true); Assert.AreEqual("#$2.00", tb.Text, "#J1"); Assert.AreEqual(new MockNumericFormattable(2), table.Rows [1] ["Amount"], "#J2"); } finally { Thread.CurrentThread.CurrentCulture = originalCulture; } }