NumericUpDownTests.cs 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. using System.Globalization;
  2. using Xunit.Abstractions;
  3. namespace Terminal.Gui.ViewsTests;
  4. public class NumericUpDownTests (ITestOutputHelper _output)
  5. {
  6. [Fact]
  7. public void WhenCreated_ShouldHaveDefaultValues_int ()
  8. {
  9. NumericUpDown<int> numericUpDown = new ();
  10. Assert.Equal (0, numericUpDown.Value);
  11. Assert.Equal (1, numericUpDown.Increment);
  12. }
  13. [Fact]
  14. public void WhenCreated_ShouldHaveDefaultValues_long ()
  15. {
  16. NumericUpDown<long> numericUpDown = new ();
  17. Assert.Equal (0, numericUpDown.Value);
  18. Assert.Equal (1, numericUpDown.Increment);
  19. }
  20. [Fact]
  21. public void WhenCreated_ShouldHaveDefaultValues_float ()
  22. {
  23. NumericUpDown<float> numericUpDown = new ();
  24. Assert.Equal (0F, numericUpDown.Value);
  25. Assert.Equal (1.0F, numericUpDown.Increment);
  26. }
  27. [Fact]
  28. public void WhenCreated_ShouldHaveDefaultValues_double ()
  29. {
  30. NumericUpDown<double> numericUpDown = new ();
  31. Assert.Equal (0F, numericUpDown.Value);
  32. Assert.Equal (1.0F, numericUpDown.Increment);
  33. }
  34. [Fact]
  35. public void WhenCreated_ShouldHaveDefaultValues_decimal ()
  36. {
  37. NumericUpDown<decimal> numericUpDown = new ();
  38. Assert.Equal (0, numericUpDown.Value);
  39. Assert.Equal (1, numericUpDown.Increment);
  40. }
  41. [Fact]
  42. public void WhenCreatedWithCustomValues_ShouldHaveCustomValues_int ()
  43. {
  44. NumericUpDown<int> numericUpDown = new()
  45. {
  46. Value = 10,
  47. Increment = 2
  48. };
  49. Assert.Equal (10, numericUpDown.Value);
  50. Assert.Equal (2, numericUpDown.Increment);
  51. }
  52. [Fact]
  53. public void WhenCreatedWithCustomValues_ShouldHaveCustomValues_float ()
  54. {
  55. NumericUpDown<float> numericUpDown = new()
  56. {
  57. Value = 10.5F,
  58. Increment = 2.5F
  59. };
  60. Assert.Equal (10.5F, numericUpDown.Value);
  61. Assert.Equal (2.5F, numericUpDown.Increment);
  62. }
  63. [Fact]
  64. public void WhenCreatedWithCustomValues_ShouldHaveCustomValues_decimal ()
  65. {
  66. NumericUpDown<decimal> numericUpDown = new ()
  67. {
  68. Value = 10.5m,
  69. Increment = 2.5m
  70. };
  71. Assert.Equal (10.5m, numericUpDown.Value);
  72. Assert.Equal (2.5m, numericUpDown.Increment);
  73. }
  74. [Fact]
  75. public void WhenCreatedWithInvalidType_ShouldThrowInvalidOperationException ()
  76. {
  77. Assert.Throws<InvalidOperationException> (() => new NumericUpDown<string> ());
  78. }
  79. [Fact]
  80. public void WhenCreatedWithInvalidTypeObject_ShouldNotThrowInvalidOperationException ()
  81. {
  82. NumericUpDown<object> numericUpDown = new ();
  83. }
  84. [Fact]
  85. public void WhenCreated_ShouldHaveDefaultWidthAndHeight_int ()
  86. {
  87. NumericUpDown<int> numericUpDown = new ();
  88. numericUpDown.SetRelativeLayout (Application.Screen.Size);
  89. Assert.Equal (3, numericUpDown.Frame.Width);
  90. Assert.Equal (1, numericUpDown.Frame.Height);
  91. }
  92. [Fact]
  93. public void WhenCreated_ShouldHaveDefaultWidthAndHeight_float ()
  94. {
  95. NumericUpDown<float> numericUpDown = new ();
  96. numericUpDown.SetRelativeLayout (Application.Screen.Size);
  97. Assert.Equal (3, numericUpDown.Frame.Width);
  98. Assert.Equal (1, numericUpDown.Frame.Height);
  99. }
  100. [Fact]
  101. public void WhenCreated_ShouldHaveDefaultWidthAndHeight_double ()
  102. {
  103. NumericUpDown<double> numericUpDown = new ();
  104. numericUpDown.SetRelativeLayout (Application.Screen.Size);
  105. Assert.Equal (3, numericUpDown.Frame.Width);
  106. Assert.Equal (1, numericUpDown.Frame.Height);
  107. }
  108. [Fact]
  109. public void WhenCreated_ShouldHaveDefaultWidthAndHeight_long ()
  110. {
  111. NumericUpDown<long> numericUpDown = new ();
  112. numericUpDown.SetRelativeLayout (Application.Screen.Size);
  113. Assert.Equal (3, numericUpDown.Frame.Width);
  114. Assert.Equal (1, numericUpDown.Frame.Height);
  115. }
  116. [Fact]
  117. public void WhenCreated_ShouldHaveDefaultWidthAndHeight_decimal ()
  118. {
  119. NumericUpDown<decimal> numericUpDown = new ();
  120. numericUpDown.SetRelativeLayout (Application.Screen.Size);
  121. Assert.Equal (3, numericUpDown.Frame.Width);
  122. Assert.Equal (1, numericUpDown.Frame.Height);
  123. }
  124. [Fact]
  125. public void WhenCreated_Text_Should_Be_Correct_int ()
  126. {
  127. NumericUpDown<int> numericUpDown = new ();
  128. Assert.Equal ("0", numericUpDown.Text);
  129. }
  130. [Fact]
  131. public void WhenCreated_Text_Should_Be_Correct_float ()
  132. {
  133. NumericUpDown<float> numericUpDown = new ();
  134. Assert.Equal ("0", numericUpDown.Text);
  135. }
  136. [Fact]
  137. public void Format_Default ()
  138. {
  139. NumericUpDown<float> numericUpDown = new ();
  140. Assert.Equal ("{0}", numericUpDown.Format);
  141. }
  142. [Theory]
  143. [InlineData (0F, "{0}", "0")]
  144. [InlineData (1.1F, "{0}", "1.1")]
  145. [InlineData (0F, "{0:0%}", "0%")]
  146. [InlineData (.75F, "{0:0%}", "75%")]
  147. public void Format_decimal (float value, string format, string expectedText)
  148. {
  149. CultureInfo currentCulture = CultureInfo.CurrentCulture;
  150. CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;
  151. NumericUpDown<float> numericUpDown = new ();
  152. numericUpDown.Format = format;
  153. numericUpDown.Value = value;
  154. Assert.Equal (expectedText, numericUpDown.Text);
  155. CultureInfo.CurrentCulture = currentCulture;
  156. }
  157. [Theory]
  158. [InlineData (0, "{0}", "0")]
  159. [InlineData (11, "{0}", "11")]
  160. [InlineData (-1, "{0}", "-1")]
  161. [InlineData (911, "{0:X}", "38F")]
  162. [InlineData (911, "0x{0:X04}", "0x038F")]
  163. public void Format_int (int value, string format, string expectedText)
  164. {
  165. CultureInfo currentCulture = CultureInfo.CurrentCulture;
  166. CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;
  167. NumericUpDown<int> numericUpDown = new ();
  168. numericUpDown.Format = format;
  169. numericUpDown.Value = value;
  170. Assert.Equal (expectedText, numericUpDown.Text);
  171. CultureInfo.CurrentCulture = currentCulture;
  172. }
  173. [Fact]
  174. public void KeDown_CursorUp_Increments ()
  175. {
  176. NumericUpDown<int> numericUpDown = new ();
  177. numericUpDown.NewKeyDownEvent (Key.CursorUp);
  178. Assert.Equal (1, numericUpDown.Value);
  179. }
  180. [Fact]
  181. public void KeyDown_CursorDown_Decrements ()
  182. {
  183. NumericUpDown<int> numericUpDown = new ();
  184. numericUpDown.NewKeyDownEvent (Key.CursorDown);
  185. Assert.Equal (-1, numericUpDown.Value);
  186. }
  187. }