public void CreateFromObservableCollections()
        {
            var ints = new ObservableCollection<ObservableCollection<int>>
                           {
                               new ObservableCollection<int>(new[] { 1, 2 }),
                               new ObservableCollection<int>(new[] { 3, 4 }),
                               new ObservableCollection<int>(new[] { 5, 6 })
                           };
            var view = new Lists2DView(ints);

            Assert.AreEqual(3, view.Count);

            var row0 = view[0];
            Assert.AreEqual(0, row0.Index);
            Assert.AreEqual(2, row0.Count);
            Assert.AreEqual(typeof(int), row0.GetProperties()[0].ComponentType);
            Assert.AreEqual(1, row0.GetProperties()[0].GetValue(row0));
            Assert.AreEqual(typeof(int), row0.GetProperties()[0].ComponentType);
            Assert.AreEqual(2, row0.GetProperties()[1].GetValue(row0));

            Assert.AreEqual(1, view[1].Index);
            Assert.AreEqual(2, view[1].Count);
            Assert.AreEqual(3, view[1].GetProperties()[0].GetValue(view[1]));
            Assert.AreEqual(4, view[1].GetProperties()[1].GetValue(view[1]));

            Assert.AreEqual(2, view[2].Index);
            Assert.AreEqual(2, view[2].Count);
            Assert.AreEqual(5, view[2].GetProperties()[0].GetValue(view[2]));
            Assert.AreEqual(6, view[2].GetProperties()[1].GetValue(view[2]));
        }
        public void CreateFromArrays()
        {
            var ints = new[] { new[] { 1, 2 }, new[] { 3, 4 }, new[] { 5, 6 } };
            var view = new Lists2DView(ints);

            Assert.AreEqual(3, view.Count);

            Assert.AreEqual(0, view[0].Index);
            Assert.AreEqual(2, view[0].Count);
            Assert.AreEqual(typeof(int), view[0].GetProperties()[0].ComponentType);
            Assert.AreEqual(false, view[0].GetProperties()[0].IsReadOnly);
            Assert.AreEqual(1, view[0].GetProperties()[0].GetValue(view[0]));
            Assert.AreEqual(false, view[0].GetProperties()[1].IsReadOnly);
            Assert.AreEqual(2, view[0].GetProperties()[1].GetValue(view[0]));

            Assert.AreEqual(1, view[1].Index);
            Assert.AreEqual(2, view[1].Count);
            Assert.AreEqual(false, view[1].GetProperties()[0].IsReadOnly);
            Assert.AreEqual(3, view[1].GetProperties()[0].GetValue(view[1]));
            Assert.AreEqual(false, view[1].GetProperties()[1].IsReadOnly);
            Assert.AreEqual(4, view[1].GetProperties()[1].GetValue(view[1]));

            Assert.AreEqual(2, view[2].Index);
            Assert.AreEqual(2, view[2].Count);
            Assert.AreEqual(false, view[2].GetProperties()[0].IsReadOnly);
            Assert.AreEqual(5, view[2].GetProperties()[0].GetValue(view[2]));
            Assert.AreEqual(false, view[2].GetProperties()[1].IsReadOnly);
            Assert.AreEqual(6, view[2].GetProperties()[1].GetValue(view[2]));
        }
示例#3
0
        public void CreateFromArrays()
        {
            var ints = new[] { new[] { 1, 2 }, new[] { 3, 4 }, new[] { 5, 6 } };

            using (var view = new Lists2DView(ints))
            {
                Assert.AreEqual(3, view.Count);

                Assert.AreEqual(0, view[0].Index);
                Assert.AreEqual(2, view[0].Count);
                Assert.AreEqual(typeof(int), view[0].GetProperties()[0].ComponentType);
                Assert.AreEqual(false, view[0].GetProperties()[0].IsReadOnly);
                Assert.AreEqual(1, view[0].GetProperties()[0].GetValue(view[0]));
                Assert.AreEqual(false, view[0].GetProperties()[1].IsReadOnly);
                Assert.AreEqual(2, view[0].GetProperties()[1].GetValue(view[0]));

                Assert.AreEqual(1, view[1].Index);
                Assert.AreEqual(2, view[1].Count);
                Assert.AreEqual(false, view[1].GetProperties()[0].IsReadOnly);
                Assert.AreEqual(3, view[1].GetProperties()[0].GetValue(view[1]));
                Assert.AreEqual(false, view[1].GetProperties()[1].IsReadOnly);
                Assert.AreEqual(4, view[1].GetProperties()[1].GetValue(view[1]));

                Assert.AreEqual(2, view[2].Index);
                Assert.AreEqual(2, view[2].Count);
                Assert.AreEqual(false, view[2].GetProperties()[0].IsReadOnly);
                Assert.AreEqual(5, view[2].GetProperties()[0].GetValue(view[2]));
                Assert.AreEqual(false, view[2].GetProperties()[1].IsReadOnly);
                Assert.AreEqual(6, view[2].GetProperties()[1].GetValue(view[2]));
            }
        }
        public void ColumnsReadOnly()
        {
            var ints = new[] { new[] { 1, 2 }, new[] { 3, 4 }, new[] { 5, 6 } };
            var view = new Lists2DView(ints);

            Assert.AreEqual(false, view[0].GetProperties()[0].IsReadOnly);
            Assert.AreEqual(false, view[0].GetProperties()[1].IsReadOnly);
            Assert.AreEqual(false, view[1].GetProperties()[0].IsReadOnly);
            Assert.AreEqual(false, view[1].GetProperties()[1].IsReadOnly);
            Assert.AreEqual(false, view[2].GetProperties()[0].IsReadOnly);
            Assert.AreEqual(false, view[2].GetProperties()[1].IsReadOnly);

            ints = new[] { new[] { 1 }, new[] { 3, 4 }, new[] { 5, 6 } };
            view = new Lists2DView(ints);
            Assert.AreEqual(false, view[0].GetProperties()[0].IsReadOnly);
            Assert.AreEqual(true, view[0].GetProperties()[1].IsReadOnly);
            Assert.AreEqual(false, view[1].GetProperties()[0].IsReadOnly);
            Assert.AreEqual(true, view[1].GetProperties()[1].IsReadOnly);
            Assert.AreEqual(false, view[2].GetProperties()[0].IsReadOnly);
            Assert.AreEqual(true, view[2].GetProperties()[1].IsReadOnly);

            ints = new[] { new[] { 1 }, new[] { 3 }, new[] { 5, 6 } };
            view = new Lists2DView(ints);
            Assert.AreEqual(false, view[0].GetProperties()[0].IsReadOnly);
            Assert.AreEqual(true, view[0].GetProperties()[1].IsReadOnly);
            Assert.AreEqual(false, view[1].GetProperties()[0].IsReadOnly);
            Assert.AreEqual(true, view[1].GetProperties()[1].IsReadOnly);
            Assert.AreEqual(false, view[2].GetProperties()[0].IsReadOnly);
            Assert.AreEqual(true, view[2].GetProperties()[1].IsReadOnly);
        }
示例#5
0
        public void CreateFromObservableCollections()
        {
            var ints = new ObservableCollection <ObservableCollection <int> >
            {
                new ObservableCollection <int>(new[] { 1, 2 }),
                new ObservableCollection <int>(new[] { 3, 4 }),
                new ObservableCollection <int>(new[] { 5, 6 })
            };

            using (var view = new Lists2DView(ints))
            {
                Assert.AreEqual(3, view.Count);

                var row0 = view[0];
                Assert.AreEqual(0, row0.Index);
                Assert.AreEqual(2, row0.Count);
                Assert.AreEqual(typeof(int), row0.GetProperties()[0].ComponentType);
                Assert.AreEqual(1, row0.GetProperties()[0].GetValue(row0));
                Assert.AreEqual(typeof(int), row0.GetProperties()[0].ComponentType);
                Assert.AreEqual(2, row0.GetProperties()[1].GetValue(row0));

                Assert.AreEqual(1, view[1].Index);
                Assert.AreEqual(2, view[1].Count);
                Assert.AreEqual(3, view[1].GetProperties()[0].GetValue(view[1]));
                Assert.AreEqual(4, view[1].GetProperties()[1].GetValue(view[1]));

                Assert.AreEqual(2, view[2].Index);
                Assert.AreEqual(2, view[2].Count);
                Assert.AreEqual(5, view[2].GetProperties()[0].GetValue(view[2]));
                Assert.AreEqual(6, view[2].GetProperties()[1].GetValue(view[2]));
            }
        }
 public void Edit(int r, int c, int value)
 {
     var ints = new[] { new[] { 1, 2 }, new[] { 3, 4 }, new[] { 5, 6 } };
     var view = new Lists2DView(ints);
     var row = view[r];
     var property = row.GetProperties()[c];
     property.SetValue(row, value);
     Assert.AreEqual(value, ints[r][c]);
     Assert.AreEqual(value, property.GetValue(row));
 }
        public void Edit(int r, int c, int value)
        {
            var ints     = new[] { new[] { 1, 2 }, new[] { 3, 4 }, new[] { 5, 6 } };
            var view     = new Lists2DView(ints);
            var row      = view[r];
            var property = row.GetProperties()[c];

            property.SetValue(row, value);
            Assert.AreEqual(value, ints[r][c]);
            Assert.AreEqual(value, property.GetValue(row));
        }
示例#8
0
        public static void ObservesAndNotifies()
        {
            var ints = new ObservableCollection <ObservableCollection <int> >
            {
                new ObservableCollection <int>(new[] { 1, 2 }),
                new ObservableCollection <int>(new[] { 3, 4 }),
                new ObservableCollection <int>(new[] { 5, 6 }),
            };

            using var view = new Lists2DView(ints);
            var expectedPropertyChanges = new List <string>();

            ((INotifyPropertyChanged)ints).PropertyChanged += (_, e) => expectedPropertyChanges.Add(e.PropertyName);
            var actualPropertyChanges = new List <string>();

            view.PropertyChanged += (_, e) => actualPropertyChanges.Add(e.PropertyName);

            var expectedCollectionChanges = new List <NotifyCollectionChangedEventArgs>();

            ints.CollectionChanged += (_, e) => expectedCollectionChanges.Add(e);
            var actualCollectionChanges = new List <NotifyCollectionChangedEventArgs>();

            view.CollectionChanged += (_, e) => actualCollectionChanges.Add(e);
            ints.Add(new ObservableCollection <int>(new[] { 7, 8 }));

            CollectionAssert.AreEqual(expectedPropertyChanges, actualPropertyChanges);
            CollectionAssert.AreEqual(expectedCollectionChanges, actualCollectionChanges, CollectionChangedEventArgsComparer.Default);
            Assert.AreEqual(4, view.Count);

            Assert.AreEqual(0, view[0].Index);
            Assert.AreEqual(2, view[0].Count);
            Assert.AreEqual(typeof(int), view[0].GetProperties()[0].ComponentType);
            Assert.AreEqual(1, view[0].GetProperties()[0].GetValue(view[0]));
            Assert.AreEqual(2, view[0].GetProperties()[1].GetValue(view[0]));

            Assert.AreEqual(1, view[1].Index);
            Assert.AreEqual(2, view[1].Count);
            Assert.AreEqual(3, view[1].GetProperties()[0].GetValue(view[1]));
            Assert.AreEqual(4, view[1].GetProperties()[1].GetValue(view[1]));

            Assert.AreEqual(2, view[2].Index);
            Assert.AreEqual(2, view[2].Count);
            Assert.AreEqual(5, view[2].GetProperties()[0].GetValue(view[2]));
            Assert.AreEqual(6, view[2].GetProperties()[1].GetValue(view[2]));

            Assert.AreEqual(3, view[3].Index);
            Assert.AreEqual(2, view[3].Count);
            Assert.AreEqual(7, view[3].GetProperties()[0].GetValue(view[3]));
            Assert.AreEqual(8, view[3].GetProperties()[1].GetValue(view[3]));
        }
            public void SignalsWhenColumnIsRemoved2()
            {
                var ints = new ObservableCollection<ObservableCollection<int>>
                           {
                               new ObservableCollection<int>(new[] {2}),
                               new ObservableCollection<int>(new[] {3}),
                               new ObservableCollection<int>(new[] {5, 6})
                           };

                var view = new Lists2DView(ints);
                int count = 0;
                view.ColumnsChanged += (_, __) => count++;
                ints.RemoveAt(2);
                Assert.AreEqual(1, count);
            }
            public void SignalsWhenColumnIsAdded()
            {
                var ints = new ObservableCollection<ObservableCollection<int>>
                           {
                               new ObservableCollection<int>(new[] {2, 3}),
                               new ObservableCollection<int>(new[] {3, 4}),
                               new ObservableCollection<int>(new[] {5, 6})
                           };

                var view = new Lists2DView(ints);
                int count = 0;
                view.ColumnsChanged += (_, __) => count++;
                ints[0].Add(9);
                Assert.AreEqual(1, count);
            }
            public void SignalsWhenColumnBecomesReadOnly()
            {
                var ints = new ObservableCollection <ObservableCollection <int> >
                {
                    new ObservableCollection <int>(new[] { 1, 2 }),
                    new ObservableCollection <int>(new[] { 3, 4 }),
                    new ObservableCollection <int>(new[] { 5, 6 })
                };

                var view  = new Lists2DView(ints);
                int count = 0;

                view.ColumnsChanged += (_, __) => count++;
                ints[0].RemoveAt(0);
                Assert.AreEqual(1, count);
            }
            public void SignalsWhenColumnIsRemoved2()
            {
                var ints = new ObservableCollection <ObservableCollection <int> >
                {
                    new ObservableCollection <int>(new[] { 2 }),
                    new ObservableCollection <int>(new[] { 3 }),
                    new ObservableCollection <int>(new[] { 5, 6 })
                };

                var view  = new Lists2DView(ints);
                int count = 0;

                view.ColumnsChanged += (_, __) => count++;
                ints.RemoveAt(2);
                Assert.AreEqual(1, count);
            }
示例#13
0
            public static void SignalsWhenColumnBecomesEditable()
            {
                var ints = new ObservableCollection <ObservableCollection <int> >
                {
                    new ObservableCollection <int>(new[] { 2 }),
                    new ObservableCollection <int>(new[] { 3, 4 }),
                    new ObservableCollection <int>(new[] { 5, 6 }),
                };

                using var view = new Lists2DView(ints);
                var count = 0;

                view.ColumnsChanged += (_, __) => count++;
                ints[0].Add(9);
                Assert.AreEqual(1, count);
            }
            public void SignalsWhenColumnIsAdded()
            {
                var ints = new ObservableCollection <ObservableCollection <int> >
                {
                    new ObservableCollection <int>(new[] { 2, 3 }),
                    new ObservableCollection <int>(new[] { 3, 4 }),
                    new ObservableCollection <int>(new[] { 5, 6 })
                };

                var view  = new Lists2DView(ints);
                int count = 0;

                view.ColumnsChanged += (_, __) => count++;
                ints[0].Add(9);
                Assert.AreEqual(1, count);
            }
示例#15
0
            public static void SignalsWhenColumnIsAdded2()
            {
                var ints = new ObservableCollection <ObservableCollection <int> >
                {
                    new ObservableCollection <int>(new[] { 2, 3 }),
                    new ObservableCollection <int>(new[] { 3, 4 }),
                    new ObservableCollection <int>(new[] { 5, 6 }),
                };

                using var view = new Lists2DView(ints);
                var count = 0;

                view.ColumnsChanged += (_, __) => count++;
                ints.Add(new ObservableCollection <int>(new[] { 1, 2, 3 }));
                Assert.AreEqual(1, count);
            }
            public void NoChangeWhenAlreadyReadOnly()
            {
                var ints = new ObservableCollection <ObservableCollection <int> >
                {
                    new ObservableCollection <int>(new[] { 2 }),
                    new ObservableCollection <int>(new[] { 3, 4 }),
                    new ObservableCollection <int>(new[] { 5, 6 })
                };

                var view  = new Lists2DView(ints);
                int count = 0;

                view.ColumnsChanged += (_, __) => count++;
                ints[1].RemoveAt(0);
                Assert.AreEqual(0, count);
            }
示例#17
0
            public static void SignalsWhenColumnIsRemoved()
            {
                var ints = new ObservableCollection <ObservableCollection <int> >
                {
                    new ObservableCollection <int>(new[] { 2 }),
                    new ObservableCollection <int>(new[] { 3 }),
                    new ObservableCollection <int>(new[] { 5, 6 }),
                };

                using (var view = new Lists2DView(ints))
                {
                    var count = 0;
                    view.ColumnsChanged += (_, __) => count++;
                    ints[2].RemoveAt(0);
                    Assert.AreEqual(1, count);
                }
            }
            public void NoChangeWhenUpdateCell()
            {
                var ints = new ObservableCollection <ObservableCollection <int> >
                {
                    new ObservableCollection <int>(new[] { 1 }),
                    new ObservableCollection <int>(new[] { 3, 4 }),
                    new ObservableCollection <int>(new[] { 5, 6 })
                };

                var view  = new Lists2DView(ints);
                int count = 0;

                view.ColumnsChanged += (_, __) => count++;
                ints[0][0]++;
                Assert.AreEqual(0, count);

                ints[1][0]++;
                Assert.AreEqual(0, count);

                ints[2][1]++;
                Assert.AreEqual(0, count);
            }
        public void ColumnsReadOnly()
        {
            var ints = new[] { new[] { 1, 2 }, new[] { 3, 4 }, new[] { 5, 6 } };
            var view = new Lists2DView(ints);
            Assert.AreEqual(false, view[0].GetProperties()[0].IsReadOnly);
            Assert.AreEqual(false, view[0].GetProperties()[1].IsReadOnly);
            Assert.AreEqual(false, view[1].GetProperties()[0].IsReadOnly);
            Assert.AreEqual(false, view[1].GetProperties()[1].IsReadOnly);
            Assert.AreEqual(false, view[2].GetProperties()[0].IsReadOnly);
            Assert.AreEqual(false, view[2].GetProperties()[1].IsReadOnly);

            ints = new[] { new[] { 1 }, new[] { 3, 4 }, new[] { 5, 6 } };
            view = new Lists2DView(ints);
            Assert.AreEqual(false, view[0].GetProperties()[0].IsReadOnly);
            Assert.AreEqual(true, view[0].GetProperties()[1].IsReadOnly);
            Assert.AreEqual(false, view[1].GetProperties()[0].IsReadOnly);
            Assert.AreEqual(true, view[1].GetProperties()[1].IsReadOnly);
            Assert.AreEqual(false, view[2].GetProperties()[0].IsReadOnly);
            Assert.AreEqual(true, view[2].GetProperties()[1].IsReadOnly);

            ints = new[] { new[] { 1 }, new[] { 3 }, new[] { 5, 6 } };
            view = new Lists2DView(ints);
            Assert.AreEqual(false, view[0].GetProperties()[0].IsReadOnly);
            Assert.AreEqual(true, view[0].GetProperties()[1].IsReadOnly);
            Assert.AreEqual(false, view[1].GetProperties()[0].IsReadOnly);
            Assert.AreEqual(true, view[1].GetProperties()[1].IsReadOnly);
            Assert.AreEqual(false, view[2].GetProperties()[0].IsReadOnly);
            Assert.AreEqual(true, view[2].GetProperties()[1].IsReadOnly);
        }
        public void ObservesAndNotifies()
        {
            var ints = new ObservableCollection<ObservableCollection<int>>
                           {
                               new ObservableCollection<int>(new[] { 1, 2 }),
                               new ObservableCollection<int>(new[] { 3, 4 }),
                               new ObservableCollection<int>(new[] { 5, 6 })
                           };
            var view = new Lists2DView(ints);

            var expectedPropertyChanges = new List<string>();
            ((INotifyPropertyChanged)ints).PropertyChanged += (_, e) => expectedPropertyChanges.Add(e.PropertyName);
            var actualPropertyChanges = new List<string>();
            view.PropertyChanged += (_, e) => actualPropertyChanges.Add(e.PropertyName);

            var expectedCollectionChanges = new List<NotifyCollectionChangedEventArgs>();
            ints.CollectionChanged += (_, e) => expectedCollectionChanges.Add(e);
            var actualCollectionChanges = new List<NotifyCollectionChangedEventArgs>();
            view.CollectionChanged += (_, e) => actualCollectionChanges.Add(e);
            ints.Add(new ObservableCollection<int>(new[] { 7, 8 }));

            CollectionAssert.AreEqual(expectedPropertyChanges, actualPropertyChanges);
            CollectionAssert.AreEqual(expectedCollectionChanges, actualCollectionChanges, CollectionChangedEventArgsComparer.Default);
            Assert.AreEqual(4, view.Count);

            Assert.AreEqual(0, view[0].Index);
            Assert.AreEqual(2, view[0].Count);
            Assert.AreEqual(typeof(int), view[0].GetProperties()[0].ComponentType);
            Assert.AreEqual(1, view[0].GetProperties()[0].GetValue(view[0]));
            Assert.AreEqual(2, view[0].GetProperties()[1].GetValue(view[0]));

            Assert.AreEqual(1, view[1].Index);
            Assert.AreEqual(2, view[1].Count);
            Assert.AreEqual(3, view[1].GetProperties()[0].GetValue(view[1]));
            Assert.AreEqual(4, view[1].GetProperties()[1].GetValue(view[1]));

            Assert.AreEqual(2, view[2].Index);
            Assert.AreEqual(2, view[2].Count);
            Assert.AreEqual(5, view[2].GetProperties()[0].GetValue(view[2]));
            Assert.AreEqual(6, view[2].GetProperties()[1].GetValue(view[2]));

            Assert.AreEqual(3, view[3].Index);
            Assert.AreEqual(2, view[3].Count);
            Assert.AreEqual(7, view[3].GetProperties()[0].GetValue(view[3]));
            Assert.AreEqual(8, view[3].GetProperties()[1].GetValue(view[3]));
        }
            public void SignalsWhenColumnBecomesReadOnly()
            {
                var ints = new ObservableCollection<ObservableCollection<int>>
                           {
                               new ObservableCollection<int>(new[] {1, 2}),
                               new ObservableCollection<int>(new[] {3, 4}),
                               new ObservableCollection<int>(new[] {5, 6})
                           };

                var view = new Lists2DView(ints);
                int count = 0;
                view.ColumnsChanged += (_, __) => count++;
                ints[0].RemoveAt(0);
                Assert.AreEqual(1, count);
            }
            public void NoChangeWhenUpdateCell()
            {
                var ints = new ObservableCollection<ObservableCollection<int>>
                           {
                               new ObservableCollection<int>(new[] {1}),
                               new ObservableCollection<int>(new[] {3, 4}),
                               new ObservableCollection<int>(new[] {5, 6})
                           };

                var view = new Lists2DView(ints);
                int count = 0;
                view.ColumnsChanged += (_, __) => count++;
                ints[0][0]++;
                Assert.AreEqual(0, count);

                ints[1][0]++;
                Assert.AreEqual(0, count);

                ints[2][1]++;
                Assert.AreEqual(0, count);
            }
            public void NoChangeWhenAlreadyReadOnly()
            {
                var ints = new ObservableCollection<ObservableCollection<int>>
                           {
                               new ObservableCollection<int>(new[] {2}),
                               new ObservableCollection<int>(new[] {3, 4}),
                               new ObservableCollection<int>(new[] {5, 6})
                           };

                var view = new Lists2DView(ints);
                int count = 0;
                view.ColumnsChanged += (_, __) => count++;
                ints[1].RemoveAt(0);
                Assert.AreEqual(0, count);
            }