using Xunit; using System; using System.Runtime.InteropServices; using QuanTAlib; namespace Basics; #nullable disable public class TBars { private static Type[] maSeriesTypes = new Type[] { typeof(ATR_Series), typeof(ATRP_Series), typeof(TR_Series), typeof(ADL_Series), typeof(CCI_Series), typeof(OBV_Series), typeof(ADOSC_Series), typeof(MIDPRICE_Series), }; [Theory] [MemberData(nameof(MASeriesData))] public void Name_exists(Type classType) { GBM_Feed data = new(10); var MA_Series = Activator.CreateInstance(classType, data) as TSeries; Assert.NotEmpty(MA_Series.Name); } [Theory] [MemberData(nameof(MASeriesData))] public void Series_Length(Type classType) { GBM_Feed data = new(1000); var MA_Series = Activator.CreateInstance(classType, data) as TSeries; Assert.Equal(1000, MA_Series.Count); } [Theory] [MemberData(nameof(MASeriesData))] public void Return_data(Type classType) { GBM_Feed data = new(10); var MA_Series = Activator.CreateInstance(classType, data) as TSeries; var result = MA_Series.Add((DateTime.Today, 1,2,3,4,5)); Assert.Equal(result.v, MA_Series.Last.v); } [Theory] [MemberData(nameof(MASeriesData))] public void Update(Type classType) { GBM_Feed data = new(10); var MA_Series = Activator.CreateInstance(classType, data) as TSeries; var pre_update = MA_Series.Last; var pre_data = data.Last; data.Add((DateTime.Today, 1, 2, 3, 4, 5), true); data.Add(pre_data, true); Assert.Equal(pre_update.v, MA_Series.Last.v); Assert.Equal(data.Count, MA_Series.Count); } [Theory] [MemberData(nameof(MASeriesData))] public void Reset(Type classType) { GBM_Feed data = new(10); var MA_Series = Activator.CreateInstance(classType, data) as TSeries; MA_Series.Reset(); data.Add(); Assert.False(double.IsNaN(MA_Series.Last.v)); } [Theory] [MemberData(nameof(MASeriesData))] public void Period_default(Type classType) { GBM_Feed data = new(100); var MA_Series = Activator.CreateInstance(classType, data) as TSeries; Assert.False(double.IsNaN(MA_Series.Last.v)); } public static IEnumerable MASeriesData() { foreach (var type in maSeriesTypes) { yield return new object[] { type }; } } } #nullable restore