From 80935434bc08aa7966b8bf6b6613eeaabefd4e94 Mon Sep 17 00:00:00 2001 From: rob Date: Thu, 30 Jul 2015 00:30:57 +0200 Subject: [PATCH] #46 Added remove-Tests for TabStrip and TabControl. TabControl's SelectedContent fails. --- .../Primitives/TabStripTests.cs | 36 +++++++++++++++++ .../TabControlTests.cs | 39 +++++++++++++++++++ 2 files changed, 75 insertions(+) diff --git a/Tests/Perspex.Controls.UnitTests/Primitives/TabStripTests.cs b/Tests/Perspex.Controls.UnitTests/Primitives/TabStripTests.cs index fe8ba46010..822cf52f63 100644 --- a/Tests/Perspex.Controls.UnitTests/Primitives/TabStripTests.cs +++ b/Tests/Perspex.Controls.UnitTests/Primitives/TabStripTests.cs @@ -6,6 +6,7 @@ namespace Perspex.Controls.UnitTests.Primitives { + using System.Collections.ObjectModel; using System.Linq; using Perspex.Controls.Presenters; using Perspex.Controls.Primitives; @@ -89,6 +90,41 @@ namespace Perspex.Controls.UnitTests.Primitives Assert.Same(target.SelectedItem, target.SelectedTab); } + [Fact] + public void Removing_Selected_Should_Select_Next() + { + var list = new ObservableCollection() + { + new TabItem + { + Name = "first" + }, + new TabItem + { + Name = "second" + }, + new TabItem + { + Name = "3rd" + }, + }; + + var target = new TabStrip + { + Template = new ControlTemplate(this.CreateTabStripTemplate), + Items = list + }; + + target.ApplyTemplate(); + target.SelectedTab = list[1]; + Assert.Same(list[1], target.SelectedTab); + list.RemoveAt(1); + + // Assert for former element [2] now [1] == "3rd" + Assert.Same(list[1], target.SelectedTab); + Assert.Same("3rd", target.SelectedTab.Name); + } + private Control CreateTabStripTemplate(TabStrip parent) { return new ItemsPresenter diff --git a/Tests/Perspex.Controls.UnitTests/TabControlTests.cs b/Tests/Perspex.Controls.UnitTests/TabControlTests.cs index 96014ba7da..b69b464030 100644 --- a/Tests/Perspex.Controls.UnitTests/TabControlTests.cs +++ b/Tests/Perspex.Controls.UnitTests/TabControlTests.cs @@ -12,6 +12,7 @@ namespace Perspex.Controls.UnitTests using Perspex.Controls.Templates; using Perspex.LogicalTree; using Xunit; + using System.Collections.ObjectModel; public class TabControlTests { @@ -123,6 +124,44 @@ namespace Perspex.Controls.UnitTests Assert.Equal("foo", ((TextBlock)target.GetLogicalChildren().First()).Text); } + [Fact] + public void Removal_Should_Set_Next_Tab() + { + var collection = new ObservableCollection() + { + new TabItem + { + Name = "first", + Content = "foo", + }, + new TabItem + { + Name = "second", + Content = "bar", + }, + new TabItem + { + Name = "3rd", + Content = "barf", + }, + }; + + var target = new TabControl + { + Template = new ControlTemplate(this.CreateTabControlTemplate), + Items = collection, + }; + + target.ApplyTemplate(); + target.SelectedItem = collection[1]; + collection.RemoveAt(1); + + // compare with former [2] now [1] == "3rd" + Assert.Same(collection[1], target.SelectedItem); + Assert.Same(target.SelectedTab, target.SelectedItem); + Assert.Equal("barf", target.SelectedContent); + } + private Control CreateTabControlTemplate(TabControl parent) { return new StackPanel