Ejemplo n.º 1
0
		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;
			}
		}
Ejemplo n.º 2
0
        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;
            }
        }