Skip to content

Commit e4f47f6

Browse files
committed
Модульные тесты конвертеров
1 parent c7fd412 commit e4f47f6

12 files changed

Lines changed: 2477 additions & 0 deletions
Lines changed: 283 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,283 @@
1+
using System.Diagnostics;
2+
using System.Globalization;
3+
using System.Windows.Data;
4+
5+
using MathCore.WPF.Converters;
6+
7+
namespace MathCore.WPF.Tests.Converters;
8+
9+
/// <summary>Тесты для агрегирующих конвертеров</summary>
10+
[TestClass]
11+
public class AggregationConvertersTests
12+
{
13+
private static readonly CultureInfo Culture = CultureInfo.InvariantCulture;
14+
15+
#region AdditionMulti Tests
16+
17+
/// <summary>Тест конвертера AdditionMulti - суммирование нескольких значений</summary>
18+
[TestMethod]
19+
public void AdditionMulti_MultipleValues_ReturnsSum()
20+
{
21+
IMultiValueConverter converter = new AdditionMulti();
22+
var result = (double)converter.Convert([5.0, 10.0, 15.0], typeof(double), null, Culture)!;
23+
Assert.That.Value(result).IsEqual(30.0);
24+
}
25+
26+
/// <summary>Тест конвертера AdditionMulti - одно значение</summary>
27+
[TestMethod]
28+
public void AdditionMulti_SingleValue_ReturnsValue()
29+
{
30+
IMultiValueConverter converter = new AdditionMulti();
31+
var result = (double)converter.Convert([42.0], typeof(double), null, Culture)!;
32+
Assert.That.Value(result).IsEqual(42.0);
33+
}
34+
35+
/// <summary>Тест конвертера AdditionMulti - пустой массив выбрасывает исключение</summary>
36+
[TestMethod]
37+
public void AdditionMulti_EmptyArray_ReturnsZero()
38+
{
39+
IMultiValueConverter converter = new AdditionMulti();
40+
41+
var exception_thrown = false;
42+
try
43+
{
44+
converter.Convert([], typeof(double), null, Culture);
45+
}
46+
catch (System.IndexOutOfRangeException)
47+
{
48+
exception_thrown = true;
49+
}
50+
51+
Assert.IsTrue(exception_thrown, "Сумма пустого массива должна выбросить IndexOutOfRangeException");
52+
}
53+
54+
/// <summary>Тест конвертера AdditionMulti - отрицательные значения</summary>
55+
[TestMethod]
56+
public void AdditionMulti_NegativeValues_ReturnsCorrectSum()
57+
{
58+
IMultiValueConverter converter = new AdditionMulti();
59+
var result = (double)converter.Convert([10.0, -5.0, -3.0], typeof(double), null, Culture)!;
60+
Assert.That.Value(result).IsEqual(2.0);
61+
}
62+
63+
#endregion
64+
65+
#region AverageMulti Tests
66+
67+
/// <summary>Тест конвертера AverageMulti - среднее нескольких значений</summary>
68+
[TestMethod]
69+
public void AverageMulti_MultipleValues_ReturnsAverage()
70+
{
71+
IMultiValueConverter converter = new AverageMulti();
72+
var result = (double)converter.Convert([10.0, 20.0, 30.0], typeof(double), null, Culture)!;
73+
Assert.That.Value(result).IsEqual(20.0);
74+
}
75+
76+
/// <summary>Тест конвертера AverageMulti - одно значение</summary>
77+
[TestMethod]
78+
public void AverageMulti_SingleValue_ReturnsValue()
79+
{
80+
IMultiValueConverter converter = new AverageMulti();
81+
var result = (double)converter.Convert([42.0], typeof(double), null, Culture)!;
82+
Assert.That.Value(result).IsEqual(42.0);
83+
}
84+
85+
/// <summary>Тест конвертера AverageMulti - пустой массив выбрасывает исключение</summary>
86+
[TestMethod]
87+
public void AverageMulti_EmptyArray_ReturnsNaN()
88+
{
89+
IMultiValueConverter converter = new AverageMulti();
90+
91+
var exception_thrown = false;
92+
try
93+
{
94+
converter.Convert([], typeof(double), null, Culture);
95+
}
96+
catch (System.IndexOutOfRangeException)
97+
{
98+
exception_thrown = true;
99+
}
100+
101+
Assert.IsTrue(exception_thrown, "Среднее пустого массива должно выбросить IndexOutOfRangeException");
102+
}
103+
104+
/// <summary>Тест конвертера AverageMulti - смешанные значения</summary>
105+
[TestMethod]
106+
public void AverageMulti_MixedValues_ReturnsCorrectAverage()
107+
{
108+
IMultiValueConverter converter = new AverageMulti();
109+
var result = (double)converter.Convert([5.0, -5.0, 10.0], typeof(double), null, Culture)!;
110+
Assert.That.Value(result).IsEqual(3.333333333333, 1e-10);
111+
}
112+
113+
#endregion
114+
115+
#region MinValue Tests
116+
117+
/// <summary>Тест конвертера MinValue - минимум нескольких значений</summary>
118+
[TestMethod]
119+
public void MinValue_MultipleValues_ReturnsMinimum()
120+
{
121+
IMultiValueConverter converter = new MinValue();
122+
var result = (double)converter.Convert([5.0, 2.0, 8.0, 1.5], typeof(double), null, Culture)!;
123+
Assert.That.Value(result).IsEqual(1.5);
124+
}
125+
126+
/// <summary>Тест конвертера MinValue - одно значение</summary>
127+
[TestMethod]
128+
public void MinValue_SingleValue_ReturnsValue()
129+
{
130+
IMultiValueConverter converter = new MinValue();
131+
var result = (double)converter.Convert([42.0], typeof(double), null, Culture)!;
132+
Assert.That.Value(result).IsEqual(42.0);
133+
}
134+
135+
/// <summary>Тест конвертера MinValue - отрицательные значения</summary>
136+
[TestMethod]
137+
public void MinValue_NegativeValues_ReturnsMinimum()
138+
{
139+
IMultiValueConverter converter = new MinValue();
140+
var result = (double)converter.Convert([-5.0, -10.0, -3.0], typeof(double), null, Culture)!;
141+
Assert.That.Value(result).IsEqual(-10.0);
142+
}
143+
144+
/// <summary>Тест конвертера MinValue - все одинаковые значения</summary>
145+
[TestMethod]
146+
public void MinValue_AllSameValues_ReturnsValue()
147+
{
148+
IMultiValueConverter converter = new MinValue();
149+
var result = (double)converter.Convert([7.0, 7.0, 7.0], typeof(double), null, Culture)!;
150+
Assert.That.Value(result).IsEqual(7.0);
151+
}
152+
153+
#endregion
154+
155+
#region MaxValue Tests
156+
157+
/// <summary>Тест конвертера MaxValue - максимум нескольких значений</summary>
158+
[TestMethod]
159+
public void MaxValue_MultipleValues_ReturnsMaximum()
160+
{
161+
IMultiValueConverter converter = new MaxValue();
162+
var result = (double)converter.Convert([5.0, 12.0, 8.0, 1.5], typeof(double), null, Culture)!;
163+
Assert.That.Value(result).IsEqual(12.0);
164+
}
165+
166+
/// <summary>Тест конвертера MaxValue - одно значение</summary>
167+
[TestMethod]
168+
public void MaxValue_SingleValue_ReturnsValue()
169+
{
170+
IMultiValueConverter converter = new MaxValue();
171+
var result = (double)converter.Convert([42.0], typeof(double), null, Culture)!;
172+
Assert.That.Value(result).IsEqual(42.0);
173+
}
174+
175+
/// <summary>Тест конвертера MaxValue - отрицательные значения</summary>
176+
[TestMethod]
177+
public void MaxValue_NegativeValues_ReturnsMaximum()
178+
{
179+
IMultiValueConverter converter = new MaxValue();
180+
var result = (double)converter.Convert([-5.0, -10.0, -3.0], typeof(double), null, Culture)!;
181+
Assert.That.Value(result).IsEqual(-3.0);
182+
}
183+
184+
/// <summary>Тест конвертера MaxValue - все одинаковые значения</summary>
185+
[TestMethod]
186+
public void MaxValue_AllSameValues_ReturnsValue()
187+
{
188+
IMultiValueConverter converter = new MaxValue();
189+
var result = (double)converter.Convert([7.0, 7.0, 7.0], typeof(double), null, Culture)!;
190+
Assert.That.Value(result).IsEqual(7.0);
191+
}
192+
193+
#endregion
194+
195+
#region MultiplyMany Tests
196+
197+
/// <summary>Тест конвертера MultiplyMany - произведение нескольких значений</summary>
198+
[TestMethod]
199+
public void MultiplyMany_MultipleValues_ReturnsProduct()
200+
{
201+
IMultiValueConverter converter = new MultiplyMany();
202+
var result = (double)converter.Convert([2.0, 3.0, 4.0], typeof(double), null, Culture)!;
203+
Assert.That.Value(result).IsEqual(24.0);
204+
}
205+
206+
/// <summary>Тест конвертера MultiplyMany - одно значение</summary>
207+
[TestMethod]
208+
public void MultiplyMany_SingleValue_ReturnsValue()
209+
{
210+
IMultiValueConverter converter = new MultiplyMany();
211+
var result = (double)converter.Convert([42.0], typeof(double), null, Culture)!;
212+
Assert.That.Value(result).IsEqual(42.0);
213+
}
214+
215+
/// <summary>Тест конвертера MultiplyMany - пустой массив выбрасывает исключение</summary>
216+
[TestMethod]
217+
public void MultiplyMany_EmptyArray_ReturnsOne()
218+
{
219+
IMultiValueConverter converter = new MultiplyMany();
220+
221+
var exception_thrown = false;
222+
try
223+
{
224+
converter.Convert([], typeof(double), null, Culture);
225+
}
226+
catch (System.IndexOutOfRangeException)
227+
{
228+
exception_thrown = true;
229+
}
230+
231+
Assert.IsTrue(exception_thrown, "Произведение пустого массива должно выбросить IndexOutOfRangeException");
232+
}
233+
234+
/// <summary>Тест конвертера MultiplyMany - умножение с нулем</summary>
235+
[TestMethod]
236+
public void MultiplyMany_WithZero_ReturnsZero()
237+
{
238+
IMultiValueConverter converter = new MultiplyMany();
239+
var result = (double)converter.Convert([5.0, 0.0, 10.0], typeof(double), null, Culture)!;
240+
Assert.That.Value(result).IsEqual(0.0);
241+
}
242+
243+
/// <summary>Тест конвертера MultiplyMany - отрицательные значения</summary>
244+
[TestMethod]
245+
public void MultiplyMany_NegativeValues_ReturnsCorrectProduct()
246+
{
247+
IMultiValueConverter converter = new MultiplyMany();
248+
var result = (double)converter.Convert([2.0, -3.0, 4.0], typeof(double), null, Culture)!;
249+
Assert.That.Value(result).IsEqual(-24.0);
250+
}
251+
252+
/// <summary>Тест конвертера MultiplyMany - дробные значения</summary>
253+
[TestMethod]
254+
public void MultiplyMany_FractionalValues_ReturnsCorrectProduct()
255+
{
256+
IMultiValueConverter converter = new MultiplyMany();
257+
var result = (double)converter.Convert([0.5, 0.5, 4.0], typeof(double), null, Culture)!;
258+
Assert.That.Value(result).IsEqual(1.0);
259+
}
260+
261+
#endregion
262+
263+
#region Average Tests
264+
265+
/// <summary>Тест конвертера Average - скользящее среднее</summary>
266+
[TestMethod]
267+
public void Average_WithLength_CalculatesMovingAverage()
268+
{
269+
IValueConverter converter = new Average(3);
270+
271+
var result1 = (double)converter.Convert(10.0, typeof(double), null, Culture)!;
272+
var result2 = (double)converter.Convert(20.0, typeof(double), null, Culture)!;
273+
var result3 = (double)converter.Convert(30.0, typeof(double), null, Culture)!;
274+
275+
Debug.WriteLine($"Result 1: {result1}");
276+
Debug.WriteLine($"Result 2: {result2}");
277+
Debug.WriteLine($"Result 3: {result3}");
278+
279+
Assert.That.Value(result3).IsEqual(20.0, 1e-10);
280+
}
281+
282+
#endregion
283+
}

0 commit comments

Comments
 (0)