public void StringConverterTest () { 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 (MockNumericStringConvertable))); DataRow row = table.NewRow (); row ["Amount"] = new MockNumericStringConvertable (1); table.Rows.Add (row); row = table.NewRow (); row ["Amount"] = new MockNumericStringConvertable (2); 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]; DataGridTextBox tb = (DataGridTextBox) amountColumnStyle.TextBox; Assert.IsNotNull (tb, "#A1"); Assert.AreEqual (string.Empty, tb.Text, "#A2"); Assert.IsTrue (tb.IsInEditOrNavigateMode, "#A3"); amountColumnStyle.DoEdit (cm, 0, new Rectangle (new Point (0,0), new Size (100, 100)), false, null, true); Assert.AreEqual ("£1.00", tb.Text, "#B1"); Assert.AreEqual (new MockNumericStringConvertable (1), table.Rows [0] ["Amount"], "#B2"); Assert.IsTrue (tb.IsInEditOrNavigateMode, "#B3"); amountColumnStyle.DoEdit (cm, 1, new Rectangle (new Point (0,0), new Size (100, 100)), false, null, true); Assert.AreEqual ("£2.00", tb.Text, "#C1"); Assert.AreEqual (new MockNumericStringConvertable (2), table.Rows [1] ["Amount"], "#C2"); Assert.IsTrue (tb.IsInEditOrNavigateMode, "#C3"); amountColumnStyle.DoEdit (cm, 0, new Rectangle (new Point (0,0), new Size (100, 100)), false, "£3.00", true); Assert.AreEqual ("£3.00", tb.Text, "#D1"); Assert.AreEqual (new MockNumericStringConvertable (1), table.Rows [0] ["Amount"], "#D2"); Assert.IsFalse (tb.IsInEditOrNavigateMode, "#D3"); Assert.IsTrue (amountColumnStyle.DoCommit (cm, cm.Position), "#E1"); Assert.AreEqual ("£3.00", tb.Text, "#E2"); Assert.AreEqual (new MockNumericStringConvertable (3), table.Rows [0] ["Amount"], "#E3"); Assert.IsTrue (tb.IsInEditOrNavigateMode, "#E4"); amountColumnStyle.DoEdit (cm, 0, new Rectangle (new Point (0,0), new Size (100, 100)), false, "INVALID", true); Assert.IsFalse (amountColumnStyle.DoCommit (cm, cm.Position), "#F1"); Assert.AreEqual ("INVALID", tb.Text, "#F2"); Assert.AreEqual (new MockNumericStringConvertable (3), table.Rows [0] ["Amount"], "#F3"); Assert.IsFalse (tb.IsInEditOrNavigateMode, "#F4"); amountColumnStyle.Format = "whatever"; amountColumnStyle.FormatInfo = new CultureInfo ("en-US"); amountColumnStyle.DoEdit (cm, 0, new Rectangle (new Point (0,0), new Size (100, 100)), false, null, true); Assert.AreEqual ("£3.00", tb.Text, "#G1"); Assert.AreEqual (new MockNumericStringConvertable (3), table.Rows [0] ["Amount"], "#G2"); Assert.IsFalse (tb.IsInEditOrNavigateMode, "#G3"); tb.Text = "5"; Assert.IsTrue (amountColumnStyle.DoCommit (cm, cm.Position), "#H1"); Assert.AreEqual ("£5.00", tb.Text, "#H2"); Assert.AreEqual (new MockNumericStringConvertable (5), table.Rows [0] ["Amount"], "#H3"); } finally { Thread.CurrentThread.CurrentCulture = originalCulture; } }
public void StringConverterTest() { 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(MockNumericStringConvertable))); DataRow row = table.NewRow(); row ["Amount"] = new MockNumericStringConvertable(1); table.Rows.Add(row); row = table.NewRow(); row ["Amount"] = new MockNumericStringConvertable(2); 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]; DataGridTextBox tb = (DataGridTextBox)amountColumnStyle.TextBox; Assert.IsNotNull(tb, "#A1"); Assert.AreEqual(string.Empty, tb.Text, "#A2"); Assert.IsTrue(tb.IsInEditOrNavigateMode, "#A3"); amountColumnStyle.DoEdit(cm, 0, new Rectangle(new Point(0, 0), new Size(100, 100)), false, null, true); Assert.AreEqual("£1.00", tb.Text, "#B1"); Assert.AreEqual(new MockNumericStringConvertable(1), table.Rows [0] ["Amount"], "#B2"); Assert.IsTrue(tb.IsInEditOrNavigateMode, "#B3"); amountColumnStyle.DoEdit(cm, 1, new Rectangle(new Point(0, 0), new Size(100, 100)), false, null, true); Assert.AreEqual("£2.00", tb.Text, "#C1"); Assert.AreEqual(new MockNumericStringConvertable(2), table.Rows [1] ["Amount"], "#C2"); Assert.IsTrue(tb.IsInEditOrNavigateMode, "#C3"); amountColumnStyle.DoEdit(cm, 0, new Rectangle(new Point(0, 0), new Size(100, 100)), false, "£3.00", true); Assert.AreEqual("£3.00", tb.Text, "#D1"); Assert.AreEqual(new MockNumericStringConvertable(1), table.Rows [0] ["Amount"], "#D2"); Assert.IsFalse(tb.IsInEditOrNavigateMode, "#D3"); Assert.IsTrue(amountColumnStyle.DoCommit(cm, cm.Position), "#E1"); Assert.AreEqual("£3.00", tb.Text, "#E2"); Assert.AreEqual(new MockNumericStringConvertable(3), table.Rows [0] ["Amount"], "#E3"); Assert.IsTrue(tb.IsInEditOrNavigateMode, "#E4"); amountColumnStyle.DoEdit(cm, 0, new Rectangle(new Point(0, 0), new Size(100, 100)), false, "INVALID", true); Assert.IsFalse(amountColumnStyle.DoCommit(cm, cm.Position), "#F1"); Assert.AreEqual("INVALID", tb.Text, "#F2"); Assert.AreEqual(new MockNumericStringConvertable(3), table.Rows [0] ["Amount"], "#F3"); Assert.IsFalse(tb.IsInEditOrNavigateMode, "#F4"); amountColumnStyle.Format = "whatever"; amountColumnStyle.FormatInfo = new CultureInfo("en-US"); amountColumnStyle.DoEdit(cm, 0, new Rectangle(new Point(0, 0), new Size(100, 100)), false, null, true); Assert.AreEqual("£3.00", tb.Text, "#G1"); Assert.AreEqual(new MockNumericStringConvertable(3), table.Rows [0] ["Amount"], "#G2"); Assert.IsFalse(tb.IsInEditOrNavigateMode, "#G3"); tb.Text = "5"; Assert.IsTrue(amountColumnStyle.DoCommit(cm, cm.Position), "#H1"); Assert.AreEqual("£5.00", tb.Text, "#H2"); Assert.AreEqual(new MockNumericStringConvertable(5), table.Rows [0] ["Amount"], "#H3"); } finally { Thread.CurrentThread.CurrentCulture = originalCulture; } }