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 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); }
public void SetValuesOfAWrongTypeGivesException() { IMultiDimensionalArray <DateTime> array = new MultiDimensionalArray <DateTime>(); array.Add(DateTime.Now); ((IList)array)[0] = 1; // <-- exception }
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 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 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]); }
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]); }
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); }
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); }
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"); }