Beispiel #1
0
        public void ReduceOnWrongDimensionThrowsAnException()
        {
            var array    = new MultiDimensionalArray(3, 3);
            var subArray = array.Select(0, 0, 1);

            subArray.Reduce[0] = true; //try to reduce the first dimension
        }
Beispiel #2
0
        public void ReduceArray()
        {
            // create a 2D grid and slice rows and columns
            // 1 2 3
            // 4 5 6
            // 7 8 9
            IMultiDimensionalArray array = new MultiDimensionalArray(3, 3);

            array[0, 0] = 1;
            array[0, 1] = 2;
            array[0, 2] = 3;
            array[1, 0] = 4;
            array[1, 1] = 5;
            array[1, 2] = 6;
            array[2, 0] = 7;
            array[2, 1] = 8;
            array[2, 2] = 9;
            //create a reduced array containing the first row
            var view = array.Select(0, 0, 0);

            view.Reduce[0] = true; //reduce the x dimension
            Assert.AreEqual(1, view.Rank);
            Assert.AreEqual(new[] { 3 }, view.Shape);
            Assert.AreEqual(2, view[1]);
        }
Beispiel #3
0
        public void SelectOnMultipleIndexes()
        {
            // more complex example (isn't it another test?)
            var array = new MultiDimensionalArray(3, 3);

            // 1 9 2     1   2
            // 9 9 9 ==>
            // 3 9 4     3   4
            array[0, 0] = 1;
            array[0, 1] = 9;
            array[0, 2] = 2;
            array[1, 0] = 9;
            array[1, 1] = 9;
            array[1, 2] = 9;
            array[2, 0] = 3;
            array[2, 1] = 9;
            array[2, 2] = 4;

            IMultiDimensionalArrayView view = array.Select(0, new[] { 0, 2 }).Select(1, new[] { 0, 2 });

            Assert.IsTrue(new[] { 2, 2 }.SequenceEqual(view.Shape));
            Assert.AreEqual(4, view.Count);
            Assert.AreEqual(1, view[0, 0]);
            Assert.AreEqual(2, view[0, 1]);
            Assert.AreEqual(3, view[1, 0]);
            Assert.AreEqual(4, view[1, 1]);
        }
Beispiel #4
0
        public void TestVariableOwnerForSubArray()
        {
            //test on class because our MDA interface does not have owner.
            //test here and not in MDA because owner is a variable
            IMultiDimensionalArray array = new MultiDimensionalArray(3, 3);

            array[1, 1] = 5;
            ((MultiDimensionalArray)array).Owner = new Variable <double>("x");
            array = array.Select(0, 0, 2).Select(1, 0, 2);
            Assert.AreEqual(5, array[1, 1]);
        }
Beispiel #5
0
        public void GenericFiltered()
        {
            IMultiDimensionalArray <double> array = new MultiDimensionalArray <double>(3);

            array[0] = 1;
            array[1] = 2;
            array[2] = 3;

            var view = array.Select(0, new[] { 1 });

            Assert.AreEqual(2, view[0]);
        }
Beispiel #6
0
        public void IndexOf()
        {
            IMultiDimensionalArray <double> array = new MultiDimensionalArray <double>(3);

            array[0] = 1;
            array[1] = 2;
            array[2] = 3;

            var view = array.Select(0, new[] { 1 });

            Assert.AreEqual(0, view.IndexOf(2));
        }
Beispiel #7
0
        public void Remove()
        {
            IMultiDimensionalArray <double> array = new MultiDimensionalArray <double>(3);

            array[0] = 1;
            array[1] = 2;
            array[2] = 3;

            var view = array.Select(0, new[] { 1 });

            view.Remove(2);
            Assert.AreEqual(2, array.Count);
            Assert.AreEqual(new[] { 1.0, 3.0 }, array);
        }
Beispiel #8
0
        public void ResizeParentAndUpdateShapeOfSubArray()
        {
            //create a 2D grid of 3x3
            IMultiDimensionalArray array = new MultiDimensionalArray(3, 3);

            //select rows [1, 2). So skip the first row
            IMultiDimensionalArray subArray = array.Select(0, 1, int.MaxValue);

            Assert.IsTrue(subArray.Shape.SequenceEqual(new[] { 2, 3 }));

            //resize the parent. Add one row and one column. Check the shape of the subArray changes
            array.Resize(new[] { 4, 4 });
            Assert.IsTrue(subArray.Shape.SequenceEqual(new[] { 3, 4 }));
        }
Beispiel #9
0
        public void Clone()
        {
            IMultiDimensionalArray <double> array = new MultiDimensionalArray <double>(3);

            array[0] = 1;
            array[1] = 2;
            array[2] = 3;

            var view = array.Select(0, 1, 1);

            var clonedView = (IMultiDimensionalArrayView)view.Clone();

            Assert.IsTrue(view.OffsetStart.SequenceEqual(clonedView.OffsetStart));
            Assert.IsTrue(view.OffsetEnd.SequenceEqual(clonedView.OffsetEnd));
        }
Beispiel #10
0
        public void InsertAt()
        {
            IMultiDimensionalArray <double> array = new MultiDimensionalArray <double>(6);

            array[0] = 1;
            array[1] = 2;
            array[2] = 3;
            array[3] = 4;
            array[4] = 5;
            array[5] = 6;

            var view = array.Select(0, new[] { 0, 2, 4 });

            view.InsertAt(0, 3);                                                 //insert at end
            Assert.AreEqual(7, array.Count);
            Assert.AreEqual(new[] { 1.0, 2.0, 3.0, 4.0, 5.0, 0.0, 6.0 }, array); //Ambiguous!
        }
Beispiel #11
0
        public void SelectUsingIndexes()
        {
            IMultiDimensionalArray array = new MultiDimensionalArray(3);

            array[0] = 1;
            array[1] = 2;
            array[2] = 3;

            IMultiDimensionalArrayView view = array.Select(0, new[] { 0, 2 });

            // Select first and last element
            Assert.AreEqual(2, view.Count);
            Assert.AreEqual(1, view[0]);
            Assert.AreEqual(3, view[1]);

            Assert.AreEqual(3, view.MaxValue);
            Assert.AreEqual(1, view.MinValue);
        }
Beispiel #12
0
        public void SelectARow()
        {
            var array = new MultiDimensionalArray(2, 3);

            // 1 2 3     1 2 3
            // 4 5 6 ==>

            array[0, 0] = 1;
            array[0, 1] = 2;
            array[0, 2] = 3;
            array[1, 0] = 4;
            array[1, 1] = 5;
            array[1, 2] = 6;
            // select the first index of the first dimension (e.g. the row)
            var row = array.Select(0, new[] { 0 });

            row.Reduce[0] = true;
            Assert.AreEqual(new[] { 1, 2, 3 }, row);
        }
        public void Bind3DArrayUsing2DView()
        {
            IMultiDimensionalArray array = new MultiDimensionalArray(3, 3, 3);
            array[0, 0, 0] = 1;
            array[1, 1, 1] = 2;

            IMultiDimensionalArrayView view = array.Select(0, 0, 0);
            view.Reduce[0] = true; // reduce 1st dimension

            DataGridView gridView = new DataGridView();

            MultiDimensionalArrayBindingList multiDimensionalArrayBindingList = new MultiDimensionalArrayBindingList(view);
            gridView.DataSource = multiDimensionalArrayBindingList;

            Form form = new Form();
            gridView.Dock = DockStyle.Fill;
            form.Controls.Add(gridView);
            
            WindowsFormsTestHelper.ShowModal(form);
        }
Beispiel #14
0
        public void OutOfRangeForChildArray()
        {
            ///create a 2D grid and slice rows and columns
            /// 1 2
            /// 3 4
            IMultiDimensionalArray array = new MultiDimensionalArray(2, 2);

            array[0, 0] = 1;
            array[0, 1] = 2;
            array[1, 0] = 4;
            array[1, 1] = 5;

            //create a subarray of the top left corner
            // 1 |2|
            // 4 |5|
            //
            IMultiDimensionalArray subArray = array.Select(1, 1, 1);

            subArray[1, 1] = 5; // <= exception
        }
Beispiel #15
0
        public void MoveDimensionAtGivenIndexAndLength()
        {
            var values = new List <int> {
                1, 2, 3, 4
            };
            IMultiDimensionalArray <int> array = new MultiDimensionalArray <int>(values, new[] { 1, 4 });

            var view = array.Select(1, 2, 3); // select { 1, 2, [3, 4] }

            // move 2nd dimension index
            var dimension  = 1;
            var startIndex = 1;
            var length     = 2;
            var newIndex   = 0;

            array.Move(dimension, startIndex, length, newIndex); // 1, 2, 3, 4  => 2, 3, 1, 4

            //  2, 3, [1, 4]
            Assert.IsTrue(view.SequenceEqual(new[] { 1, 4 }));
        }
Beispiel #16
0
        public void UseEnumeratorOnMultiDimensionalArrayView()
        {
            // Setup an array
            // 1 2 -
            // 3 4 -
            // - - -
            IMultiDimensionalArray <double> array = new MultiDimensionalArray <double>(3, 3);

            array[0, 0] = 1;
            array[0, 1] = 2;
            array[1, 0] = 3;
            array[1, 1] = 4;

            // make a selection of the top right corner
            IMultiDimensionalArray <double> view = array.Select(0, 0, 1).Select(1, 0, 1);

            Assert.IsTrue(new[] { 2, 2 }.SequenceEqual(view.Shape));

            // since array supports enumerator - we can enumerate throuth all values as 1D array
            Assert.IsTrue(new double[] { 1, 2, 3, 4 }.SequenceEqual(view));
        }
Beispiel #17
0
        public void ReducedIndexing()
        {
            IMultiDimensionalArray <double> array = new MultiDimensionalArray <double>(1, 3);

            array[0, 0] = 1;
            array[0, 1] = 2;
            array[0, 2] = 3;

            var view = array.Select(0, int.MinValue, int.MaxValue);

            view.SelectedIndexes[0] = new int[] { 0 };
            view.SelectedIndexes[1] = new int[] { 1 };
            view.Reduce[0]          = true; //reduce the x dimension
            //one element
            Assert.AreEqual(1, view.Count);
            //rank and shape are one
            Assert.AreEqual(1, view.Rank);
            Assert.AreEqual(new[] { 1 }, view.Shape);

            //get the value
            Assert.AreEqual(2, view[0]);
        }
Beispiel #18
0
        public void Bind3DArrayUsing2DView()
        {
            IMultiDimensionalArray array = new MultiDimensionalArray(3, 3, 3);

            array[0, 0, 0] = 1;
            array[1, 1, 1] = 2;

            IMultiDimensionalArrayView view = array.Select(0, 0, 0);

            view.Reduce[0] = true; // reduce 1st dimension

            DataGridView gridView = new DataGridView();

            MultiDimensionalArrayBindingList multiDimensionalArrayBindingList = new MultiDimensionalArrayBindingList(view);

            gridView.DataSource = multiDimensionalArrayBindingList;

            Form form = new Form();

            gridView.Dock = DockStyle.Fill;
            form.Controls.Add(gridView);

            WindowsFormsTestHelper.ShowModal(form);
        }
        public void GenericFiltered()
        {
            IMultiDimensionalArray<double> array = new MultiDimensionalArray<double>(3);
            array[0] = 1;
            array[1] = 2;
            array[2] = 3;

            var view = array.Select(0, new[] {1});
            Assert.AreEqual(2, view[0]);
        }
        public void IndexOf()
        {
            IMultiDimensionalArray<double> array = new MultiDimensionalArray<double>(3);
            array[0] = 1;
            array[1] = 2;
            array[2] = 3;

            var view = array.Select(0, new[] { 1 });
            Assert.AreEqual(0, view.IndexOf(2));
        }
        public void OutOfRangeForChildArray()
        {
            ///create a 2D grid and slice rows and columns
            /// 1 2
            /// 3 4
            IMultiDimensionalArray array = new MultiDimensionalArray(2, 2);
            array[0, 0] = 1;
            array[0, 1] = 2;
            array[1, 0] = 4;
            array[1, 1] = 5;

            //create a subarray of the top left corner
            // 1 |2|
            // 4 |5|
            //
            IMultiDimensionalArray subArray = array.Select(1, 1, 1);

            subArray[1, 1] = 5; // <= exception
        }
Beispiel #22
0
        public void Select()
        {
            // create a 2D grid and slice rows and columns
            //
            // 1 2 3
            // 4 5 6
            // 7 8 9
            //
            IMultiDimensionalArray array = new MultiDimensionalArray(3, 3);

            array[0, 0] = 1; // row 0
            array[0, 1] = 2;
            array[0, 2] = 3;

            array[1, 0] = 4; // row 1
            array[1, 1] = 5;
            array[1, 2] = 6;

            array[2, 0] = 7; // row 2
            array[2, 1] = 8;
            array[2, 2] = 9;
            Assert.AreEqual(9, array.Count);
            Assert.AreEqual(2, array[0, 1]);
            IMultiDimensionalArrayView subArray;

            // a new array is the middle column of our grid
            //
            // 1 [2] 3
            // 4 [5] 6
            // 7 [8] 9
            //    ^
            subArray = array.Select(new[] { int.MinValue, 1 }, new[] { int.MaxValue, 1 });

            Assert.AreEqual(3, subArray.Shape[0]);
            Assert.AreEqual(1, subArray.Shape[1]);
            Assert.AreEqual(int.MinValue, subArray.OffsetStart[0]);
            Assert.AreEqual(int.MaxValue, subArray.OffsetEnd[0]);
            Assert.AreEqual(1, subArray.OffsetStart[1]);
            Assert.AreEqual(1, subArray.OffsetEnd[1]);
            // check values
            Assert.AreEqual(2, subArray[0, 0]);
            Assert.AreEqual(5, subArray[1, 0]);
            Assert.AreEqual(8, subArray[2, 0]);

            // 1 [2] 3
            // 4 [5] 6
            // 7 [8] 9
            //    ^
            subArray = array.Select(1, 1, 1); // select 2st column, slicing

            Assert.AreEqual(3, subArray.Shape[0]);
            Assert.AreEqual(1, subArray.Shape[1]);
            Assert.AreEqual(int.MinValue, subArray.OffsetStart[0]);
            Assert.AreEqual(int.MaxValue, subArray.OffsetEnd[0]);
            Assert.AreEqual(1, subArray.OffsetStart[1]);
            Assert.AreEqual(1, subArray.OffsetEnd[1]);

            // 1 [2 3)
            // 4 [5 6)
            // 7 [8 9)
            //    ^

            subArray = array.Select(1, 1, int.MaxValue);

            Assert.AreEqual(3, subArray.Shape[0]);
            Assert.AreEqual(2, subArray.Shape[1]);
            Assert.AreEqual(int.MinValue, subArray.OffsetStart[0]);
            Assert.AreEqual(int.MaxValue, subArray.OffsetEnd[0]);

            Assert.AreEqual(1, subArray.OffsetStart[1]);
            Assert.AreEqual(int.MaxValue, subArray.OffsetEnd[1]);
        }
 public void ReduceArray()
 {
     // create a 2D grid and slice rows and columns
     // 1 2 3
     // 4 5 6
     // 7 8 9
     IMultiDimensionalArray array = new MultiDimensionalArray(3, 3);
     array[0, 0] = 1;
     array[0, 1] = 2;
     array[0, 2] = 3;
     array[1, 0] = 4;
     array[1, 1] = 5;
     array[1, 2] = 6;
     array[2, 0] = 7;
     array[2, 1] = 8;
     array[2, 2] = 9;
     //create a reduced array containing the first row
     var view = array.Select(0, 0, 0);
     view.Reduce[0] = true; //reduce the x dimension
     Assert.AreEqual(1, view.Rank);
     Assert.AreEqual(new[] {3}, view.Shape);
     Assert.AreEqual(2, view[1]);
 }
 public void ReduceOnWrongDimensionThrowsAnException()
 {
     var array = new MultiDimensionalArray(3, 3);
     var subArray = array.Select(0, 0, 1);
     subArray.Reduce[0] = true; //try to reduce the first dimension
 }
        public void InsertAt()
        {
            IMultiDimensionalArray<double> array = new MultiDimensionalArray<double>(6);
            array[0] = 1;
            array[1] = 2;
            array[2] = 3;
            array[3] = 4;
            array[4] = 5;
            array[5] = 6;

            var view = array.Select(0, new[] {0, 2, 4});
            view.InsertAt(0, 3); //insert at end
            Assert.AreEqual(7, array.Count);
            Assert.AreEqual(new[] { 1.0, 2.0, 3.0, 4.0, 5.0, 0.0, 6.0}, array); //Ambiguous!
        }
        public void Select()
        {
            // create a 2D grid and slice rows and columns
            //
            // 1 2 3
            // 4 5 6
            // 7 8 9
            //
            IMultiDimensionalArray array = new MultiDimensionalArray(3, 3);

            array[0, 0] = 1; // row 0
            array[0, 1] = 2;
            array[0, 2] = 3;

            array[1, 0] = 4; // row 1
            array[1, 1] = 5;
            array[1, 2] = 6;

            array[2, 0] = 7; // row 2
            array[2, 1] = 8;
            array[2, 2] = 9;
            Assert.AreEqual(9, array.Count);
            Assert.AreEqual(2, array[0, 1]);
            IMultiDimensionalArrayView subArray;

            // a new array is the middle column of our grid
            //
            // 1 [2] 3
            // 4 [5] 6
            // 7 [8] 9
            //    ^
            subArray = array.Select(new[] {int.MinValue, 1}, new[] {int.MaxValue, 1});

            Assert.AreEqual(3, subArray.Shape[0]);
            Assert.AreEqual(1, subArray.Shape[1]);
            Assert.AreEqual(int.MinValue, subArray.OffsetStart[0]);
            Assert.AreEqual(int.MaxValue, subArray.OffsetEnd[0]);
            Assert.AreEqual(1, subArray.OffsetStart[1]);
            Assert.AreEqual(1, subArray.OffsetEnd[1]);
            // check values
            Assert.AreEqual(2, subArray[0, 0]);
            Assert.AreEqual(5, subArray[1, 0]);
            Assert.AreEqual(8, subArray[2, 0]);

            // 1 [2] 3
            // 4 [5] 6
            // 7 [8] 9
            //    ^
            subArray = array.Select(1, 1, 1); // select 2st column, slicing

            Assert.AreEqual(3, subArray.Shape[0]);
            Assert.AreEqual(1, subArray.Shape[1]);
            Assert.AreEqual(int.MinValue, subArray.OffsetStart[0]);
            Assert.AreEqual(int.MaxValue, subArray.OffsetEnd[0]);
            Assert.AreEqual(1, subArray.OffsetStart[1]);
            Assert.AreEqual(1, subArray.OffsetEnd[1]);

            // 1 [2 3)
            // 4 [5 6)
            // 7 [8 9)
            //    ^

            subArray = array.Select(1, 1, int.MaxValue);

            Assert.AreEqual(3, subArray.Shape[0]);
            Assert.AreEqual(2, subArray.Shape[1]);
            Assert.AreEqual(int.MinValue, subArray.OffsetStart[0]);
            Assert.AreEqual(int.MaxValue, subArray.OffsetEnd[0]);

            Assert.AreEqual(1, subArray.OffsetStart[1]);
            Assert.AreEqual(int.MaxValue, subArray.OffsetEnd[1]);
        }
        public void SelectARow()
        {
            var array = new MultiDimensionalArray(2, 3);
            // 1 2 3     1 2 3
            // 4 5 6 ==> 
            
            array[0, 0] = 1;
            array[0, 1] = 2;
            array[0, 2] = 3;
            array[1, 0] = 4;
            array[1, 1] = 5;
            array[1, 2] = 6;
            // select the first index of the first dimension (e.g. the row)
            var row =  array.Select(0,new[]{0});
            row.Reduce[0] = true;
            Assert.AreEqual(new[]{1,2,3},row);

        }
        public void SelectOnMultipleIndexes()
        {
            // more complex example (isn't it another test?)
            var array = new MultiDimensionalArray(3, 3);
            // 1 9 2     1   2
            // 9 9 9 ==> 
            // 3 9 4     3   4   
            array[0, 0] = 1;
            array[0, 1] = 9;
            array[0, 2] = 2;
            array[1, 0] = 9;
            array[1, 1] = 9;
            array[1, 2] = 9;
            array[2, 0] = 3;
            array[2, 1] = 9;
            array[2, 2] = 4;

            IMultiDimensionalArrayView view = array.Select(0, new[] {0, 2}).Select(1, new[] {0, 2});
            Assert.IsTrue(new[] {2, 2}.SequenceEqual(view.Shape));
            Assert.AreEqual(4, view.Count);
            Assert.AreEqual(1, view[0, 0]);
            Assert.AreEqual(2, view[0, 1]);
            Assert.AreEqual(3, view[1, 0]);
            Assert.AreEqual(4, view[1, 1]);
        }
        public void SelectUsingIndexes()
        {
            IMultiDimensionalArray array = new MultiDimensionalArray(3);
            array[0] = 1;
            array[1] = 2;
            array[2] = 3;

            IMultiDimensionalArrayView view = array.Select(0, new[] {0, 2});

            // Select first and last element
            Assert.AreEqual(2, view.Count);
            Assert.AreEqual(1, view[0]);
            Assert.AreEqual(3, view[1]);

            Assert.AreEqual(3,view.MaxValue);
            Assert.AreEqual(1,view.MinValue);
        }
        public void UseEnumeratorOnMultiDimensionalArrayView()
        {
            // Setup an array
            // 1 2 -
            // 3 4 - 
            // - - - 
            IMultiDimensionalArray<double> array = new MultiDimensionalArray<double>(3, 3);
            array[0, 0] = 1;
            array[0, 1] = 2;
            array[1, 0] = 3;
            array[1, 1] = 4;

            // make a selection of the top right corner
            IMultiDimensionalArray<double> view = array.Select(0, 0, 1).Select(1, 0, 1);
            Assert.IsTrue(new[] {2, 2}.SequenceEqual(view.Shape));

            // since array supports enumerator - we can enumerate throuth all values as 1D array
            Assert.IsTrue(new double[] {1, 2, 3, 4}.SequenceEqual(view));
        }
        public void MoveDimensionAtGivenIndexAndLength()
        {
            var values = new List<int> { 1, 2, 3, 4 };
            IMultiDimensionalArray<int> array = new MultiDimensionalArray<int>(values, new[] { 1, 4 });

            var view = array.Select(1, 2, 3); // select { 1, 2, [3, 4] }

            // move 2nd dimension index
            var dimension = 1;
            var startIndex = 1;
            var length = 2;
            var newIndex = 0;
            array.Move(dimension, startIndex, length, newIndex); // 1, 2, 3, 4  => 2, 3, 1, 4

            //  2, 3, [1, 4]
            Assert.IsTrue(view.SequenceEqual(new[] { 1, 4 }));
        }
        public void ReducedIndexing()
        {
            IMultiDimensionalArray<double> array = new MultiDimensionalArray<double>(1, 3);
            array[0, 0] = 1;
            array[0, 1] = 2;
            array[0, 2] = 3;

            var view = array.Select(0, int.MinValue, int.MaxValue);
            view.SelectedIndexes[0] = new int[] { 0 };
            view.SelectedIndexes[1] = new int[] { 1 };
            view.Reduce[0] = true; //reduce the x dimension
            //one element
            Assert.AreEqual(1, view.Count);
            //rank and shape are one
            Assert.AreEqual(1, view.Rank);
            Assert.AreEqual(new[] { 1 }, view.Shape);

            //get the value
            Assert.AreEqual(2, view[0]);
        }
        public void ResizeParentAndUpdateShapeOfSubArray()
        {
            //create a 2D grid of 3x3
            IMultiDimensionalArray array = new MultiDimensionalArray(3, 3);

            //select rows [1, 2). So skip the first row
            IMultiDimensionalArray subArray = array.Select(0, 1, int.MaxValue);
            Assert.IsTrue(subArray.Shape.SequenceEqual(new[] {2, 3}));

            //resize the parent. Add one row and one column. Check the shape of the subArray changes
            array.Resize(new[] {4, 4});
            Assert.IsTrue(subArray.Shape.SequenceEqual(new[] {3, 4}));
        }
        public void Clone()
        {
            IMultiDimensionalArray<double> array = new MultiDimensionalArray<double>(3);
            array[0] = 1;
            array[1] = 2;
            array[2] = 3;

            var view = array.Select(0, 1, 1);

            var clonedView = (IMultiDimensionalArrayView)view.Clone();

            Assert.IsTrue(view.OffsetStart.SequenceEqual(clonedView.OffsetStart));
            Assert.IsTrue(view.OffsetEnd.SequenceEqual(clonedView.OffsetEnd));
        }
Beispiel #35
0
 public void TestVariableOwnerForSubArray()
 {
     //test on class because our MDA interface does not have owner.
     //test here and not in MDA because owner is a variable
     IMultiDimensionalArray array = new MultiDimensionalArray(3, 3);
     array[1, 1] = 5;
     ((MultiDimensionalArray)array).Owner = new Variable<double>("x");
     array = array.Select(0, 0, 2).Select(1, 0, 2);
     Assert.AreEqual(5, array[1,1]);
 }
        public void Remove()
        {
            IMultiDimensionalArray<double> array = new MultiDimensionalArray<double>(3);
            array[0] = 1;
            array[1] = 2;
            array[2] = 3;

            var view = array.Select(0, new[] { 1 });
            view.Remove(2);
            Assert.AreEqual(2, array.Count);
            Assert.AreEqual(new[] {1.0, 3.0}, array);
        }