public void UnsubscribePropertyChanged()
        {
            var testNotifyPropertyChangedObject = new TestNotifyPropertyChangedObject();

            IMultiDimensionalArray<TestNotifyPropertyChangedObject> array =
                new MultiDimensionalArray<TestNotifyPropertyChangedObject>();
            
            //remove the item from the array
            array.Insert(0, testNotifyPropertyChangedObject);
            TestHelper.AssertPropertyChangedIsFired((INotifyPropertyChanged)array, 1, testNotifyPropertyChangedObject.FireChanged);

            array.Remove(testNotifyPropertyChangedObject);
            TestHelper.AssertPropertyChangedIsFired((INotifyPropertyChanged)array, 0, testNotifyPropertyChangedObject.FireChanged);

            //reinsert & replace
            array.Insert(0,testNotifyPropertyChangedObject);
            array[0] = new TestNotifyPropertyChangedObject {Name = "new"};
            TestHelper.AssertPropertyChangedIsFired((INotifyPropertyChanged)array, 0, testNotifyPropertyChangedObject.FireChanged);

            //removeat 
            array.Insert(0, testNotifyPropertyChangedObject);
            array.RemoveAt(0);
            TestHelper.AssertPropertyChangedIsFired((INotifyPropertyChanged)array, 0, testNotifyPropertyChangedObject.FireChanged);

        }
 public void ReadOnlyInsert()
 {
     var array = new MultiDimensionalArray(true, false, 1, new int[1]);
     array.Insert(0, 2);
 }
        public void BubblePropertyChangedOfInsertObject2()
        {
            var testNotifyPropertyChangedObject = new TestNotifyPropertyChangedObject();

            var array = new MultiDimensionalArray<TestNotifyPropertyChangedObject>
            {
                IsAutoSorted = false
            };
            array.Insert(0, testNotifyPropertyChangedObject);

            TestHelper.AssertPropertyChangedIsFired((INotifyPropertyChanged)array, 1, testNotifyPropertyChangedObject.FireChanged);
        }
        public void UpdateMinMax()
        {
            var array = new MultiDimensionalArray<double>();
            Assert.IsNull(array.MinValue);
            Assert.IsNull(array.MaxValue);

            //action! change the array
            array.Add(0.0d);

            //assert min max got updated
            Assert.AreEqual(0.0d,array.MinValue);
            Assert.AreEqual(0.0d, array.MaxValue);

            //make sure we got insert covered
            array.Insert(1,1.0d);
            Assert.AreEqual(1.0d, array.MaxValue);
        }