TabStripTests.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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 target = new TabStrip
  17. {
  18. Template = new FuncControlTemplate<TabStrip>(CreateTabStripTemplate),
  19. Items =
  20. {
  21. new TabItem
  22. {
  23. Name = "first"
  24. },
  25. new TabItem
  26. {
  27. Name = "second"
  28. },
  29. }
  30. };
  31. target.ApplyTemplate();
  32. Assert.Equal(0, target.SelectedIndex);
  33. Assert.Same(target.Items[0], target.SelectedItem);
  34. }
  35. [Fact]
  36. public void Setting_SelectedItem_Should_Set_Selection()
  37. {
  38. var target = new TabStrip
  39. {
  40. Template = new FuncControlTemplate<TabStrip>(CreateTabStripTemplate),
  41. Items =
  42. {
  43. new TabItem
  44. {
  45. Name = "first"
  46. },
  47. new TabItem
  48. {
  49. Name = "second"
  50. },
  51. },
  52. };
  53. target.SelectedItem = target.Items[1];
  54. target.ApplyTemplate();
  55. Assert.Equal(1, target.SelectedIndex);
  56. Assert.Same(target.Items[1], target.SelectedItem);
  57. }
  58. [Fact]
  59. public void Removing_Selected_Should_Select_First()
  60. {
  61. var target = new TabStrip
  62. {
  63. Template = new FuncControlTemplate<TabStrip>(CreateTabStripTemplate),
  64. Items =
  65. {
  66. new TabItem
  67. {
  68. Name = "first"
  69. },
  70. new TabItem
  71. {
  72. Name = "second"
  73. },
  74. new TabItem
  75. {
  76. Name = "3rd"
  77. },
  78. }
  79. };
  80. target.ApplyTemplate();
  81. target.SelectedItem = target.Items[1];
  82. Assert.Same(target.Items[1], target.SelectedItem);
  83. target.Items.RemoveAt(1);
  84. Assert.Equal(0, target.SelectedIndex);
  85. Assert.Same(target.Items[0], target.SelectedItem);
  86. Assert.Same("first", ((TabItem)target.SelectedItem).Name);
  87. }
  88. private Control CreateTabStripTemplate(TabStrip parent, INameScope scope)
  89. {
  90. return new ItemsPresenter
  91. {
  92. Name = "itemsPresenter",
  93. }.RegisterInNameScope(scope);
  94. }
  95. }
  96. }