summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Core.UnitTests/NotifyCollectionChangedEventArgsExtensionsTests.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Core.UnitTests/NotifyCollectionChangedEventArgsExtensionsTests.cs')
-rw-r--r--Xamarin.Forms.Core.UnitTests/NotifyCollectionChangedEventArgsExtensionsTests.cs73
1 files changed, 73 insertions, 0 deletions
diff --git a/Xamarin.Forms.Core.UnitTests/NotifyCollectionChangedEventArgsExtensionsTests.cs b/Xamarin.Forms.Core.UnitTests/NotifyCollectionChangedEventArgsExtensionsTests.cs
new file mode 100644
index 00000000..e9acde45
--- /dev/null
+++ b/Xamarin.Forms.Core.UnitTests/NotifyCollectionChangedEventArgsExtensionsTests.cs
@@ -0,0 +1,73 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using NUnit.Framework;
+
+namespace Xamarin.Forms.Core.UnitTests
+{
+ [TestFixture]
+ public class NotifyCollectionChangedEventArgsExtensionsTests : BaseTestFixture
+ {
+ [Test]
+ public void Add()
+ {
+ List<string> applied = new List<string> { "foo", "bar", "baz" };
+
+ Action reset = () => Assert.Fail ("Reset should not be called");
+ Action<object, int, bool> insert = (o, i, create) => {
+ Assert.That (create, Is.True);
+ applied.Insert (i, (string) o);
+ };
+
+ Action<object, int> removeAt = (o, i) => applied.RemoveAt (i);
+
+ var items = new ObservableCollection<string> (applied);
+ items.CollectionChanged += (s, e) => e.Apply (insert, removeAt, reset);
+
+ items.Add ("monkey");
+
+ CollectionAssert.AreEqual (items, applied);
+ }
+
+ [Test]
+ public void Insert()
+ {
+ List<string> applied = new List<string> { "foo", "bar", "baz" };
+
+ Action reset = () => Assert.Fail ("Reset should not be called");
+ Action<object, int, bool> insert = (o, i, create) => {
+ Assert.That (create, Is.True);
+ applied.Insert (i, (string) o);
+ };
+ Action<object, int> removeAt = (o, i) => applied.RemoveAt (i);
+
+ var items = new ObservableCollection<string> (applied);
+ items.CollectionChanged += (s, e) => e.Apply (insert, removeAt, reset);
+
+ items.Insert (1, "monkey");
+
+ CollectionAssert.AreEqual (items, applied);
+ }
+
+ [Test]
+ public void Move()
+ {
+ List<string> applied = new List<string> { "foo", "bar", "baz" };
+
+ Action reset = () => Assert.Fail ("Reset should not be called");
+ Action<object, int, bool> insert = (o, i, create) => {
+ Assert.That (create, Is.False);
+ applied.Insert (i, (string) o);
+ };
+
+ Action<object, int> removeAt = (o, i) => applied.RemoveAt (i);
+
+ var items = new ObservableCollection<string> (applied);
+ items.CollectionChanged += (s, e) => e.Apply (insert, removeAt, reset);
+
+ items.Move (0, 2);
+
+ CollectionAssert.AreEqual (items, applied);
+ }
+ }
+}