Author: gert
Date: 2007-05-27 19:04:45 -0400 (Sun, 27 May 2007)
New Revision: 78019
Modified:
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DateTimePicker.cs
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListViewItem.cs
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/DateTimePickerTest.cs
Log:
* DateTimePicker.cs: Changed exceptions thrown by MinDate and MaxDate
to match MS. Fixed MinDate to only accept value less than or equal
to MaxDate on 2.0 profile and less than MaxDate on 1.0 profile.
Removed TODO's that are now verified by unit tests.
* DateTimePickerTest.cs: Added tests for MinDate and MaxDate.
Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
2007-05-27 20:11:48 UTC (rev 78018)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
2007-05-27 23:04:45 UTC (rev 78019)
@@ -1,3 +1,10 @@
+2007-05-28 Gert Driesen <[EMAIL PROTECTED]>
+
+ * DateTimePicker.cs: Changed exceptions thrown by MinDate and MaxDate
+ to match MS. Fixed MinDate to only accept value less than or equal
+ to MaxDate on 2.0 profile and less than MaxDate on 1.0 profile.
+ Removed TODO's that are now verified by unit tests.
+
2007-05-27 Gert Driesen <[EMAIL PROTECTED]>
* TreeNodeCollection.cs: Minor corrections to exceptions to match
Modified:
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DateTimePicker.cs
===================================================================
---
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DateTimePicker.cs
2007-05-27 20:11:48 UTC (rev 78018)
+++
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DateTimePicker.cs
2007-05-27 23:04:45 UTC (rev 78019)
@@ -31,6 +31,7 @@
using System.Drawing;
using System.Collections;
using System.ComponentModel;
+using System.Globalization;
using System.Runtime.InteropServices;
using System.Windows.Forms;
@@ -395,15 +396,28 @@
public DateTime MaxDate {
set {
if (value < min_date) {
- throw new ArgumentException ();
+ string msg = string.Format
(CultureInfo.CurrentCulture,
+ "'{0}' is not a valid value for
'MaxDate'. 'MaxDate' "
+ + "must be greater than or
equal to MinDate.",
+ value.ToString ("G"));
+#if NET_2_0
+ throw new ArgumentOutOfRangeException
("MaxDate", msg);
+#else
+ throw new ArgumentException (msg);
+#endif
}
if (value > MaxDateTime) {
- throw new SystemException ();
+ string msg = string.Format
(CultureInfo.CurrentCulture,
+ "DateTimePicker does not
support dates after {0}.",
+ MaxDateTime.ToString ("G",
CultureInfo.CurrentCulture));
+#if NET_2_0
+ throw new ArgumentOutOfRangeException
("MaxDate", msg);
+#else
+ throw new ArgumentException (msg,
"value");
+#endif
}
if (max_date != value) {
max_date = value;
-
- // TODO: verify this is correct
behaviour when value > max date
if (Value > max_date) {
Value = max_date;
// invalidate the value inside
this control
@@ -426,16 +440,34 @@
public DateTime MinDate {
set {
- if (value < min_date) {
- throw new ArgumentException ();
+#if NET_2_0
+ if (value > MaxDate) {
+#else
+ if (value >= MaxDate) {
+#endif
+ string msg = string.Format
(CultureInfo.CurrentCulture,
+ "'{0}' is not a valid value for
'MinDate'. 'MinDate' "
+ + "must be less than MaxDate.",
+ value.ToString ("G"));
+#if NET_2_0
+ throw new ArgumentOutOfRangeException
("MinDate", msg);
+#else
+ throw new ArgumentException (msg);
+#endif
}
if (value < MinDateTime) {
- throw new SystemException ();
+ string msg = string.Format
(CultureInfo.CurrentCulture,
+ "DateTimePicker does not
support dates before {0}.",
+ MinDateTime.ToString ("G",
CultureInfo.CurrentCulture));
+#if NET_2_0
+ throw new ArgumentOutOfRangeException
("MinDate", msg);
+#else
+ throw new ArgumentException (msg,
"value");
+#endif
+
}
if (min_date != value) {
min_date = value;
-
- // TODO: verify this is correct
behaviour when value > max date
if (Value < min_date) {
Value = min_date;
// invalidate the value inside
this control
Modified:
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListViewItem.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListViewItem.cs
2007-05-27 20:11:48 UTC (rev 78018)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListViewItem.cs
2007-05-27 23:04:45 UTC (rev 78019)
@@ -695,6 +695,8 @@
internal void Layout ()
{
+ if (owner == null)
+ return;
int item_ht;
Rectangle total;
Size text_size = owner.text_size;
Modified:
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog
2007-05-27 20:11:48 UTC (rev 78018)
+++ trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog
2007-05-27 23:04:45 UTC (rev 78019)
@@ -1,3 +1,7 @@
+2007-05-28 Gert Driesen <[EMAIL PROTECTED]>
+
+ * DateTimePickerTest.cs: Added tests for MinDate and MaxDate.
+
2007-05-27 Gert Driesen <[EMAIL PROTECTED]>
* DateTimePickerTest.cs: Avoid test failures on Windows system with
Modified:
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/DateTimePickerTest.cs
===================================================================
---
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/DateTimePickerTest.cs
2007-05-27 20:11:48 UTC (rev 78018)
+++
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/DateTimePickerTest.cs
2007-05-27 23:04:45 UTC (rev 78019)
@@ -3134,9 +3134,7 @@
Assert.AreEqual ("WindowText", dt.ForeColor.Name, "F1");
Assert.AreEqual (DateTimePickerFormat.Long, dt.Format,
"F2");
- Assert.AreEqual (new DateTime (9998, 12, 31, 0, 0, 0),
dt.MaxDate, "M1");
Assert.AreEqual (new DateTime (9998, 12, 31, 0, 0, 0),
DateTimePicker.MaxDateTime, "M2");
- Assert.AreEqual (new DateTime (1753, 1, 1), dt.MinDate,
"M3");
Assert.AreEqual (new DateTime (1753, 1, 1),
DateTimePicker.MinDateTime, "M4");
#if NET_2_0
Assert.AreEqual (new DateTime (9998, 12, 31, 0, 0, 0),
DateTimePicker.MaximumDateTime, "M5");
@@ -3159,8 +3157,187 @@
Assert.AreEqual (DateTime.Today, dt.Value.Date, "V1");
}
-
+
[Test]
+ public void MaxDate ()
+ {
+ DateTimePicker dt = new DateTimePicker ();
+ Assert.AreEqual (new DateTime (9998, 12, 31),
dt.MaxDate, "#1");
+ dt.Value = new DateTime (2007, 8, 13);
+ Assert.AreEqual (new DateTime (9998, 12, 31),
dt.MaxDate, "#2");
+ Assert.AreEqual (new DateTime (2007, 8, 13), dt.Value,
"#3");
+ dt.MaxDate = new DateTime (2010, 2, 10);
+ Assert.AreEqual (new DateTime (2010, 2, 10),
dt.MaxDate, "#4");
+ Assert.AreEqual (new DateTime (2007, 8, 13), dt.Value,
"#5");
+ dt.MaxDate = new DateTime (2005, 10, 15);
+ Assert.AreEqual (new DateTime (2005, 10, 15),
dt.MaxDate, "#6");
+ Assert.AreEqual (new DateTime (2005, 10, 15), dt.Value,
"#7");
+ dt.MaxDate = new DateTime (2008, 1, 4);
+ Assert.AreEqual (new DateTime (2008, 1, 4), dt.MaxDate,
"#8");
+ Assert.AreEqual (new DateTime (2005, 10, 15), dt.Value,
"#9");
+ dt.MaxDate = dt.MinDate;
+ Assert.AreEqual (new DateTime (1753, 1, 1), dt.MaxDate,
"#10");
+ Assert.AreEqual (new DateTime (1753, 1, 1), dt.Value,
"#11");
+ dt.MaxDate = DateTimePicker.MaxDateTime;
+ Assert.AreEqual (DateTimePicker.MaxDateTime,
dt.MaxDate, "#12");
+ Assert.AreEqual (new DateTime (1753, 1, 1), dt.Value,
"#13");
+ }
+
+ [Test]
+ public void MaxDate_Invalid ()
+ {
+ DateTimePicker dt = new DateTimePicker ();
+
+ // not less or equal to MaxDateTime
+ try {
+ dt.MaxDate = new DateTime (9999, 1, 1);
+ Assert.Fail ("#A1");
+#if NET_2_0
+ } catch (ArgumentOutOfRangeException ex) {
+ // DateTimePicker does not support dates after
12/31/9998 12:00:00 AM
+ Assert.AreEqual (typeof
(ArgumentOutOfRangeException), ex.GetType (), "#A2");
+ Assert.IsNull (ex.InnerException, "#A3");
+ Assert.IsNotNull (ex.Message, "#A4");
+ Assert.IsNotNull (ex.ParamName, "#A5");
+ Assert.AreEqual ("MaxDate", ex.ParamName,
"#A6");
+ }
+#else
+ } catch (ArgumentException ex) {
+ // DateTimePicker does not support dates after
12/31/9998 12:00:00 AM
+ Assert.AreEqual (typeof (ArgumentException),
ex.GetType (), "#A2");
+ Assert.IsNull (ex.InnerException, "#A3");
+ Assert.IsNotNull (ex.Message, "#A4");
+ Assert.IsNotNull (ex.ParamName, "#A5");
+ Assert.AreEqual ("value", ex.ParamName, "#A6");
+ }
+#endif
+
+ dt.MinDate = new DateTime (2007, 8, 13);
+
+ // not less than MinDate
+ try {
+ dt.MaxDate = new DateTime (2007, 8, 12);
+ Assert.Fail ("#B1");
+#if NET_2_0
+ } catch (ArgumentOutOfRangeException ex) {
+ // '8/12/2007 12:00:00 AM' is not a valid value
for 'MaxDate'.
+ // 'MaxDate' must be greater than or equal to
MinDate.
+ Assert.AreEqual (typeof
(ArgumentOutOfRangeException), ex.GetType (), "#B2");
+ Assert.IsNull (ex.InnerException, "#B3");
+ Assert.IsNotNull (ex.Message, "#B4");
+ Assert.IsNotNull (ex.ParamName, "#B5");
+ Assert.AreEqual ("MaxDate", ex.ParamName,
"#B6");
+ }
+#else
+ } catch (ArgumentException ex) {
+ // '8/12/2007 12:00:00 AM' is not a valid value
for 'MaxDate'.
+ // 'MaxDate' must be greater than or equal to
MinDate.
+ Assert.AreEqual (typeof (ArgumentException),
ex.GetType (), "#B2");
+ Assert.IsNull (ex.InnerException, "#B3");
+ Assert.IsNotNull (ex.Message, "#B4");
+ Assert.IsNull (ex.ParamName, "#B5");
+ }
+#endif
+ }
+
+ [Test]
+ public void MinDate ()
+ {
+ DateTimePicker dt = new DateTimePicker ();
+ Assert.AreEqual (new DateTime (1753, 1, 1), dt.MinDate,
"#1");
+ dt.Value = new DateTime (2007, 8, 13);
+ Assert.AreEqual (new DateTime (1753, 1, 1), dt.MinDate,
"#2");
+ Assert.AreEqual (new DateTime (2007, 8, 13), dt.Value,
"#3");
+ dt.MinDate = new DateTime (2005, 1, 15);
+ Assert.AreEqual (new DateTime (2005, 1, 15),
dt.MinDate, "#4");
+ Assert.AreEqual (new DateTime (2007, 8, 13), dt.Value,
"#5");
+ dt.MinDate = new DateTime (2008, 2, 5);
+ Assert.AreEqual (new DateTime (2008, 2, 5), dt.MinDate,
"#6");
+ Assert.AreEqual (new DateTime (2008, 2, 5), dt.Value,
"#7");
+ dt.MinDate = new DateTime (2004, 8, 20);
+ Assert.AreEqual (new DateTime (2004, 8, 20),
dt.MinDate, "#8");
+ Assert.AreEqual (new DateTime (2008, 2, 5), dt.Value,
"#9");
+ dt.MinDate = DateTimePicker.MinDateTime;
+ Assert.AreEqual (DateTimePicker.MinDateTime,
dt.MinDate, "#10");
+ Assert.AreEqual (new DateTime (2008, 2, 5), dt.Value,
"#11");
+ }
+
+ [Test]
+ public void MinDate_Invalid ()
+ {
+ DateTimePicker dt = new DateTimePicker ();
+
+ // less than MinDateTime
+ try {
+ dt.MinDate = new DateTime (1752, 12, 31);
+ Assert.Fail ("#A1");
+#if NET_2_0
+ } catch (ArgumentOutOfRangeException ex) {
+ // DateTimePicker does not support dates before
1/1/1753 12:00:00 AM
+ Assert.AreEqual (typeof
(ArgumentOutOfRangeException), ex.GetType (), "#A2");
+ Assert.IsNull (ex.InnerException, "#A3");
+ Assert.IsNotNull (ex.Message, "#A4");
+ Assert.IsNotNull (ex.ParamName, "#A5");
+ Assert.AreEqual ("MinDate", ex.ParamName,
"#A6");
+ }
+#else
+ } catch (ArgumentException ex) {
+ // DateTimePicker does not support dates before
1/1/1753 12:00:00 AM
+ Assert.AreEqual (typeof (ArgumentException),
ex.GetType (), "#A2");
+ Assert.IsNull (ex.InnerException, "#A3");
+ Assert.IsNotNull (ex.Message, "#A4");
+ Assert.IsNotNull (ex.ParamName, "#A5");
+ Assert.AreEqual ("value", ex.ParamName, "#A6");
+ }
+#endif
+
+ dt.MaxDate = new DateTime (2007, 8, 13);
+
+ // equal to MaxDate
+#if NET_2_0
+ dt.MinDate = new DateTime (2007, 8, 13);
+ Assert.AreEqual (new DateTime (2007, 8, 13),
dt.MinDate, "#B1");
+#else
+ try {
+ dt.MinDate = new DateTime (2007, 8, 13);
+ Assert.Fail ("#B1");
+ } catch (ArgumentException ex) {
+ // '8/13/2007 12:00:00 AM' is not a valid value
for 'MinDate'.
+ // 'MinDate' must be less than MaxDate
+ Assert.AreEqual (typeof (ArgumentException),
ex.GetType (), "#B2");
+ Assert.IsNull (ex.InnerException, "#B3");
+ Assert.IsNotNull (ex.Message, "#B4");
+ Assert.IsNull (ex.ParamName, "#B5");
+ }
+#endif
+
+ // not less than MaxDate
+ try {
+ dt.MinDate = new DateTime (2007, 8, 14);
+ Assert.Fail ("#C1");
+#if NET_2_0
+ /} catch (ArgumentOutOfRangeException ex) {
+ // '8/13/2007 12:00:00 AM' is not a valid value
for 'MinDate'.
+ // 'MinDate' must be less than MaxDate
+ Assert.AreEqual (typeof
(ArgumentOutOfRangeException), ex.GetType (), "#C2");
+ Assert.IsNull (ex.InnerException, "#C3");
+ Assert.IsNotNull (ex.Message, "#C4");
+ Assert.IsNotNull (ex.ParamName, "#C5");
+ Assert.AreEqual ("MinDate", ex.ParamName,
"#C6");
+ }
+#else
+ } catch (ArgumentException ex) {
+ // '8/13/2007 12:00:00 AM' is not a valid value
for 'MinDate'.
+ // 'MinDate' must be less than MaxDate
+ Assert.AreEqual (typeof (ArgumentException),
ex.GetType (), "#C2");
+ Assert.IsNull (ex.InnerException, "#C3");
+ Assert.IsNotNull (ex.Message, "#C4");
+ Assert.IsNull (ex.ParamName, "#C5");
+ }
+#endif
+ }
+
+ [Test]
public void TextTest ()
{
CheckCulture ();
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches