public void ValidateInserts() { RunOnUIThread.Execute(() => { var dataSource = new CustomItemsSource(Enumerable.Range(0, 10).ToList()); var repeater = SetupRepeater(dataSource); Log.Comment("Insert in realized range: Inserting 3 items at index 4"); dataSource.Insert(index: 4, count: 3, reset: false); repeater.UpdateLayout(); var realized = VerifyRealizedRange(repeater, dataSource); Verify.IsGreaterThan(realized, 0); Log.Comment("Insert before realized range: Inserting 3 items at index 0"); dataSource.Insert(index: 0, count: 3, reset: false); repeater.UpdateLayout(); realized = VerifyRealizedRange(repeater, dataSource); Verify.IsGreaterThan(realized, 0); Log.Comment("Insert after realized range: Inserting 3 items at index 10"); dataSource.Insert(index: 10, count: 3, reset: false); repeater.UpdateLayout(); realized = VerifyRealizedRange(repeater, dataSource); Verify.IsGreaterThan(realized, 0); }); }
public void CanRemoveAndInsertItemsInRealizedRange() { RunOnUIThread.Execute(() => { var dataSource = new CustomItemsSource(Enumerable.Range(0, 3).ToList()); var repeater = SetupRepeater(dataSource); var realized = VerifyRealizedRange(repeater, dataSource); Verify.AreEqual(3, realized); Log.Comment("Remove index 1 in realized range"); dataSource.Remove(index: 1, count: 1, reset: false); repeater.UpdateLayout(); realized = VerifyRealizedRange(repeater, dataSource); Verify.AreEqual(2, realized); Log.Comment("Add 5 items at index 1"); dataSource.Insert(index: 1, count: 5, reset: false); repeater.UpdateLayout(); realized = VerifyRealizedRange(repeater, dataSource); Verify.AreEqual(3, realized); }); }
public void ValidateSentinelsDuringInserts() { RunOnUIThread.Execute(() => { var dataSource = new CustomItemsSource(Enumerable.Range(0, 10).ToList()); int getElementCallCount = 0; int recycleElementCallCount = 0; var elementFactory = new RecyclingElementFactoryDerived() { Templates = { { "key", SharedHelpers.GetDataTemplate("<TextBlock Text='{Binding}' Height='100' />") } }, RecyclePool = new RecyclePool(), GetElementFunc = (int index, UIElement owner, UIElement elementFromBase) => { getElementCallCount++; return(elementFromBase); }, ClearElementFunc = (UIElement element, UIElement owner) => recycleElementCallCount++, ValidateElementIndices = false }; var repeater = SetupRepeater(dataSource, elementFactory); getElementCallCount = 0; recycleElementCallCount = 0; Log.Comment("Insert in realized range: Inserting 100 items at index 1"); dataSource.Insert(index: 1, count: 100, reset: false); repeater.UpdateLayout(); var realized = VerifyRealizedRange(repeater, dataSource); Verify.IsGreaterThan(realized, 0); Verify.IsLessThan(getElementCallCount, 6); Verify.IsLessThan(recycleElementCallCount, 6); }); }