public void ProcessRectanglePoints() { var dt = DateTime.Now; var sequence = 0; Func<DateTime> dtf = () => dt + TimeSpan.FromTicks(TimeSpan.FromMilliseconds(100).Ticks * sequence++); var state = new PlatformDiagnostic.State(dtf); var s1 = state.ProcessNext(new PointF(1, 1)); var s2 = s1.ProcessNext(new PointF(1, -1)); var s3 = s2.ProcessNext(new PointF(-1, -1)); var s4 = s3.ProcessNext(new PointF(-1, 1)); var s5 = s4.ProcessNext(new PointF(1, 1)); //s5.Indicators.AvgAmplitude.Should().Be(new PointF(2, 2)); s5.Indicators.Length.Should().Be(8); //s5.Indicators.MaxAmplitude.Should().Be(new PointF(2, 2)); s5.Indicators.Frequency.Should().Be(new PointF( 2/(float)TimeSpan.FromMilliseconds(400).TotalSeconds, 2/(float)TimeSpan.FromMilliseconds(400).TotalSeconds)); s5.Indicators.Period.Should().Be(new PointF( (float)TimeSpan.FromMilliseconds(400).TotalSeconds / 2f, (float)TimeSpan.FromMilliseconds(400).TotalSeconds / 2f)); s5.Duration.Should().Be(TimeSpan.FromMilliseconds(400)); var s6 = s5.ProcessNext(new PointF(1, -1)) .ProcessNext(new PointF(-1, -1)) .ProcessNext(new PointF(-1, 1)) .ProcessNext(new PointF(1, 1)); //s6.Indicators.AvgAmplitude.Should().Be(new PointF(2, 2)); s6.Indicators.Length.Should().Be(16); //s6.Indicators.MaxAmplitude.Should().Be(new PointF(2, 2)); s6.Indicators.Frequency.Should().Be(new PointF( 4 / (float)TimeSpan.FromMilliseconds(800).TotalSeconds, 4 / (float)TimeSpan.FromMilliseconds(800).TotalSeconds)); s6.Indicators.Period.Should().Be(new PointF( (float)TimeSpan.FromMilliseconds(800).TotalSeconds / 4f, (float)TimeSpan.FromMilliseconds(800).TotalSeconds / 4f)); s6.Duration.Should().Be(TimeSpan.FromMilliseconds(800)); }
public void ProcessZeros() { var dt = DateTime.Now; var sequence = 0; Func<DateTime> dtf = () => dt + TimeSpan.FromTicks(TimeSpan.FromMilliseconds(100).Ticks * sequence++); var state = new PlatformDiagnostic.State(dtf); var s1 = state.ProcessNext(new PointF()); var s2 = s1.ProcessNext(new PointF()); var s3 = s2.ProcessNext(new PointF()); s3.Indicators.AvgAmplitude.Should().Be(new PointF()); s3.Indicators.Length.Should().Be(0); s3.Indicators.MaxAmplitude.Should().Be(new PointF()); s3.Indicators.Frequency.Should().Be(new PointF()); s3.Indicators.Period.Should().Be(new PointF()); s3.Duration.Should().Be(TimeSpan.FromMilliseconds(200)); }