using System.Runtime.CompilerServices; using Skender.Stock.Indicators; namespace QuanTAlib.Tests; public sealed class LinRegValidationTests : IDisposable { private readonly ValidationTestData _data; public LinRegValidationTests() { _data = new ValidationTestData(); } public void Dispose() { _data.Dispose(); } [SkipLocalsInit] [Fact] public void Validate_Against_Skender_Slope() { const int period = 14; var skender = _data.SkenderQuotes.GetSlope(period).ToList(); var linreg = new LinReg(period); var slopeSeries = new TSeries(); foreach (var item in _data.Data) { linreg.Update(item); slopeSeries.Add(new TValue(item.Time, linreg.Slope)); } ValidationHelper.VerifyData(slopeSeries, skender, x => x.Slope, tolerance: ValidationHelper.DefaultTolerance); } [SkipLocalsInit] [Fact] public void Validate_Against_Skender_RSquared() { const int period = 14; var skender = _data.SkenderQuotes.GetSlope(period).ToList(); var linreg = new LinReg(period); var r2Series = new TSeries(); foreach (var item in _data.Data) { linreg.Update(item); r2Series.Add(new TValue(item.Time, linreg.RSquared)); } ValidationHelper.VerifyData(r2Series, skender, x => x.RSquared, tolerance: ValidationHelper.DefaultTolerance); } }