TabStripTests.cs 3.2 KB

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