public void AccessorTests() { AggregatedDataPoint target = new AggregatedDataPoint(); target.UtcTimestamp = new DateTime(2016, 3, 13, 17, 28, 59, DateTimeKind.Utc); Assert.AreEqual(new DateTime(2016, 3, 13, 17, 28, 59, DateTimeKind.Utc), target.UtcTimestamp); target.AggregatedValue = 0.6; Assert.AreEqual(0.6, target.AggregatedValue); }
public void EqualityTests() { AggregatedDataPoint point1 = new AggregatedDataPoint(); point1.UtcTimestamp = new DateTime(2016, 3, 13, 17, 28, 2, DateTimeKind.Utc); point1.AggregatedValue = 0.3; AggregatedDataPoint point2 = new AggregatedDataPoint(); point2.UtcTimestamp = new DateTime(2016, 3, 13, 17, 28, 2, DateTimeKind.Utc); point2.AggregatedValue = 0.4; // Invalid (aggregation must be consistent) but overlooked in this context AggregatedDataPoint point3 = new AggregatedDataPoint(); point3.UtcTimestamp = new DateTime(2016, 3, 13, 17, 28, 3, DateTimeKind.Utc); point3.AggregatedValue = 0.5; Assert.IsTrue(point1 == point2); Assert.IsFalse(point1 == point3); Assert.IsTrue(point2 == point1); Assert.IsFalse(point2 == point3); Assert.IsFalse(point3 == point1); Assert.IsFalse(point3 == point2); Assert.IsTrue(point1.GetHashCode() == point2.GetHashCode()); Assert.IsFalse(point1.GetHashCode() == point3.GetHashCode()); Assert.IsTrue(point2.GetHashCode() == point1.GetHashCode()); Assert.IsFalse(point2.GetHashCode() == point3.GetHashCode()); Assert.IsFalse(point3.GetHashCode() == point1.GetHashCode()); Assert.IsFalse(point3.GetHashCode() == point2.GetHashCode()); Assert.IsFalse(point1 != point2); Assert.IsTrue(point1 != point3); Assert.IsFalse(point2 != point1); Assert.IsTrue(point2 != point3); Assert.IsTrue(point3 != point1); Assert.IsTrue(point3 != point2); Assert.IsTrue(point1.Equals(point2)); Assert.IsFalse(point1.Equals(point3)); Assert.IsTrue(point2.Equals(point1)); Assert.IsFalse(point2.Equals(point3)); Assert.IsFalse(point3.Equals(point1)); Assert.IsFalse(point3.Equals(point2)); Assert.IsFalse(point1.Equals("A String object")); }
/// <summary> /// Generate predictable (based on test build) but seemingly random sample data for use in tests. /// </summary> /// <param name="seed"> /// Seed. A constant seed will produce consistent results. A small change in the seed used should produce massively /// different results.</param> /// <param name="sampleRawDataMaximumLength">Amount of data point observations. Can be zero.</param> /// <param name="sampleAggregatedDataMaximumLength">Amount of aggregated data points. Can be zero.</param> /// <param name="sampleRawData">Will be populated with sample raw data point observations.</param> /// <param name="sampleAggregatedData">Will be populated with aggregated data points.</param> /// <returns>Whether or not to consider the sample raw data a partial page.</returns> private static bool GenerateSampleData( int seed, int sampleRawDataMaximumLength, int sampleAggregatedDataMaximumLength, out DataPointObservation[] sampleRawData, out AggregatedDataPoint[] sampleAggregatedData) { Random psuedoRandomNumberGenerator = new Random(seed); int sampleRawDataLength = sampleRawDataMaximumLength == 0 ? 0 : psuedoRandomNumberGenerator.Next(1, sampleRawDataMaximumLength + 1); sampleRawData = new DataPointObservation[sampleRawDataLength]; for (int i = 0; i < sampleRawData.Length; i++) { sampleRawData[i] = new DataPointObservation(NewRandomDateTimeUtc(psuedoRandomNumberGenerator), value: psuedoRandomNumberGenerator.NextDouble()); } int sampleAggregatedDataLength = sampleAggregatedDataMaximumLength == 0 ? 0 : psuedoRandomNumberGenerator.Next(1, sampleAggregatedDataMaximumLength + 1); sampleAggregatedData = new AggregatedDataPoint[sampleAggregatedDataLength]; for (int i = 0; i < sampleAggregatedData.Length; i++) { sampleAggregatedData[i] = new AggregatedDataPoint(); sampleAggregatedData[i].UtcTimestamp = NewRandomDateTimeUtc(psuedoRandomNumberGenerator); sampleAggregatedData[i].AggregatedValue = psuedoRandomNumberGenerator.NextDouble(); } return psuedoRandomNumberGenerator.NextDouble() < 0.5; }