diff --git a/tests/Perspex.Controls.UnitTests/Primitives/SelectingItemsControlTests_Multiple.cs b/tests/Perspex.Controls.UnitTests/Primitives/SelectingItemsControlTests_Multiple.cs index 53938d4620..c61cb3282e 100644 --- a/tests/Perspex.Controls.UnitTests/Primitives/SelectingItemsControlTests_Multiple.cs +++ b/tests/Perspex.Controls.UnitTests/Primitives/SelectingItemsControlTests_Multiple.cs @@ -271,6 +271,33 @@ namespace Perspex.Controls.UnitTests.Primitives Assert.Equal(new[] { "qux", "baz", "bar" }, target.SelectedItems); } + [Fact] + public void Second_Range_Select_Backwards_Should_Select_From_Original_Selection() + { + var target = new TestSelector + { + Items = new[] + { + "foo", + "bar", + "baz", + "qux", + "qiz", + "lol", + }, + SelectionMode = SelectionMode.Multiple, + Template = Template(), + }; + + target.ApplyTemplate(); + target.SelectedIndex = 2; + target.SelectRange(5); + target.SelectRange(4); + + Assert.Equal(new[] { 2, 3, 4 }, target.SelectedIndexes); + Assert.Equal(new[] { "baz", "qux", "qiz" }, target.SelectedItems); + } + private class TestSelector : SelectingItemsControl { public new IPerspexList SelectedIndexes