private void test(int[] values) { string testNum = string.Empty; int index = 0; int value = 0; int indexOld = 0; int indexNew = 0; ObservableCollection <int> items; Summarizing <int> summarizing; try { trace(testNum = "1", values, index, value, indexOld, indexNew); items = getObservableCollection(values); summarizing = items.Summarizing().For(consumer); validateSummarizingConsistency(summarizing, items); Assert.AreEqual(summarizing.Value, items.Sum()); consumer.Dispose(); for (index = 0; index < values.Length; index++) { trace(testNum = "2", values, index, value, indexOld, indexNew); items = getObservableCollection(values); Summarizing <int> summarizing1 = items.Summarizing().For(consumer); items.RemoveAt(index); validateSummarizingConsistency(summarizing1, items); Assert.AreEqual(summarizing1.Value, items.Sum()); consumer.Dispose(); } 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); Summarizing <int> summarizing1 = items.Summarizing().For(consumer); items.Insert(index, value); validateSummarizingConsistency(summarizing1, items); Assert.AreEqual(summarizing1.Value, items.Sum()); consumer.Dispose(); } } 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); Summarizing <int> summarizing2 = items.Summarizing().For(consumer); items[index] = value; validateSummarizingConsistency(summarizing2, items); Assert.AreEqual(summarizing2.Value, items.Sum()); consumer.Dispose(); } } 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); Summarizing <int> summarizing2 = items.Summarizing().For(consumer); items.Move(indexOld, indexNew); validateSummarizingConsistency(summarizing2, items); Assert.AreEqual(summarizing2.Value, items.Sum()); consumer.Dispose(); } } } 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)); }
private void validateSummarizingConsistency(Summarizing <int> summarizing, ObservableCollection <int> items) { Assert.AreEqual(summarizing.Value, items.Sum()); }