public void OldListToOldList() { var list = new ArrayList() { 0, 1, 2 }; var target = new ArrayList(); CreateAndCheckBinding(() => CollectionBindingHelper.Bind((int i) => i, target, i => i, list)); Assert.AreEqual(1, target[1]); }
public void OldListToNewList() { var list = new ArrayList() { 0, 1, 2 }; ObservableCollection <int> targetCollection = new ObservableCollection <int>(); CreateAndCheckBinding(() => CollectionBindingHelper.Bind(targetCollection, i => i, i => i, list)); Assert.AreEqual(1, targetCollection[1]); }
public void NewListToOldList() { var list = new ObservableCollection <int>() { 0, 1, 2 }; var target = new ArrayList(); CreateAndCheckBinding(() => CollectionBindingHelper.Bind(i => i, target, list, i => i)); Assert.AreEqual(1, target[1]); }
public void SyncWithSimpleList() { List <int> list = new List <int>() { 0, 1, 2 }; ObservableCollection <int> targetCollection = new ObservableCollection <int>(); CreateAndCheckBinding(() => CollectionBindingHelper.Bind(targetCollection, i => i, list, i => i)); AssertHelper.AssertEnumerablesAreEqual(list, targetCollection); }
public void MoveItemForward_CompareCollections() { ObservableCollection <int> collection1 = new ObservableCollection <int>() { 0, 1, 2, 3, 4, 5 }; ObservableCollection <int> collection2 = new ObservableCollection <int>(); CreateAndCheckBinding(() => CollectionBindingHelper.Bind(collection2, x => x, collection1, x => x)); AssertHelper.AssertEnumerablesAreEqual(collection1, collection2); collection1.Move(1, 3); AssertHelper.AssertEnumerablesAreEqual(collection1, collection2); }
public void OldListToOldList_WithGC() { var list = new MyTestCollection(); list.Add(0); list.Add(1); var target = new ArrayList(); var binding = CollectionBindingHelper.Bind((int i) => i, target, i => i, list); Assert.AreEqual(1, target[1]); GC.KeepAlive(binding); GC.KeepAlive(list); GC.KeepAlive(target); }
public void AddItemsReverse() { ObservableCollection <int> collection1 = new ObservableCollection <int>(); ObservableCollection <string> collection2 = new ObservableCollection <string>(); CreateAndCheckBinding(() => CollectionBindingHelper.Bind(collection2, a => a.ToString(), collection1, s => int.Parse(s), true)); collection1.Add(8); Assert.AreEqual(collection1[0].ToString(), collection2[0]); collection2.Add("555"); collection2.Add("56"); Assert.AreEqual(collection1[0], int.Parse(collection2[2])); Assert.AreEqual(collection1[1], int.Parse(collection2[1])); Assert.AreEqual(collection1[2], int.Parse(collection2[0])); Assert.AreEqual(collection1.Count, 3); Assert.AreEqual(collection2.Count, 3); }
public void TaskbarButtonInfoCollectionBehavior() { ObservableCollection <int> collection1 = new ObservableCollection <int>(); MyTestCollection <string> collection2 = new MyTestCollection <string>(); collection2.Add("434"); IDisposable stopBinding = CollectionBindingHelper.Bind(collection1, s => int.Parse(s), collection2, a => a.ToString()); collection2.OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, collection2[0], 0)); AssertHelper.AssertEnumerablesAreEqual(new int[] { 434 }, collection1); collection1.Add(100); stopBinding.Dispose(); collection2.Remove("100"); CreateAndCheckBinding(() => CollectionBindingHelper.Bind(collection1, s => int.Parse(s), collection2, a => a.ToString())); collection2.OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, "100", 0)); AssertHelper.AssertEnumerablesAreEqual(new int[] { 434 }, collection1); }
public void ClearItems() { ObservableCollection <int> collection1 = new ObservableCollection <int>(); ObservableCollection <string> collection2 = new ObservableCollection <string>(); CreateAndCheckBinding(() => CollectionBindingHelper.Bind(collection2, a => a.ToString(), collection1, s => int.Parse(s))); collection1.Add(8); collection1.Add(60); collection1.Clear(); Assert.AreEqual(collection1.Count, 0); Assert.AreEqual(collection2.Count, 0); collection2.Add("50"); collection2.Add("56"); collection2.Clear(); Assert.AreEqual(collection1.Count, 0); Assert.AreEqual(collection2.Count, 0); }
public void RemoveItemsReverse() { ObservableCollection <string> collection1 = new ObservableCollection <string>(); ObservableCollection <int> collection2 = new ObservableCollection <int>(); CreateAndCheckBinding(() => CollectionBindingHelper.Bind(collection2, s => int.Parse(s), collection1, a => a.ToString(), true)); collection1.Add("100"); collection1.Add("101"); collection1.Add("102"); collection1.Add("103"); collection1.RemoveAt(1); Assert.AreEqual(int.Parse(collection1[0]), collection2[2]); Assert.AreEqual(int.Parse(collection1[1]), collection2[1]); Assert.AreEqual(int.Parse(collection1[2]), collection2[0]); Assert.AreEqual(collection1.Count, 3); Assert.AreEqual(collection2.Count, 3); collection2.RemoveAt(2); Assert.AreEqual(int.Parse(collection1[0]), collection2[1]); Assert.AreEqual(int.Parse(collection1[1]), collection2[0]); Assert.AreEqual(collection1.Count, 2); Assert.AreEqual(collection2.Count, 2); }
public void ReplaceItemsReverse() { ObservableCollection <int> collection1 = new ObservableCollection <int>(); ObservableCollection <string> collection2 = new ObservableCollection <string>(); CreateAndCheckBinding(() => CollectionBindingHelper.Bind(collection2, a => a.ToString(), collection1, s => int.Parse(s), true)); collection1.Add(-100); collection1.Add(254); collection1.Add(1); collection1.Add(1000); collection1[1] = collection1[2]; for (int i = 0; i < collection1.Count; i++) { Assert.AreEqual(collection1[i], int.Parse(collection2[collection2.Count - 1 - i])); } collection2[3] = collection2[2]; for (int i = 0; i < collection2.Count; i++) { Assert.AreEqual(collection1[i], int.Parse(collection2[collection2.Count - 1 - i])); } Assert.AreEqual(collection1.Count, 4); Assert.AreEqual(collection2.Count, 4); }
public void MoveItemsReverse() { ObservableCollection <string> collection1 = new ObservableCollection <string>(); ObservableCollection <int> collection2 = new ObservableCollection <int>(); CreateAndCheckBinding(() => CollectionBindingHelper.Bind(collection2, s => int.Parse(s), collection1, a => a.ToString(), true)); collection1.Add("560"); collection1.Add("200"); collection1.Add("-300"); collection1.Add("-1"); collection1.Move(0, 2); for (int i = 0; i < collection1.Count; i++) { Assert.AreEqual(int.Parse(collection1[i]), collection2[collection2.Count - 1 - i]); } collection2.Move(3, 0); for (int i = 0; i < collection2.Count; i++) { Assert.AreEqual(int.Parse(collection1[i]), collection2[collection2.Count - 1 - i]); } Assert.AreEqual(collection1.Count, 4); Assert.AreEqual(collection2.Count, 4); }
public void UnBinding() { ObservableCollection <int> collection1 = new ObservableCollection <int>(); ObservableCollection <string> collection2 = new ObservableCollection <string>(); IDisposable stopBinding = CollectionBindingHelper.Bind(collection2, a => a.ToString(), collection1, s => int.Parse(s)); collection1.Add(-100); collection1.Add(254); collection1.Add(1); Assert.AreEqual(collection1[0], int.Parse(collection2[0])); Assert.AreEqual(collection1[1], int.Parse(collection2[1])); Assert.AreEqual(collection1[2], int.Parse(collection2[2])); Assert.AreEqual(collection1.Count, 3); Assert.AreEqual(collection2.Count, 3); stopBinding.Dispose(); collection1[1] = 10; collection2.RemoveAt(2); Assert.AreEqual(collection1[0], int.Parse(collection2[0])); Assert.AreEqual(collection1[1], 10); Assert.AreEqual(collection2[1], "254"); Assert.AreEqual(collection1[2], 1); Assert.AreEqual(collection1.Count, 3); Assert.AreEqual(collection2.Count, 2); }
public static IDisposable TwoWayBind <TSource, TTarget>(IList <TTarget> target, IList <TSource> source, Func <TSource, TTarget> itemConverter, Func <TTarget, TSource> itemBackConverter) { return(CollectionBindingHelper.Bind(target, itemConverter, source, itemBackConverter)); }