DatePickerTests.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. using System;
  2. using System.Globalization;
  3. using Xunit;
  4. namespace Terminal.Gui.ViewsTests;
  5. public class DatePickerTests {
  6. [Fact]
  7. public void DatePicker_ChangingCultureChangesFormat ()
  8. {
  9. var date = new DateTime (2000, 7, 23);
  10. var datePicker = new DatePicker (date);
  11. datePicker.Culture = CultureInfo.GetCultureInfo ("en-GB");
  12. Assert.Equal ("23/07/2000", datePicker.Text);
  13. datePicker.Culture = CultureInfo.GetCultureInfo ("pl-PL");
  14. Assert.Equal ("23.07.2000", datePicker.Text);
  15. // Deafult date format for en-US is M/d/yyyy but we are using StandardizeDateFormat method
  16. // to convert it to the format that has 2 digits for month and day.
  17. datePicker.Culture = CultureInfo.GetCultureInfo ("en-US");
  18. Assert.Equal ("07/23/2000", datePicker.Text);
  19. }
  20. [Fact]
  21. public void DatePicker_Initialize_ShouldSetCurrentDate ()
  22. {
  23. var datePicker = new DatePicker ();
  24. Assert.Equal (DateTime.Now.Date.Day, datePicker.Date.Day);
  25. Assert.Equal (DateTime.Now.Date.Month, datePicker.Date.Month);
  26. Assert.Equal (DateTime.Now.Date.Year, datePicker.Date.Year);
  27. }
  28. [Fact]
  29. public void DatePicker_SetDate_ShouldChangeText ()
  30. {
  31. var datePicker = new DatePicker () {
  32. Culture = CultureInfo.GetCultureInfo ("en-GB")
  33. };
  34. var newDate = new DateTime (2024, 1, 15);
  35. var format = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;
  36. datePicker.Date = newDate;
  37. Assert.Equal (newDate.ToString (format), datePicker.Text);
  38. }
  39. [Fact]
  40. [AutoInitShutdown]
  41. public void DatePicker_ShouldNot_SetDateOutOfRange_UsingPreviousMonthButton ()
  42. {
  43. var date = new DateTime (1, 2, 15);
  44. var datePicker = new DatePicker (date);
  45. // Move focus to previous month button
  46. Application.Top.Add (datePicker);
  47. Application.Begin (Application.Top);
  48. // set focus to the previous month button
  49. datePicker.FocusNext ();
  50. datePicker.FocusNext ();
  51. // Change month to January
  52. Assert.True (datePicker.NewKeyDownEvent (new (KeyCode.Enter)));
  53. Assert.Equal (1, datePicker.Date.Month);
  54. // Date should not change as previous month button is disabled
  55. Assert.False (datePicker.NewKeyDownEvent (new (KeyCode.Enter)));
  56. Assert.Equal (1, datePicker.Date.Month);
  57. }
  58. [Fact]
  59. [AutoInitShutdown]
  60. public void DatePicker_ShouldNot_SetDateOutOfRange_UsingNextMonthButton ()
  61. {
  62. var date = new DateTime (9999, 11, 15);
  63. var datePicker = new DatePicker (date);
  64. Application.Top.Add (datePicker);
  65. Application.Begin (Application.Top);
  66. // Set focus to next month button
  67. datePicker.FocusNext ();
  68. datePicker.FocusNext ();
  69. datePicker.FocusNext ();
  70. // Change month to December
  71. Assert.True (datePicker.NewKeyDownEvent (new (KeyCode.Enter)));
  72. Assert.Equal (12, datePicker.Date.Month);
  73. // Date should not change as next month button is disabled
  74. Assert.False (datePicker.NewKeyDownEvent (new (KeyCode.Enter)));
  75. Assert.Equal (12, datePicker.Date.Month);
  76. }
  77. }