Browse Source

added failing unit test for issue #637: ListBox not in sync with items after inserted/removed from items

pull/640/head
donandren 10 years ago
parent
commit
f764d46674
  1. 35
      tests/Avalonia.Controls.UnitTests/ListBoxTests.cs

35
tests/Avalonia.Controls.UnitTests/ListBoxTests.cs

@ -10,6 +10,7 @@ using Avalonia.Styling;
using Avalonia.UnitTests;
using Avalonia.VisualTree;
using Xunit;
using Avalonia.Collections;
namespace Avalonia.Controls.UnitTests
{
@ -152,6 +153,40 @@ namespace Avalonia.Controls.UnitTests
Assert.False(((ListBoxItem)target.Presenter.Panel.Children[0]).IsSelected);
}
[Fact]
public void ListBox_Virt_None_Should_Sync_Items_When_Inserted_Or_Removed()
{
var items = new AvaloniaList<string>(Enumerable.Range(0, 5).Select(x => $"Item {x}"));
var toAdd = Enumerable.Range(0, 3).Select(x => $"Added Item {x}").ToArray();
var target = new ListBox
{
Template = ListBoxTemplate(),
VirtualizationMode = ItemVirtualizationMode.None,
Items = items,
ItemTemplate = new FuncDataTemplate<string>(x => new TextBlock { Height = 10 }),
SelectedIndex = 0,
};
Prepare(target);
Assert.Equal(items.Count, target.Presenter.Panel.Children.Count);
int addIndex = 1;
foreach(var item in toAdd)
{
items.Insert(addIndex++, item);
}
Assert.Equal(items.Count, target.Presenter.Panel.Children.Count);
foreach (var item in toAdd)
{
items.Remove(item);
}
Assert.Equal(items.Count, target.Presenter.Panel.Children.Count);
}
private FuncControlTemplate ListBoxTemplate()
{
return new FuncControlTemplate<ListBox>(parent =>

Loading…
Cancel
Save