diff --git a/DD.Persistence.Test/DD.Persistence.Test.csproj b/DD.Persistence.Test/DD.Persistence.Test.csproj index 9135b1c..8efaa34 100644 --- a/DD.Persistence.Test/DD.Persistence.Test.csproj +++ b/DD.Persistence.Test/DD.Persistence.Test.csproj @@ -10,10 +10,15 @@ + + + + + diff --git a/DD.Persistence.Test/TimestampedValuesServiceShould.cs b/DD.Persistence.Test/TimestampedValuesServiceShould.cs index ea19171..5f3e65b 100644 --- a/DD.Persistence.Test/TimestampedValuesServiceShould.cs +++ b/DD.Persistence.Test/TimestampedValuesServiceShould.cs @@ -1,19 +1,58 @@ -using DD.Persistence.Repositories; +using DD.Persistence.Models; +using DD.Persistence.Repositories; using DD.Persistence.Services; using NSubstitute; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace DD.Persistence.Repository.Test; public class TimestampedValuesServiceShould { private readonly ITimestampedValuesRepository timestampedValuesRepository = Substitute.For(); private readonly IDataSchemeRepository dataSchemeRepository = Substitute.For(); + private TimestampedValuesService timestampedValuesService; + public TimestampedValuesServiceShould() { - var timestampedValuesService = new TimestampedValuesService(timestampedValuesRepository, dataSchemeRepository); + timestampedValuesService = new TimestampedValuesService(timestampedValuesRepository, dataSchemeRepository); + } + + [Fact] + public async Task TestServiceEfficiency() + { + var discriminatorId = Guid.NewGuid(); + const int count = 10; + var dtos = Generate(count, DateTimeOffset.UtcNow); + var addRangeResult = await timestampedValuesService + .AddRange(discriminatorId, dtos, CancellationToken.None); + Assert.Equal(0, addRangeResult); + + var columnNames = new[] { "A", "B", "C", "D" }; + var geTimestamp = DateTimeOffset.UtcNow + .AddHours(-1) + .ToUniversalTime(); + var getResult = await timestampedValuesService + .Get(discriminatorId, geTimestamp, columnNames, 0, count, CancellationToken.None); + Assert.NotNull(getResult); + Assert.Empty(getResult); + } + + private static IEnumerable Generate(int countToCreate, DateTimeOffset from) + { + var result = new List(); + for (int i = 0; i < countToCreate; i++) + { + var values = new Dictionary() + { + { "A", i }, + { "B", i * 1.1 }, + { "C", $"Any{i}" }, + { "D", DateTimeOffset.Now }, + }; + + yield return new TimestampedValuesDto() + { + Timestamp = from.AddSeconds(i), + Values = values + }; + } } } diff --git a/DD.Persistence.sln b/DD.Persistence.sln index eeb198c..03f0be9 100644 --- a/DD.Persistence.sln +++ b/DD.Persistence.sln @@ -28,6 +28,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SolutionItems", "SolutionIt Directory.Build.props = Directory.Build.props EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DD.Persistence.Test", "DD.Persistence.Test\DD.Persistence.Test.csproj", "{B8C774E6-6B75-41AC-B3CF-10BD3623B2FA}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -74,6 +76,10 @@ Global {08B03623-A1C9-482F-B60E-09F293E04999}.Debug|Any CPU.Build.0 = Debug|Any CPU {08B03623-A1C9-482F-B60E-09F293E04999}.Release|Any CPU.ActiveCfg = Release|Any CPU {08B03623-A1C9-482F-B60E-09F293E04999}.Release|Any CPU.Build.0 = Release|Any CPU + {B8C774E6-6B75-41AC-B3CF-10BD3623B2FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B8C774E6-6B75-41AC-B3CF-10BD3623B2FA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B8C774E6-6B75-41AC-B3CF-10BD3623B2FA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B8C774E6-6B75-41AC-B3CF-10BD3623B2FA}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE