Beispiel #1
0
        public void Create1D()
        {
            IMultiDimensionalArray array = new MultiDimensionalArray();

            array.Add(1);
            array.Add(2);
            array.Add(3);
            array.Remove(2);

            log.Info(array.ToString());

            Assert.AreEqual(1, array.Rank);
            Assert.AreEqual(2, array.Count);
        }
Beispiel #2
0
        public void IndexOnValuesAdded()
        {
            IMultiDimensionalArray <int> array = new MultiDimensionalArray <int>();
            int callCount = 0;

            array.Add(2);
            array.CollectionChanged += delegate(object sender, NotifyCollectionChangedEventArgs e)
            {
                var args = (MultiDimensionalArrayChangedEventArgs)e;
                Assert.AreEqual(new[] { 1 }, args.MultiDimensionalIndex);
                callCount++;
            };
            array.Add(4);
            Assert.AreEqual(1, callCount);
        }
Beispiel #3
0
        public void SetValuesOfAWrongTypeGivesException()
        {
            IMultiDimensionalArray <DateTime> array = new MultiDimensionalArray <DateTime>();

            array.Add(DateTime.Now);
            ((IList)array)[0] = 1; // <-- exception
        }
Beispiel #4
0
        public void LastValue()
        {
            //last does not work because the single dimensional indexing does not work see test above
            IMultiDimensionalArray <double> array = new MultiDimensionalArray <double>();

            array.Add(3.0);
            Assert.AreEqual(1, array.Count);
            Assert.AreEqual(3.0, array.Last());
        }
Beispiel #5
0
        public void CopyConstructor()
        {
            IMultiDimensionalArray <int> array = new MultiDimensionalArray <int>();

            array.Add(1);
            array.Add(2);
            array.Add(3);

            Assert.AreEqual(3, array.Shape[0]);
            //create an offline copy
            IMultiDimensionalArray <int> copy = new MultiDimensionalArray <int>(array, array.Shape);

            Assert.AreEqual(3, copy.Count);

            //add an item to the parent and verify it does not add to our copy
            array.Add(5);
            Assert.AreEqual(3, copy.Count);
        }
Beispiel #6
0
        public void Contains()
        {
            IMultiDimensionalArray <int> array = new MultiDimensionalArray <int>();

            array.Add(22);
            //array.SetValues(new[] {1,2,22});
            Assert.IsTrue(array.Contains(22));
            Assert.IsFalse(array.Contains(23));
        }
Beispiel #7
0
        public void TestConvertedArray()
        {

            IMultiDimensionalArray<int> intArray = new MultiDimensionalArray<int>(new List<int> { 1, 2, 3, 4, 5 }, new[] { 5 });
            IMultiDimensionalArray<string> stringArray = new ConvertedArray<string, int>(intArray, Convert.ToInt32, Convert.ToString);


            Assert.AreEqual(intArray.Shape, stringArray.Shape);


            Assert.AreEqual("1", stringArray[0]);
            //assignment on the converted array are passed to the source
            stringArray.Add("30");
            Assert.AreEqual(30, intArray[5]);
            intArray.Add(31);
            Assert.AreEqual("31", stringArray[6]);
        }
Beispiel #8
0
        public void TestConvertedArray()
        {
            IMultiDimensionalArray <int> intArray = new MultiDimensionalArray <int>(new List <int> {
                1, 2, 3, 4, 5
            }, new[] { 5 });
            IMultiDimensionalArray <string> stringArray = new ConvertedArray <string, int>(intArray, Convert.ToInt32, Convert.ToString);


            Assert.AreEqual(intArray.Shape, stringArray.Shape);


            Assert.AreEqual("1", stringArray[0]);
            //assignment on the converted array are passed to the source
            stringArray.Add("30");
            Assert.AreEqual(30, intArray[5]);
            intArray.Add(31);
            Assert.AreEqual("31", stringArray[6]);
        }
Beispiel #9
0
        public void PerformanceAddValuesToArgument_WithEvents_JustAnArray()
        {
            var t = DateTime.Now;

            IMultiDimensionalArray <double> array = new MultiDimensionalArray <double>();

            const int valuesToAdd = 10000;

            for (var i = 0; i < valuesToAdd; i++)
            {
                array.Add(i);
            }

            var dt = DateTime.Now.Subtract(t).TotalMilliseconds;

            Assert.Less(dt, 20);

            log.DebugFormat("Added {0} values in {1} ms", valuesToAdd, dt);
        }
 public void SetValuesOfAWrongTypeGivesException()
 {
     IMultiDimensionalArray<DateTime> array = new MultiDimensionalArray<DateTime>();
     array.Add(DateTime.Now);
     ((IList)array)[0] = 1; // <-- exception
 }
 public void AddWrongTypeToValuesGivesException()
 {
     IMultiDimensionalArray<DateTime> array = new MultiDimensionalArray<DateTime>();
     array.Add(1); // <-- exception
 }
 public void IndexOnValuesRemoved()
 {
     IMultiDimensionalArray<int> array = new MultiDimensionalArray<int>();
     array.Add(2);
     array.Add(3);
     int callCount = 0;
     array.CollectionChanged += delegate(object sender, NotifyCollectionChangedEventArgs e)
                                    {
                                        var args = (MultiDimensionalArrayChangedEventArgs)e;
                                        Assert.AreEqual(new[] { 1 }, args.MultiDimensionalIndex);
                                        callCount++;
                                    };
     array.Remove(3);
     Assert.AreEqual(1, callCount);
 }
        public void Create1D()
        {
            IMultiDimensionalArray array = new MultiDimensionalArray();

            array.Add(1);
            array.Add(2);
            array.Add(3);
            array.Remove(2);

            log.Info(array.ToString());

            Assert.AreEqual(1, array.Rank);
            Assert.AreEqual(2, array.Count);
        }
        public void CopyConstructor()
        {
            IMultiDimensionalArray<int> array = new MultiDimensionalArray<int>();
            array.Add(1);
            array.Add(2);
            array.Add(3);

            Assert.AreEqual(3, array.Shape[0]);
            //create an offline copy
            IMultiDimensionalArray<int> copy = new MultiDimensionalArray<int>(array, array.Shape);
            Assert.AreEqual(3, copy.Count);

            //add an item to the parent and verify it does not add to our copy
            array.Add(5);
            Assert.AreEqual(3, copy.Count);
        }
 public void Contains()
 {
     IMultiDimensionalArray<int> array = new MultiDimensionalArray<int>();
     array.Add(22);
     //array.SetValues(new[] {1,2,22});
     Assert.IsTrue(array.Contains(22));
     Assert.IsFalse(array.Contains(23));
 }
 public void ReadOnlyAdd()
 {
     var array = new MultiDimensionalArray(true, false, 1, new int[1]);
     array.Add(1);
 }
 public void IndexOnValuesAdded()
 {
     IMultiDimensionalArray<int> array = new MultiDimensionalArray<int>();
     int callCount = 0;
     array.Add(2);
     array.CollectionChanged += delegate(object sender, MultiDimensionalArrayChangingEventArgs e)
                                    {
                                        Assert.AreEqual(new[] { 1 }, e.MultiDimensionalIndex);
                                        callCount++;
                                    };
     array.Add(4);
     Assert.AreEqual(1, callCount);
 }
        public void AddingValueToSortedArrayKeepsOldSubscribtion()
        {
            var array = new MultiDimensionalArray<TestNotifyPropertyChangedObject> { IsAutoSorted = true };

            var testNotifyPropertyChangedObject = new TestNotifyPropertyChangedObject {Value = 10};
            array.Add(testNotifyPropertyChangedObject);
            array.Add(new TestNotifyPropertyChangedObject { Value = 5 });//this will cause sorting

            int callCount = 0;
            ((INotifyPropertyChanged) array).PropertyChanged += (s, e) => { callCount++; };
            testNotifyPropertyChangedObject.FireChanged();

            Assert.AreEqual(1,callCount);
        }
Beispiel #19
0
        public void AddWrongTypeToValuesGivesException()
        {
            IMultiDimensionalArray <DateTime> array = new MultiDimensionalArray <DateTime>();

            array.Add(1); // <-- exception
        }
        public void RemoveDoesNothingWhenValueIsNotInArray()
        {
            IMultiDimensionalArray<double> array = new MultiDimensionalArray<double>()
                                                       {IsAutoSorted = true};
            array.Add(0.0);
            array.Add(10.0);

            //remove something that was never there. shoud have no effect (just like in List<T>
            array.Remove(11.0d);

            Assert.AreEqual(new[]{0.0,10.0},array);
        }
        public void AutoSortedArrayAddsAtCorrectIndex()
        {
            var array = new MultiDimensionalArray<double>(new[] {1.0, 2.0, 4.0, 5.0}, new[] {4})
                            {
                                IsAutoSorted = true
                            };
            var collectionChangingCount = 0;
            var collectionChangedCount = 0;

            //in should be inserted at index 2
            //changing shows intention..
            array.CollectionChanging += (s, e) =>
                                            {
                                                Assert.AreEqual(NotifyCollectionChangeAction.Add, e.Action);
                                                Assert.AreEqual(3.0, e.Items[0]);
                                                Assert.AreEqual(4, e.Index);
                                                collectionChangingCount++;
                                            };

            //this is what happened.
            array.CollectionChanged += (s, e) =>
                                           {
                                               Assert.AreEqual(NotifyCollectionChangeAction.Add, e.Action);
                                               Assert.AreEqual(3.0, e.Items[0]);
                                               Assert.AreEqual(2, e.Index);
                                               collectionChangedCount++;
                                           };

            //action! add a 3.0
            array.Add(3.0);

            Assert.AreEqual(1, collectionChangingCount);
            Assert.AreEqual(1, collectionChangedCount);
        }
 public void LastValue()
 {
     //last does not work because the single dimensional indexing does not work see test above
     IMultiDimensionalArray<double> array = new MultiDimensionalArray<double>();
     array.Add(3.0);
     Assert.AreEqual(1, array.Count);
     Assert.AreEqual(3.0, array.Last());
 }
 public void IndexOnValuesRemoved()
 {
     IMultiDimensionalArray<int> array = new MultiDimensionalArray<int>();
     array.Add(2);
     array.Add(3);
     int callCount = 0;
     array.CollectionChanged += (sender, e) =>
                                    {
                                        Assert.AreEqual(new[] {1}, e.MultiDimensionalIndex);
                                        callCount++;
                                    };
     array.Remove(3);
     Assert.AreEqual(1, callCount);
 }
        public void BubblePropertyChangesOfInsertedObject()
        {
            var testNotifyPropertyChangedObject = new TestNotifyPropertyChangedObject();

            IMultiDimensionalArray<TestNotifyPropertyChangedObject> array = new MultiDimensionalArray<TestNotifyPropertyChangedObject>
                                                                                {
                                                                                    IsAutoSorted = false
                                                                                };
            array.Add(new TestNotifyPropertyChangedObject());

            array.InsertAt(0, 0, 1, new[] { 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);
        }
Beispiel #26
0
        public void PerformanceAddValuesToArgument_WithEvents_JustAnArray()
        {
            var t = DateTime.Now;

            IMultiDimensionalArray<double> array = new MultiDimensionalArray<double>();

            const int valuesToAdd = 10000;

            for (var i = 0; i < valuesToAdd; i++)
            {
                array.Add(i);
            }

            var dt = DateTime.Now.Subtract(t).TotalMilliseconds;

            Assert.Less(dt, 20);

            log.DebugFormat("Added {0} values in {1} ms", valuesToAdd, dt);
        }
        public void UnsubscribePropertyChangesAfterResize()
        {
            var testNotifyPropertyChangedObject = new TestNotifyPropertyChangedObject();

            IMultiDimensionalArray<TestNotifyPropertyChangedObject> array = new MultiDimensionalArray<TestNotifyPropertyChangedObject>
            {
                IsAutoSorted = false
            };

            array.Add(testNotifyPropertyChangedObject);
            
            array.Resize(new[] {2, 2});

            Assert.AreEqual(1, testNotifyPropertyChangedObject.GetNumPropertyChangedSubscriptions(), "num property subscriptions");
        }