public void MinimazingOrMaximazing_Deep( [Values(MinimazingOrMaximazingMode.Maximazing, MinimazingOrMaximazingMode.Minimazing)] MinimazingOrMaximazingMode mode) { long counter = 0; Stopwatch stopwatch = Stopwatch.StartNew(); test(new int[0], mode); for (int v1 = -2; v1 <= 2; v1++) { test(new [] { v1 }, mode); for (int v2 = -2; v2 <= 2; v2++) { test(new [] { v1, v2 }, mode); for (int v3 = -2; v3 <= 2; v3++) { test(new [] { v1, v2, v3 }, mode); for (int v4 = -2; v4 <= 2; v4++) { test(new [] { v1, v2, v3, v4 }, mode); for (int v5 = -2; v5 <= 2; v5++) { test(new[] { v1, v2, v3, v4, v5 }, mode); counter++; if (counter % 100 == 0) { _textFileOutputTime.AppentLine($"{stopwatch.Elapsed.TotalMinutes}: {counter}"); } } } } } } }
private int getResult(ObservableCollection <int> items, MinimazingOrMaximazingMode mode) { if (items.Count == 0) { return(0); } return(mode == MinimazingOrMaximazingMode.Maximazing ? items.Max() : items.Min()); }
public MinimazingOrMaximazing( IReadScalar <INotifyCollectionChanged> sourceScalar, MinimazingOrMaximazingMode mode, IReadScalar <IComparer <TSourceItem> > comparerScalar = null) : this(mode, Utils.getCapacity(sourceScalar)) { _sourceScalar = sourceScalar; _comparerScalar = comparerScalar; }
public MinimazingOrMaximazing( INotifyCollectionChanged source, MinimazingOrMaximazingMode mode, IComparer <TSourceItem> comparer = null) : this(mode, Utils.getCapacity(source)) { _source = source; _comparer = comparer; }
public MinimazingOrMaximazing( IReadScalar <INotifyCollectionChanged> sourceScalar, MinimazingOrMaximazingMode mode, IComparer <TSourceItem> comparer = null, TSourceItem defaultValue = default(TSourceItem)) : this(mode, Utils.getCapacity(sourceScalar)) { _sourceScalar = sourceScalar; _comparer = comparer; _defaultValue = defaultValue; }
public MinimazingOrMaximazing( INotifyCollectionChanged source, MinimazingOrMaximazingMode mode, IComparer <TSourceItem> comparer = null, TSourceItem defaultValue = default(TSourceItem)) : this(mode, Utils.getCapacity(source)) { _source = source; _comparer = comparer ?? Comparer <TSourceItem> .Default; _defaultValue = defaultValue; initializeFromSource(); }
private MinimazingOrMaximazing(MinimazingOrMaximazingMode mode, int capacity) { _sourceItems = new List <TSourceItem>(capacity); _mode = mode; switch (_mode) { case MinimazingOrMaximazingMode.Maximazing: _checkCompareResult = _checkCompareResultPositive; _antiCheckCompareResult = _checkCompareResultNegative; break; case MinimazingOrMaximazingMode.Minimazing: _checkCompareResult = _checkCompareResultNegative; _antiCheckCompareResult = _checkCompareResultPositive; break; } }
private MinimazingOrMaximazing(MinimazingOrMaximazingMode mode, int capacity) { _sourceCopy = new List <TSourceItem>(capacity); _mode = mode; switch (_mode) { case MinimazingOrMaximazingMode.Maximazing: _checkCompareResult = __checkCompareResultPositive; _antiCheckCompareResult = __checkCompareResultNegative; break; case MinimazingOrMaximazingMode.Minimazing: _checkCompareResult = __checkCompareResultNegative; _antiCheckCompareResult = __checkCompareResultPositive; break; } _thisAsSourceCollectionChangeProcessor = this; _deferredQueuesCount = 2; }
private void test(int[] values, MinimazingOrMaximazingMode mode) { string testNum = string.Empty; int index = 0; int value = 0; int indexOld = 0; int indexNew = 0; ObservableCollection <int> items; MinimazingOrMaximazing <int> minimazingOrMaximazing; try { trace(testNum = "1", values, index, value, indexOld, indexNew); items = getObservableCollection(values); minimazingOrMaximazing = getMinimazingOrMaximazing(items, mode); minimazingOrMaximazing.ValidateConsistency(); consumer.Dispose(); Assert.AreEqual(minimazingOrMaximazing.Value, getResult(items, mode)); for (index = 0; index < values.Length; index++) { trace(testNum = "2", values, index, value, indexOld, indexNew); items = getObservableCollection(values); MinimazingOrMaximazing <int> minimazingOrMaximazing1 = getMinimazingOrMaximazing(items, mode); items.RemoveAt(index); minimazingOrMaximazing1.ValidateConsistency(); consumer.Dispose(); Assert.AreEqual(minimazingOrMaximazing1.Value, getResult(items, mode)); } for (index = 0; index <= values.Length; index++) { for (value = 0; value <= values.Length; value++) { trace(testNum = "8", values, index, value, indexOld, indexNew); items = getObservableCollection(values); MinimazingOrMaximazing <int> minimazingOrMaximazing1 = getMinimazingOrMaximazing(items, mode); items.Insert(index, value); minimazingOrMaximazing1.ValidateConsistency(); consumer.Dispose(); Assert.AreEqual(minimazingOrMaximazing1.Value, getResult(items, mode)); } } for (index = 0; index < values.Length; index++) { for (value = -1; value <= values.Length; value++) { trace(testNum = "3", values, index, value, indexOld, indexNew); items = getObservableCollection(values); MinimazingOrMaximazing <int> minimazingOrMaximazing2 = getMinimazingOrMaximazing(items, mode); items[index] = value; minimazingOrMaximazing2.ValidateConsistency(); consumer.Dispose(); Assert.AreEqual(minimazingOrMaximazing2.Value, getResult(items, mode)); } } for (indexOld = 0; indexOld < values.Length; indexOld++) { for (indexNew = 0; indexNew < values.Length; indexNew++) { trace(testNum = "7", values, index, value, indexOld, indexNew); items = getObservableCollection(values); MinimazingOrMaximazing <int> minimazingOrMaximazing2 = getMinimazingOrMaximazing(items, mode); items.Move(indexOld, indexNew); minimazingOrMaximazing2.ValidateConsistency(); consumer.Dispose(); Assert.AreEqual(minimazingOrMaximazing2.Value, getResult(items, mode)); } } } catch (Exception e) { string traceString = getTraceString(testNum, values, index, value, indexOld, indexNew); _textFileOutputLog.AppentLine(traceString); _textFileOutputLog.AppentLine(e.Message); _textFileOutputLog.AppentLine(e.StackTrace); throw new Exception(traceString, e); } writeUsefulTest(getTestString(values, mode)); }
private MinimazingOrMaximazing <int> getMinimazingOrMaximazing(ObservableCollection <int> items, MinimazingOrMaximazingMode mode) { return(mode == MinimazingOrMaximazingMode.Maximazing ? items.Maximazing().For(consumer) : items.Minimazing().For(consumer)); }
protected string getTestString(int[] ids1, MinimazingOrMaximazingMode mode) { return($" test(new int[]{{{string.Join(", ", ids1.Select(v => v.ToString()))}}}, MinimazingOrMaximazingMode.{mode});"); }