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}