public void EventRemove()
        {               //****************************************
            var MySeed    = Environment.TickCount;
            var MyRandom  = new Random(MySeed);
            var MyRecords = new ObservableList <int>(1);
            NotifyCollectionChangedEventArgs MyEventArgs = null;
            //****************************************

            var MyView = new ObservableListView <int>(MyRecords);

            MyRecords.Add(42);

            MyView.CollectionChanged += (sender, e) => MyEventArgs = e;

            MyRecords.RemoveAt(0);

            //****************************************

            Assert.AreEqual(0, MyView.Count, "Item count does not match");
            Assert.IsNotNull(MyEventArgs, "No Event Raised");
            Assert.AreEqual(NotifyCollectionChangedAction.Remove, MyEventArgs.Action);
            Assert.IsNotNull(MyEventArgs.OldItems, "No Old Items");
            Assert.AreEqual(0, MyEventArgs.OldStartingIndex, "Starting Index incorrect");
            Assert.AreEqual(1, MyEventArgs.OldItems.Count, "Old Items Count incorrect");
            Assert.AreEqual(42, MyEventArgs.OldItems[0], "Old Items Value incorrect");
        }
        public void PrePopulateFilter([Values(16, 24, 777, 1024)] int count)
        {               //****************************************
            var MySeed    = Environment.TickCount;
            var MyRandom  = new Random(MySeed);
            var MyRecords = new ObservableList <int>(count);

            //****************************************

            for (int Index = 0; Index < count; Index++)
            {
                MyRecords.Add(MyRandom.Next(short.MaxValue));
            }

            //****************************************

            var MyView = new ObservableListView <int>(MyRecords, FilterMoreThan512);

            //****************************************

            var MySortedRecords = MyRecords.Where(FilterMoreThan512).ToArray();

            Array.Sort(MySortedRecords);

            CollectionAssert.AreEqual(MySortedRecords, MyView, "Bad Seed was {0}", MySeed);

            Thread.Sleep(1);
        }
        public void PrePopulateMaximum([Values(256, 512, 1024, 2048)] int maximum)
        {               //****************************************
            var MySeed    = Environment.TickCount;
            var MyRandom  = new Random(MySeed);
            var MyRecords = new ObservableList <int>(1024);

            //****************************************

            for (int Index = 0; Index < 1024; Index++)
            {
                MyRecords.Add(MyRandom.Next(short.MaxValue));
            }

            //****************************************

            var MyView = new ObservableListView <int>(MyRecords, maximum);

            //****************************************

            var MySortedRecords = MyRecords.ToArray();

            Array.Sort(MySortedRecords);
            if (MySortedRecords.Length > maximum)
            {
                Array.Resize(ref MySortedRecords, maximum);
            }

            CollectionAssert.AreEqual(MySortedRecords, MyView, "Bad Seed was {0}", MySeed);

            Thread.Sleep(1);
        }
Ejemplo n.º 4
0
        public void CollectionChangedTest()
        {
            var originalCollection = new ObservableCollection <MyModel>()
            {
                new MyModel()
            };
            var listView = new ObservableListView <MyModel>(originalCollection);

            AssertHelper.SequenceEqual(originalCollection, listView);

            // Check add operation with collection changed event.
            bool handlerCalled = false;

            void Handler(object sender, NotifyCollectionChangedEventArgs e)
            {
                handlerCalled = true;
                Assert.AreEqual(listView, sender);
                Assert.AreEqual(NotifyCollectionChangedAction.Add, e.Action);
                Assert.AreEqual(1, e.NewStartingIndex);
                Assert.AreEqual(originalCollection.Last(), e.NewItems.Cast <MyModel>().Single());
            }

            listView.CollectionChanged += Handler;
            originalCollection.Add(new MyModel());
            Assert.IsTrue(handlerCalled);

            // After dispose the collection does not synchronize anymore
            handlerCalled = false;
            listView.Dispose();
            originalCollection.Add(new MyModel());
            Assert.IsFalse(handlerCalled);
            listView.CollectionChanged -= Handler;
        }
        public void RemoveFilter()
        {               //****************************************
            var MySeed    = Environment.TickCount;
            var MyRandom  = new Random(MySeed);
            var MyRecords = new ObservableList <int>(1024);
            //****************************************

            var MyView = new ObservableListView <int>(MyRecords, FilterLessThan512);

            for (int Index = 0; Index < 1024; Index++)
            {
                MyRecords.Add(MyRandom.Next(short.MaxValue));
            }

            for (int Index = 0; Index < 512; Index++)
            {
                MyRecords.RemoveAt(MyRandom.Next(MyRecords.Count));
            }

            //****************************************

            var MySortedRecords = MyRecords.Where(FilterLessThan512).ToArray();

            Array.Sort(MySortedRecords);

            CollectionAssert.AreEqual(MySortedRecords, MyView, "Bad Seed was {0}", MySeed);

            Thread.Sleep(1);
        }
        public void ReplaceFilterSeed([Values(357656222)] int seed)
        {         //****************************************
            var MyRandom  = new Random(seed);
            var MyRecords = new ObservableList <int>(1024);
            //****************************************

            var MyView = new ObservableListView <int>(MyRecords, FilterLessThan512);

            for (int Index = 0; Index < 1024; Index++)
            {
                MyRecords.Add(MyRandom.Next(short.MaxValue));
            }

            for (int Index = 0; Index < 1024; Index++)
            {
                var MyInnerRecords = MyRecords.Where(FilterLessThan512).ToArray();

                Array.Sort(MyInnerRecords);

                CollectionAssert.AreEqual(MyInnerRecords, MyView, "Iteration {0}", Index);

                MyRecords[MyRandom.Next(1024)] = MyRandom.Next(short.MaxValue);
            }

            //****************************************

            var MySortedRecords = MyRecords.Where(FilterLessThan512).ToArray();

            Array.Sort(MySortedRecords);

            CollectionAssert.AreEqual(MySortedRecords, MyView);

            Thread.Sleep(1);
        }
        public void PrePopulate()
        {               //****************************************
            var MySeed    = Environment.TickCount;
            var MyRandom  = new Random(MySeed);
            var MyRecords = new ObservableList <int>(1024);

            //****************************************

            for (int Index = 0; Index < 1024; Index++)
            {
                MyRecords.Add(MyRandom.Next(short.MaxValue));
            }

            //****************************************

            var MyView = new ObservableListView <int>(MyRecords);

            //****************************************

            var MySortedRecords = MyRecords.ToArray();

            Array.Sort(MySortedRecords);

            CollectionAssert.AreEqual(MySortedRecords, MyView, "Bad Seed was {0}", MySeed);

            Thread.Sleep(1);
        }
        public void EventRemoveMaximumFilter([Values(256, 512, 1024)] int maximum)
        {         //****************************************
            var MySeed    = Environment.TickCount;
            var MyRandom  = new Random(MySeed);
            var MyRecords = new ObservableList <int>(1024);
            //****************************************

            var MyView    = new ObservableListView <int>(MyRecords, FilterLessThan512, maximum);
            var MyTopView = new ObservableListView <int>(MyView);

            for (int Index = 0; Index < 1024; Index++)
            {
                MyRecords.Add(MyRandom.Next(short.MaxValue));
            }

            for (int Index = 0; Index < 512; Index++)
            {
                MyRecords.RemoveAt(MyRandom.Next(MyRecords.Count));
            }

            //****************************************

            var MySortedRecords = MyRecords.Where(FilterLessThan512).ToArray();

            Array.Sort(MySortedRecords);
            if (MySortedRecords.Length > maximum)
            {
                Array.Resize(ref MySortedRecords, maximum);
            }

            CollectionAssert.AreEqual(MySortedRecords, MyTopView, "Bad Seed was {0}", MySeed);

            Thread.Sleep(1);
        }
        public void EventReplaceMaximumSeed([Values(355591720, 356919648)] int seed, [Values(256, 512)] int maximum)
        {         //****************************************
            var MyRandom  = new Random(seed);
            var MyRecords = new ObservableList <int>(1024);
            //****************************************

            var MyView    = new ObservableListView <int>(MyRecords, maximum);
            var MyTopView = new ObservableListView <int>(MyView);

            for (int Index = 0; Index < 1024; Index++)
            {
                MyRecords.Add(MyRandom.Next(short.MaxValue));
            }

            for (int Index = 0; Index < 1024; Index++)
            {
                CollectionAssert.AreEqual(MyView, MyTopView, "Iteration {0}", Index);

                MyRecords[MyRandom.Next(1024)] = MyRandom.Next(short.MaxValue);
            }

            //****************************************

            var MySortedRecords = MyRecords.ToArray();

            Array.Sort(MySortedRecords);
            if (MySortedRecords.Length > maximum)
            {
                Array.Resize(ref MySortedRecords, maximum);
            }

            CollectionAssert.AreEqual(MySortedRecords, MyTopView);

            Thread.Sleep(1);
        }
Ejemplo n.º 10
0
        protected override void OnInitialize()
        {
            base.OnInitialize();
            originalList       = new ObservableCollection <string>();
            observableListView = new ObservableListView <string>(originalList);

            NotifyCollectionChangedEventHandler collectionHandler = (sender, e) =>
            {
                eventArgs = e;
            };

            observableListView.CollectionChanged += collectionHandler;

            PropertyChangedEventHandler propertyHandler = (sender, e) =>
            {
                if (e.PropertyName == nameof(observableListView.Count))
                {
                    countChangedCount++;
                }
                else if (e.PropertyName == "Item[]")
                {
                    indexerChangedCount++;
                }
            };

            observableListView.PropertyChanged += propertyHandler;
        }
        public void EventRemoveMany()
        {               //****************************************
            var MySeed     = Environment.TickCount;
            var MyRandom   = new Random(MySeed);
            var MyRecords  = new ObservableList <int>(1024);
            int EventCount = 0;
            //****************************************

            var MyView = new ObservableListView <int>(MyRecords);

            for (int Index = 0; Index < 1024; Index++)
            {
                MyRecords.Add(MyRandom.Next(short.MaxValue));
            }

            MyView.CollectionChanged += (sender, e) => { if (e.Action == NotifyCollectionChangedAction.Remove)
                                                         {
                                                             EventCount++;
                                                         }
            };

            while (MyRecords.Count > 0)
            {
                MyRecords.RemoveAt(MyRecords.Count - 1);
            }

            //****************************************

            Assert.AreEqual(0, MyView.Count, "Item count does not match");
            Assert.AreEqual(1024, EventCount, "Event Count does not match");
        }
Ejemplo n.º 12
0
 private void UpdateItemsListView()
 {
     itemsListView = new ObservableListView <FeedItem>(SelectionService.SelectedFeed?.Items ?? CollectionHelper.Empty <FeedItem>())
     {
         Filter = FilterFeedItems
     };
     RaisePropertyChanged(nameof(ItemsListView));
 }
Ejemplo n.º 13
0
 public void Initialize()
 {
     contactsView = new ObservableListView <Contact>(Root.Contacts, null, ContactListViewModel.Filter, null);
     ContactListViewModel.Contacts            = contactsView;
     ContactListViewModel.SelectedContact     = Root.Contacts.FirstOrDefault();
     selectContactViewModel.ContactListView   = ContactListViewModel.View;
     selectContactViewModel.OkCommand         = selectContactCommand;
     contactListViewModelPropertyChangedProxy = WeakEvent.PropertyChanged.Add(ContactListViewModel, ContactListViewModelPropertyChanged);
 }
Ejemplo n.º 14
0
 public void Initialize()
 {
     emailsView = new ObservableListView <Email>(EmailFolder.Emails, filter: EmailListViewModel.Filter, sort: x => x.OrderByDescending(y => y.Sent));
     EmailListViewModel.Emails             = emailsView;
     EmailListViewModel.DeleteEmailCommand = DeleteEmailCommand;
     PropertyChangedEventManager.AddHandler(EmailListViewModel, EmailListViewModelPropertyChanged, "");
     emailLayoutViewModel.EmailListView = EmailListViewModel.View;
     emailLayoutViewModel.EmailView     = EmailViewModel.View;
 }
 public void Initialize()
 {
     emailsView = new ObservableListView <Email>(EmailFolder.Emails, null, EmailListViewModel.Filter, x => x.OrderByDescending(y => y.Sent));
     EmailListViewModel.Emails              = emailsView;
     EmailListViewModel.DeleteEmailCommand  = DeleteEmailCommand;
     emailListViewModelPropertyChangedProxy = WeakEvent.PropertyChanged.Add(EmailListViewModel, EmailListViewModelPropertyChanged);
     emailLayoutViewModel.EmailListView     = EmailListViewModel.View;
     emailLayoutViewModel.EmailView         = EmailViewModel.View;
 }
Ejemplo n.º 16
0
            static WeakReference WeakTest(ObservableCollection <MyModel> originalCollection)
            {
                var listView     = new ObservableListView <MyModel>(originalCollection);
                var weakListView = new WeakReference(listView);

                originalCollection.Add(new MyModel());
                Assert.IsTrue(weakListView.IsAlive);
                return(weakListView);
            }
 public void Initialize()
 {
     contactsView = new ObservableListView <Contact>(Root.Contacts, null, ContactListViewModel.Filter, null);
     ContactListViewModel.Contacts          = contactsView;
     ContactListViewModel.SelectedContact   = Root.Contacts.FirstOrDefault();
     selectContactViewModel.ContactListView = ContactListViewModel.View;
     selectContactViewModel.OkCommand       = selectContactCommand;
     PropertyChangedEventManager.AddHandler(ContactListViewModel, ContactListViewModelPropertyChanged, "");
 }
Ejemplo n.º 18
0
 public void Initialize()
 {
     contactsView = new ObservableListView <Contact>(Root !.Contacts, null, ContactListViewModel.Filter, null);
     ContactListViewModel.Contacts             = contactsView;
     ContactListViewModel.DeleteContactCommand = DeleteContactCommand;
     WeakEvent.PropertyChanged.Add(ContactListViewModel, ContactListViewModelPropertyChanged);
     contactLayoutViewModel.ContactListView = ContactListViewModel.View;
     contactLayoutViewModel.ContactView     = ContactViewModel.View;
 }
Ejemplo n.º 19
0
        public void Initialize()
        {
            contactsView = new ObservableListView <Contact>(Root.Contacts, null, ContactListViewModel.Filter, null);
            ContactListViewModel.Contacts             = contactsView;
            ContactListViewModel.DeleteContactCommand = DeleteContactCommand;

            PropertyChangedEventManager.AddHandler(ContactListViewModel, ContactListViewModelPropertyChanged, "");

            contactLayoutViewModel.ContactListView = ContactListViewModel.View;
            contactLayoutViewModel.ContactView     = ContactViewModel.View;
        }
Ejemplo n.º 20
0
 public void Initialize()
 {
     personViewModel.CreateNewEmailCommand = createNewEmailCommand;
     personViewModel.PropertyChanged      += PersonViewModelPropertyChanged;
     PersonsView = new ObservableListView <Person>(entityService.Persons, null, personListViewModel.Filter, null);
     personListViewModel.Persons               = PersonsView;
     personListViewModel.AddNewCommand         = addNewCommand;
     personListViewModel.RemoveCommand         = removeCommand;
     personListViewModel.CreateNewEmailCommand = createNewEmailCommand;
     personListViewModel.PropertyChanged      += PersonListViewModelPropertyChanged;
     shellService.PersonListView               = personListViewModel.View;
     shellService.PersonView            = personViewModel.View;
     personListViewModel.SelectedPerson = personListViewModel.Persons.FirstOrDefault();
 }
Ejemplo n.º 21
0
        public void WeakEventHandlerTest()
        {
            var originalCollection = new ObservableCollection <MyModel>();
            var listView           = new ObservableListView <MyModel>(originalCollection);
            var weakListView       = new WeakReference(listView);

            originalCollection.Add(new MyModel());
            Assert.IsTrue(weakListView.IsAlive);

            listView = null;
            GC.Collect();
            Assert.IsNotNull(originalCollection);
            Assert.IsFalse(weakListView.IsAlive);
        }
Ejemplo n.º 22
0
        public void Initialize()
        {
            personViewModel.CreateNewEmailCommand = createNewEmailCommand;
            PropertyChangedEventManager.AddHandler(personViewModel, PersonViewModelPropertyChanged, "");

            PersonsView = new ObservableListView <Person>(entityService.Persons, filter: personListViewModel.Filter);
            personListViewModel.Persons               = PersonsView;
            personListViewModel.AddNewCommand         = addNewCommand;
            personListViewModel.RemoveCommand         = removeCommand;
            personListViewModel.CreateNewEmailCommand = createNewEmailCommand;
            PropertyChangedEventManager.AddHandler(personListViewModel, PersonListViewModelPropertyChanged, "");

            shellService.PersonListView = personListViewModel.View;
            shellService.PersonView     = personViewModel.View;

            personListViewModel.SelectedPerson = personListViewModel.Persons.FirstOrDefault();
        }
Ejemplo n.º 23
0
    public void Initialize()
    {
        bookViewModel.LendToCommand    = lendToCommand;
        bookViewModel.PropertyChanged += BookViewModelPropertyChanged;

        bookDataModels                     = new SynchronizingCollection <BookDataModel, Book>(entityService.Books, b => new BookDataModel(b, lendToCommand));
        BooksView                          = new ObservableListView <BookDataModel>(bookDataModels, null, bookListViewModel.Filter, null);
        bookListViewModel.Books            = BooksView;
        bookListViewModel.AddNewCommand    = addNewCommand;
        bookListViewModel.RemoveCommand    = removeCommand;
        bookListViewModel.PropertyChanged += BookListViewModelPropertyChanged;

        shellService.BookListView = bookListViewModel.View;
        shellService.BookView     = bookViewModel.View;

        bookListViewModel.SelectedBook = bookListViewModel.Books.FirstOrDefault();
    }
        public void EventMove()
        {               //****************************************
            var MySeed = Environment.TickCount;
            var MyRandom = new Random(MySeed);
            var MyRecords = new ObservableList <int>(1);
            NotifyCollectionChangedEventArgs MyFirstEventArgs = null, MySecondEventArgs = null;
            //****************************************

            var MyView = new ObservableListView <int>(MyRecords);

            for (int Index = 0; Index < 1024; Index++)
            {
                MyRecords.Add(MyRandom.Next(short.MaxValue));
            }

            MyView.CollectionChanged += (sender, e) => { if (MyFirstEventArgs == null)
                                                         {
                                                             MyFirstEventArgs = e;
                                                         }
                                                         else
                                                         {
                                                             MySecondEventArgs = e;
                                                         } };

            var OldValue = MyRecords[512];
            var NewValue = OldValue + 1024;

            MyRecords[512] = NewValue;

            //****************************************

            Assert.AreEqual(1024, MyView.Count, "Item count does not match");
            Assert.IsNotNull(MyFirstEventArgs, "No First Event Raised");
            Assert.AreEqual(NotifyCollectionChangedAction.Remove, MyFirstEventArgs.Action);
            Assert.IsNotNull(MySecondEventArgs, "No Second Event Raised");
            Assert.AreEqual(NotifyCollectionChangedAction.Add, MySecondEventArgs.Action);

            Assert.IsNotNull(MyFirstEventArgs.OldItems, "No Old Items");
            Assert.AreEqual(1, MyFirstEventArgs.OldItems.Count, "Old Items Count incorrect");
            Assert.AreEqual(OldValue, MyFirstEventArgs.OldItems[0], "Old Items Value incorrect");

            Assert.IsNotNull(MySecondEventArgs.NewItems, "No New Items");
            Assert.AreEqual(1, MySecondEventArgs.NewItems.Count, "New Items Count incorrect");
            Assert.AreEqual(NewValue, MySecondEventArgs.NewItems[0], "New Items Value incorrect");
        }
        public void ReplaceMaximumFilterSeed()
        {         //****************************************
            var MySeed    = 356114168;
            var MyRandom  = new Random(MySeed);
            var MyRecords = new ObservableList <int>(1024);
            //****************************************

            var MyView = new ObservableListView <int>(MyRecords, FilterLessThan512, 256);

            for (int Index = 0; Index < 1024; Index++)
            {
                MyRecords.Add(MyRandom.Next(short.MaxValue));
            }

            for (int Index = 0; Index < 1024; Index++)
            {
                var MyInnerRecords = MyRecords.Where(FilterLessThan512).ToArray();

                Array.Sort(MyInnerRecords);
                if (MyInnerRecords.Length > 256)
                {
                    Array.Resize(ref MyInnerRecords, 256);
                }

                CollectionAssert.AreEqual(MyInnerRecords, MyView, "Iteration {0}", Index);

                MyRecords[MyRandom.Next(1024)] = MyRandom.Next(short.MaxValue);
            }

            //****************************************

            var MySortedRecords = MyRecords.Where(FilterLessThan512).ToArray();

            Array.Sort(MySortedRecords);
            if (MySortedRecords.Length > 256)
            {
                Array.Resize(ref MySortedRecords, 256);
            }

            CollectionAssert.AreEqual(MySortedRecords, MyView, "Bad Seed was {0}", MySeed);

            Thread.Sleep(1);
        }
Ejemplo n.º 26
0
        public void DisposeTest()
        {
            var originalCollection = new ObservableCollection <MyModel>();
            var filterCalled       = false;
            var listView           = new ObservableListView <MyModel>(originalCollection, null, x =>
            {
                filterCalled = true;
                return(true);
            }, null);

            originalCollection.Add(new MyModel());
            Assert.IsTrue(filterCalled);

            // Calling dispose twice must not throw an exception.
            listView.Dispose();
            listView.Dispose();
            filterCalled = false;
            originalCollection.Add(new MyModel());
            Assert.IsFalse(filterCalled);
        }
Ejemplo n.º 27
0
        public void ConstructorTest()
        {
            var originalList          = new ObservableCollection <string>(new[] { "D", "A", "c", "b" });
            Predicate <string> filter = x => x != "c";
            Func <IEnumerable <string>, IOrderedEnumerable <string> > sort = x => x.OrderBy(y => y);
            var listView = new ObservableListView <string>(originalList, StringComparer.OrdinalIgnoreCase);

            listView.Filter = filter;
            listView.Sort   = sort;
            AssertHelper.SequenceEqual(new[] { "A", "b", "D" }, listView);
            listView.Dispose();

            listView = new ObservableListView <string>(originalList, StringComparer.OrdinalIgnoreCase, filter, sort);
            AssertHelper.SequenceEqual(new[] { "A", "b", "D" }, listView);
            Assert.AreSame(filter, listView.Filter);
            Assert.AreSame(sort, listView.Sort);
            listView.Dispose();

            AssertHelper.ExpectedException <ArgumentNullException>(() => new ObservableListView <string>(null !));
        }
 public MockSelectionService()
 {
     innerMusicFiles    = new ObservableCollection <MusicFileDataModel>();
     SelectedMusicFiles = new ObservableCollection <MusicFileDataModel>();
     MusicFiles         = new ObservableListView <MusicFileDataModel>(innerMusicFiles);
 }
Ejemplo n.º 29
0
 public void Initialize(IEnumerable <MusicFile> musicFiles)
 {
     MusicFiles = new ObservableListView <MusicFileDataModel>(
         new SynchronizingCollection <MusicFileDataModel, MusicFile>(musicFiles, x => new MusicFileDataModel(x)));
 }