Beispiel #1
0
        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
        }
Beispiel #2
0
        public void Collection_properties_shall_be_converted_to_observable_collections()
        {
            TestObject TestObject = new TestObject();
            TestProxy6 TestProxy  = new TestProxy6(TestObject);

            Assert.IsInstanceOf <INotifyCollectionChanged>(TestProxy.CollectionProperty);
        }
Beispiel #3
0
 static TestProxy6()
 {
     TestProxy6.collectionPropertyAdapter = ObservableObject.GetPropertyAdapterFactory <TestProxy6>().Create(
         nameof(TestProxy6.CollectionProperty),
         _ => TestProxy6.ReturnOrThrow(_.Source.PropertyCollection, _.ThrowException),
         (_, item) => new TestProxy6(item, _.Source.Property));
 }
Beispiel #4
0
 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));
 }
Beispiel #5
0
        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]);
        }
Beispiel #6
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);
 }
Beispiel #7
0
        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);
        }
Beispiel #8
0
        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
        }
Beispiel #9
0
        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
        }
Beispiel #10
0
        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);
        }
Beispiel #11
0
        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);
        }
Beispiel #12
0
        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);
        }
Beispiel #13
0
        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);
        }