ListViewTests.cs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using Xunit;
  8. namespace Terminal.Gui.Views {
  9. public class ListViewTests {
  10. [Fact]
  11. public void Constructors_Defaults ()
  12. {
  13. var lv = new ListView ();
  14. Assert.Null (lv.Source);
  15. Assert.True (lv.CanFocus);
  16. lv = new ListView (new List<string> () { "One", "Two", "Three" });
  17. Assert.NotNull (lv.Source);
  18. lv = new ListView (new NewListDataSource());
  19. Assert.NotNull (lv.Source);
  20. lv = new ListView (new Rect (0, 1, 10, 20), new List<string> () { "One", "Two", "Three" });
  21. Assert.NotNull (lv.Source);
  22. Assert.Equal (new Rect (0, 1, 10, 20), lv.Frame);
  23. lv = new ListView (new Rect (0, 1, 10, 20), new NewListDataSource ());
  24. Assert.NotNull (lv.Source);
  25. Assert.Equal (new Rect (0, 1, 10, 20), lv.Frame);
  26. }
  27. private class NewListDataSource : IListDataSource {
  28. public int Count => throw new NotImplementedException ();
  29. public int Length => throw new NotImplementedException ();
  30. public bool IsMarked (int item)
  31. {
  32. throw new NotImplementedException ();
  33. }
  34. public void Render (ListView container, ConsoleDriver driver, bool selected, int item, int col, int line, int width, int start = 0)
  35. {
  36. throw new NotImplementedException ();
  37. }
  38. public void SetMark (int item, bool value)
  39. {
  40. throw new NotImplementedException ();
  41. }
  42. public IList ToList ()
  43. {
  44. throw new NotImplementedException ();
  45. }
  46. }
  47. [Fact]
  48. public void KeyBindings_Command ()
  49. {
  50. List<string> source = new List<string> () { "One", "Two", "Three" };
  51. ListView lv = new ListView (source) { Height = 2, AllowsMarking = true };
  52. Assert.Equal (0, lv.SelectedItem);
  53. Assert.True (lv.ProcessKey (new KeyEvent (Key.CursorDown, new KeyModifiers ())));
  54. Assert.Equal (1, lv.SelectedItem);
  55. Assert.True (lv.ProcessKey (new KeyEvent (Key.CursorUp, new KeyModifiers ())));
  56. Assert.Equal (0, lv.SelectedItem);
  57. Assert.True (lv.ProcessKey (new KeyEvent (Key.PageDown, new KeyModifiers ())));
  58. Assert.Equal (2, lv.SelectedItem);
  59. Assert.Equal (2, lv.TopItem);
  60. Assert.True (lv.ProcessKey (new KeyEvent (Key.PageUp, new KeyModifiers ())));
  61. Assert.Equal (0, lv.SelectedItem);
  62. Assert.Equal (0, lv.TopItem);
  63. Assert.False (lv.Source.IsMarked (lv.SelectedItem));
  64. Assert.True (lv.ProcessKey (new KeyEvent (Key.Space, new KeyModifiers ())));
  65. Assert.True (lv.Source.IsMarked (lv.SelectedItem));
  66. var opened = false;
  67. lv.OpenSelectedItem += (_) => opened = true;
  68. Assert.True (lv.ProcessKey (new KeyEvent (Key.Enter, new KeyModifiers ())));
  69. Assert.True (opened);
  70. Assert.True (lv.ProcessKey (new KeyEvent (Key.End, new KeyModifiers ())));
  71. Assert.Equal (2, lv.SelectedItem);
  72. Assert.True (lv.ProcessKey (new KeyEvent (Key.Home, new KeyModifiers ())));
  73. Assert.Equal (0, lv.SelectedItem);
  74. }
  75. }
  76. }