TabStripTests.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. using System.Collections.ObjectModel;
  2. using System.Linq;
  3. using Moq;
  4. using Avalonia.Controls.Presenters;
  5. using Avalonia.Controls.Primitives;
  6. using Avalonia.Controls.Templates;
  7. using Avalonia.LogicalTree;
  8. using Xunit;
  9. namespace Avalonia.Controls.UnitTests.Primitives
  10. {
  11. public class TabStripTests
  12. {
  13. [Fact]
  14. public void First_Tab_Should_Be_Selected_By_Default()
  15. {
  16. var items = new[]
  17. {
  18. new TabItem
  19. {
  20. Name = "first"
  21. },
  22. new TabItem
  23. {
  24. Name = "second"
  25. },
  26. };
  27. var target = new TabStrip
  28. {
  29. Template = new FuncControlTemplate<TabStrip>(CreateTabStripTemplate),
  30. Items = items,
  31. };
  32. target.ApplyTemplate();
  33. Assert.Equal(0, target.SelectedIndex);
  34. Assert.Same(items[0], target.SelectedItem);
  35. }
  36. [Fact]
  37. public void Setting_SelectedItem_Should_Set_Selection()
  38. {
  39. var items = new[]
  40. {
  41. new TabItem
  42. {
  43. Name = "first"
  44. },
  45. new TabItem
  46. {
  47. Name = "second"
  48. },
  49. };
  50. var target = new TabStrip
  51. {
  52. Template = new FuncControlTemplate<TabStrip>(CreateTabStripTemplate),
  53. Items = items,
  54. SelectedItem = items[1],
  55. };
  56. target.ApplyTemplate();
  57. Assert.Equal(1, target.SelectedIndex);
  58. Assert.Same(items[1], target.SelectedItem);
  59. }
  60. [Fact]
  61. public void Removing_Selected_Should_Select_First()
  62. {
  63. var items = new ObservableCollection<TabItem>()
  64. {
  65. new TabItem
  66. {
  67. Name = "first"
  68. },
  69. new TabItem
  70. {
  71. Name = "second"
  72. },
  73. new TabItem
  74. {
  75. Name = "3rd"
  76. },
  77. };
  78. var target = new TabStrip
  79. {
  80. Template = new FuncControlTemplate<TabStrip>(CreateTabStripTemplate),
  81. Items = items
  82. };
  83. target.ApplyTemplate();
  84. target.SelectedItem = items[1];
  85. Assert.Same(items[1], target.SelectedItem);
  86. items.RemoveAt(1);
  87. Assert.Equal(0, target.SelectedIndex);
  88. Assert.Same(items[0], target.SelectedItem);
  89. Assert.Same("first", ((TabItem)target.SelectedItem).Name);
  90. }
  91. private Control CreateTabStripTemplate(TabStrip parent, INameScope scope)
  92. {
  93. return new ItemsPresenter
  94. {
  95. Name = "itemsPresenter",
  96. [!ItemsPresenter.ItemsProperty] = parent[!ItemsControl.ItemsProperty],
  97. }.RegisterInNameScope(scope);
  98. }
  99. }
  100. }