public void Collection_properties_shall_support_clearing_the_list() { TestObject TestObject = new TestObject(); TestObject Item1 = new TestObject(1); TestObject Item2 = new TestObject(2); TestObject Item3 = new TestObject(3); TestObject.PropertyCollection.Add(Item1); TestObject.PropertyCollection.Add(Item2); TestObject.PropertyCollection.Add(Item3); TestProxy6 TestProxy = new TestProxy6(TestObject); List <NotifyCollectionChangedEventArgs> Events = new List <NotifyCollectionChangedEventArgs>(); ((INotifyCollectionChanged)TestProxy.CollectionProperty).CollectionChanged += (s, e) => Events.Add(e); bool ChangedEventCalled = false; TestProxy.PropertyChanged += (s, e) => ChangedEventCalled = true; TestObject.PropertyCollection.Clear(); TestProxy6[] Items = TestProxy.CollectionProperty.ToArray(); Assert.AreEqual(0, Items.Length); Assert.AreEqual(1, Events.Count); // clear }
public void Collection_properties_shall_be_converted_to_observable_collections() { TestObject TestObject = new TestObject(); TestProxy6 TestProxy = new TestProxy6(TestObject); Assert.IsInstanceOf <INotifyCollectionChanged>(TestProxy.CollectionProperty); }
static TestProxy6() { TestProxy6.collectionPropertyAdapter = ObservableObject.GetPropertyAdapterFactory <TestProxy6>().Create( nameof(TestProxy6.CollectionProperty), _ => TestProxy6.ReturnOrThrow(_.Source.PropertyCollection, _.ThrowException), (_, item) => new TestProxy6(item, _.Source.Property)); }
public TestProxy6(TestObject value, int property = 0) { this.Source = value; this.DependentProperty = property; this.collectionPropertyAdapter = this.CreatePropertyAdapter( nameof(this.CollectionProperty), () => TestProxy6.ReturnOrThrow(this.Source.PropertyCollection, this.ThrowException), item => new TestProxy6(item, value.Property)); }
public void Collection_properties_shall_return_the_items_on_deferred_execution_iterators() { TestObject TestObject = new TestObject(); TestProxy6 TestProxy = new TestProxy6(TestObject, 2); int[] Items = TestProxy.DeferredCollectionProperty.ToArray(); Assert.AreEqual(2, Items[0]); }
static TestProxy6() { TestProxy6.collectionPropertyAdapter = ObservableObject.GetPropertyAdapterFactory <TestProxy6>().Create( nameof(TestProxy6.CollectionProperty), _ => TestProxy6.ReturnOrThrow(_.Source.PropertyCollection, _.ThrowException), (_, item) => new TestProxy6(item, _.Source.Property)); TestProxy6.deferredCollectionPropertyAdapter = ObservableObject.GetPropertyAdapterFactory <TestProxy6>().Create( nameof(TestProxy6.DeferredCollectionProperty), _ => new[] { 1, 2, 3 }.SkipWhile(item => item < _.DependentProperty).TakeWhile(item => item <= _.DependentProperty), (_, item) => item); }
public void Collection_properties_shall_return_the_items() { TestObject TestObject = new TestObject(); TestObject Item1 = new TestObject(); TestObject Item2 = new TestObject(); TestObject.PropertyCollection.Add(Item1); TestObject.PropertyCollection.Add(Item2); TestProxy6 TestProxy = new TestProxy6(TestObject); TestProxy6[] Items = TestProxy.CollectionProperty.ToArray(); Assert.AreEqual(Item1, Items[0].Source); Assert.AreEqual(Item2, Items[1].Source); }
public void Collection_properties_shall_reflect_change_on_complete_reset() { TestObject TestObject = new TestObject(); TestObject Item1 = new TestObject(1); TestObject Item2 = new TestObject(2); TestObject Item3 = new TestObject(3); TestObject Item4 = new TestObject(4); TestObject Item5 = new TestObject(5); TestObject.PropertyCollection.Add(Item1); TestObject.PropertyCollection.Add(Item2); TestObject.PropertyCollection.Add(Item3); TestProxy6 TestProxy = new TestProxy6(TestObject); Assert.That(TestObject.PropertyCollection.Count, Is.EqualTo(3)); ObservableCollection <TestObject> NewList = new ObservableCollection <TestObject>(); NewList.Add(Item5); NewList.Add(Item4); NewList.Add(Item3); NewList.Add(Item2); List <NotifyCollectionChangedEventArgs> Events = new List <NotifyCollectionChangedEventArgs>(); ((INotifyCollectionChanged)TestProxy.CollectionProperty).CollectionChanged += (s, e) => Events.Add(e); #pragma warning disable 219 bool ChangedEventCalled = false; #pragma warning restore 219 TestProxy.PropertyChanged += (s, e) => ChangedEventCalled = true; TestObject.PropertyCollection = NewList; TestProxy6[] Items = TestProxy.CollectionProperty.ToArray(); Assert.That(Items[0].Source, Is.EqualTo(Item5)); Assert.That(Items[1].Source, Is.EqualTo(Item4)); Assert.That(Items[2].Source, Is.EqualTo(Item3)); Assert.That(Items[3].Source, Is.EqualTo(Item2)); Assert.That(Events.Count, Is.EqualTo(4)); // remove #1, add #5, add #4, move #3 }
public void Collection_properties_shall_reflect_change_on_complete_reset() { TestObject TestObject = new TestObject(); TestObject Item1 = new TestObject(1); TestObject Item2 = new TestObject(2); TestObject Item3 = new TestObject(3); TestObject Item4 = new TestObject(4); TestObject Item5 = new TestObject(5); TestObject.PropertyCollection.Add(Item1); TestObject.PropertyCollection.Add(Item2); TestObject.PropertyCollection.Add(Item3); TestProxy6 TestProxy = new TestProxy6(TestObject); ObservableCollection <TestObject> NewList = new ObservableCollection <TestObject>(); NewList.Add(Item5); NewList.Add(Item4); NewList.Add(Item3); NewList.Add(Item2); List <NotifyCollectionChangedEventArgs> Events = new List <NotifyCollectionChangedEventArgs>(); ((INotifyCollectionChanged)TestProxy.CollectionProperty).CollectionChanged += (s, e) => Events.Add(e); bool ChangedEventCalled = false; TestProxy.PropertyChanged += (s, e) => ChangedEventCalled = true; TestObject.PropertyCollection = NewList; TestProxy6[] Items = TestProxy.CollectionProperty.ToArray(); Assert.AreEqual(Item5, Items[0].Source); Assert.AreEqual(Item4, Items[1].Source); Assert.AreEqual(Item3, Items[2].Source); Assert.AreEqual(Item2, Items[3].Source); Assert.AreEqual(4, Events.Count); // remove #1 on index 0, add #5 on index 0, add #4 on index 1, move #3 from 3 to 2 }
public void Collection_properties_shall_reflect_deletion_of_item_thats_twice_in_the_list() { TestObject TestObject = new TestObject(); TestObject Item1 = new TestObject(1); TestObject Item2 = new TestObject(2); TestObject.PropertyCollection.Add(Item2); TestObject.PropertyCollection.Add(Item1); TestObject.PropertyCollection.Add(Item2); TestProxy6 TestProxy = new TestProxy6(TestObject); TestObject.PropertyCollection.Remove(Item2); TestProxy6[] Items = TestProxy.CollectionProperty.ToArray(); Assert.AreEqual(Item1, Items[0].Source); Assert.AreEqual(Item2, Items[1].Source); }
public void Collection_properties_shall_reflect_insert_of_item_already_in_list() { TestObject TestObject = new TestObject(); TestObject Item1 = new TestObject(1); TestObject Item2 = new TestObject(2); TestObject.PropertyCollection.Add(Item1); TestObject.PropertyCollection.Add(Item2); TestProxy6 TestProxy = new TestProxy6(TestObject); TestObject.PropertyCollection.Insert(0, Item2); TestProxy6[] Items = TestProxy.CollectionProperty.ToArray(); Assert.AreEqual(Item2, Items[0].Source); Assert.AreEqual(Item1, Items[1].Source); Assert.AreEqual(Item2, Items[2].Source); }
public void Collection_properties_shall_issue_the_exception_if_one_was_thrown_retrieving_the_value() { TestObject TestObject = new TestObject(); TestObject Item1 = new TestObject(1); TestObject Item2 = new TestObject(2); TestObject.PropertyCollection.Add(Item1); TestObject.PropertyCollection.Add(Item2); TestProxy6 TestProxy = new TestProxy6(TestObject); TestProxy.ThrowException = true; Assert.Throws <InvalidOperationException>(() => TestProxy.CollectionProperty.ToArray()); TestProxy.ThrowException = false; TestProxy6[] Items = TestProxy.CollectionProperty.ToArray(); Assert.AreEqual(Item1, Items[0].Source); Assert.AreEqual(Item2, Items[1].Source); }
public void Collection_properties_shall_be_completely_reset_if_inputs_to_adapter_creation_expression_change() { TestObject TestObject = new TestObject(); TestObject Item1 = new TestObject(1); TestObject Item2 = new TestObject(2); TestObject Item3 = new TestObject(3); TestObject.PropertyCollection.Add(Item1); TestObject.PropertyCollection.Add(Item2); TestObject.PropertyCollection.Add(Item3); TestProxy6 TestProxy = new TestProxy6(TestObject); //All objects must be re-created because of the dependency to 'property' in the adapter creation TestObject.Property = 42; TestProxy6[] Items = TestProxy.CollectionProperty.ToArray(); Assert.AreEqual(42, Items[0].DependentProperty); Assert.AreEqual(42, Items[1].DependentProperty); Assert.AreEqual(42, Items[2].DependentProperty); }