A game about forced loneliness, made by TACStudios
1using System;
2using System.Collections.Generic;
3using System.Runtime.Serialization;
4using Unity.PerformanceTesting.Exceptions;
5
6namespace Unity.PerformanceTesting.Data
7{
8 /// <summary>
9 /// Represents a group of samples for a performance test that share a common name and unit.
10 /// </summary>
11 [Serializable]
12 public class SampleGroup : IDeserializationCallback
13 {
14 /// <summary>
15 /// Name of the sample group.
16 /// </summary>
17 public string Name;
18 /// <summary>
19 /// Measurement unit.
20 /// </summary>
21 public SampleUnit Unit;
22 /// <summary>
23 /// Whether the measurement is inverted and increase is positive.
24 /// </summary>
25 public bool IncreaseIsBetter;
26 /// <summary>
27 /// List of samples.
28 /// </summary>
29 public List<double> Samples = new List<double>();
30 /// <summary>
31 /// Minimum value of samples.
32 /// </summary>
33 public double Min;
34 /// <summary>
35 /// Maximum value of samples.
36 /// </summary>
37 public double Max;
38 /// <summary>
39 /// Median value of samples.
40 /// </summary>
41 public double Median;
42 /// <summary>
43 /// Average value of samples.
44 /// </summary>
45 public double Average;
46 /// <summary>
47 /// Standard deviation of samples.
48 /// </summary>
49 public double StandardDeviation;
50 /// <summary>
51 /// Sum of samples.
52 /// </summary>
53 public double Sum;
54
55 /// <summary>
56 /// Creates a sample group without initializing values.
57 /// </summary>
58 public SampleGroup(){}
59
60 /// <summary>
61 /// Creates a sample group with provided arguments.
62 /// </summary>
63 /// <param name="name">Sample group name.</param>
64 /// <param name="unit">Measurement unit.</param>
65 /// <param name="increaseIsBetter">Whether the measurement is inverted and increase is positive.</param>
66 /// <exception cref="PerformanceTestException">Exception thrown when invalid name is used.</exception>
67 public SampleGroup(string name, SampleUnit unit, bool increaseIsBetter)
68 {
69 Name = name;
70 Unit = unit;
71 IncreaseIsBetter = increaseIsBetter;
72
73 if (string.IsNullOrEmpty(name))
74 {
75 throw new PerformanceTestException("Sample group name is empty. Please assign a valid name.");
76 }
77 }
78
79 /// <summary>
80 /// Validates the deserialized object.
81 /// </summary>
82 /// <param name="sender">The object that initiated the deserialization process.</param>
83 public void OnDeserialization(object sender)
84 {
85 if (string.IsNullOrEmpty(Name))
86 {
87 throw new PerformanceTestException("Sample group name is empty. Please assign a valid name.");
88 }
89 }
90 }
91}