summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Core.UnitTests/DatePickerUnitTest.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Core.UnitTests/DatePickerUnitTest.cs')
-rw-r--r--Xamarin.Forms.Core.UnitTests/DatePickerUnitTest.cs178
1 files changed, 178 insertions, 0 deletions
diff --git a/Xamarin.Forms.Core.UnitTests/DatePickerUnitTest.cs b/Xamarin.Forms.Core.UnitTests/DatePickerUnitTest.cs
new file mode 100644
index 00000000..97bbf410
--- /dev/null
+++ b/Xamarin.Forms.Core.UnitTests/DatePickerUnitTest.cs
@@ -0,0 +1,178 @@
+using System;
+
+using NUnit.Framework;
+
+namespace Xamarin.Forms.Core.UnitTests
+{
+ [TestFixture]
+ public class DatePickerUnitTest : BaseTestFixture
+ {
+ [Test]
+ public void TestMinimumDateException ()
+ {
+ DatePicker picker = new DatePicker ();
+
+ picker.MinimumDate = new DateTime (1950, 1, 1);
+
+ Assert.AreEqual (new DateTime (1950, 1, 1), picker.MinimumDate);
+
+ Assert.That (() => picker.MinimumDate = new DateTime (2200, 1, 1), Throws.ArgumentException);
+ }
+
+ [Test]
+ public void TestMaximumDateException ()
+ {
+ DatePicker picker = new DatePicker ();
+
+ picker.MaximumDate = new DateTime (2050, 1, 1);
+
+ Assert.AreEqual (new DateTime (2050, 1, 1), picker.MaximumDate);
+
+ Assert.That (() => picker.MaximumDate = new DateTime (1800, 1, 1), Throws.ArgumentException);
+ }
+
+ [Test]
+ public void TestMaximumDateClamping ()
+ {
+ DatePicker picker = new DatePicker ();
+
+ picker.Date = new DateTime (2050, 1, 1);
+
+ Assert.AreEqual (new DateTime (2050, 1, 1), picker.Date);
+
+ bool dateChanged = false;
+ bool maximumDateChanged = false;
+ picker.PropertyChanged += (sender, e) => {
+ switch (e.PropertyName) {
+ case "MaximumDate":
+ maximumDateChanged = true;
+ break;
+ case "Date":
+ dateChanged = true;
+ Assert.IsFalse (maximumDateChanged);
+ break;
+ }
+ };
+
+ var newDate = new DateTime (2000, 1, 1);
+ picker.MaximumDate = newDate;
+
+ Assert.IsTrue (maximumDateChanged);
+ Assert.IsTrue (dateChanged);
+
+ Assert.AreEqual (newDate, picker.MaximumDate);
+ Assert.AreEqual (newDate, picker.Date);
+ Assert.AreEqual (picker.MaximumDate, picker.Date);
+ }
+
+ [Test]
+ public void TestMinimumDateClamping ()
+ {
+ DatePicker picker = new DatePicker ();
+
+ picker.Date = new DateTime (1950, 1, 1);
+
+ Assert.AreEqual (new DateTime (1950, 1, 1), picker.Date);
+
+ bool dateChanged = false;
+ bool minimumDateChanged = false;
+ picker.PropertyChanged += (sender, e) => {
+ switch (e.PropertyName) {
+ case "MinimumDate":
+ minimumDateChanged = true;
+ break;
+ case "Date":
+ dateChanged = true;
+ Assert.IsFalse (minimumDateChanged);
+ break;
+ }
+ };
+
+ var newDate = new DateTime (2000, 1, 1);
+ picker.MinimumDate = newDate;
+
+ Assert.IsTrue (minimumDateChanged);
+ Assert.IsTrue (dateChanged);
+
+ Assert.AreEqual (newDate, picker.MinimumDate);
+ Assert.AreEqual (newDate, picker.Date);
+ Assert.AreEqual (picker.MinimumDate, picker.Date);
+ }
+
+ [Test]
+ public void TestDateClamping ()
+ {
+ DatePicker picker = new DatePicker ();
+
+ picker.Date = new DateTime (1500, 1, 1);
+
+ Assert.AreEqual (picker.MinimumDate, picker.Date);
+
+ picker.Date = new DateTime (2500, 1, 1);
+
+ Assert.AreEqual (picker.MaximumDate, picker.Date);
+ }
+
+ [Test]
+ public void TestDateSelected ()
+ {
+ var picker = new DatePicker ();
+
+ bool selected = false;
+ picker.DateSelected += (sender, arg) => selected = true;
+
+ // we can be fairly sure it wont ever be 2008 again
+ picker.Date = new DateTime (2008, 5, 5);
+
+ Assert.True (selected);
+ }
+
+ static object[] DateTimes = {
+ new object[] { new DateTime (2006, 12, 20), new DateTime (2011, 11, 30) },
+ new object[] { new DateTime (1900, 1, 1), new DateTime (1999, 01, 15) }, // Minimum Date
+ new object[] { new DateTime (2006, 12, 20), new DateTime (2100, 12, 31) } // Maximum Date
+ };
+
+ [Test, TestCaseSource("DateTimes")]
+ public void DatePickerSelectedEventArgs (DateTime initialDate, DateTime finalDate)
+ {
+ var datePicker = new DatePicker ();
+ datePicker.Date = initialDate;
+
+ DatePicker pickerFromSender = null;
+ DateTime oldDate = new DateTime ();
+ DateTime newDate = new DateTime ();
+
+ datePicker.DateSelected += (s, e) => {
+ pickerFromSender = (DatePicker)s;
+ oldDate = e.OldDate;
+ newDate = e.NewDate;
+ };
+
+ datePicker.Date = finalDate;
+
+ Assert.AreEqual (datePicker, pickerFromSender);
+ Assert.AreEqual (initialDate, oldDate);
+ Assert.AreEqual (finalDate, newDate);
+ }
+
+ [Test]
+ //https://bugzilla.xamarin.com/show_bug.cgi?id=32144
+ public void SetNullValueDoesNotThrow ()
+ {
+ var datePicker = new DatePicker ();
+ Assert.DoesNotThrow (() => datePicker.SetValue (DatePicker.DateProperty, null));
+ Assert.AreEqual (DatePicker.DateProperty.DefaultValue, datePicker.Date);
+ }
+
+ [Test]
+ public void SetNullableDateTime ()
+ {
+ var datePicker = new DatePicker ();
+ var dateTime = new DateTime (2015, 7, 21);
+ DateTime? nullableDateTime = dateTime;
+ datePicker.SetValue (DatePicker.DateProperty, nullableDateTime);
+ Assert.AreEqual (dateTime, datePicker.Date);
+ }
+ }
+}