Skip to content

Commit 28396ff

Browse files
authored
[MDAPI-165] [.NET] DxFeed.Graal.Net.Schedules.GetNextSession does not return null if no session exists (#84)
1 parent 660ea56 commit 28396ff

File tree

6 files changed

+75
-17
lines changed

6 files changed

+75
-17
lines changed

ReleaseNotes.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
* [MDAPI-165] [.NET] DxFeed.Graal.Net.Schedules.GetNextSession does not return null if no session exists
2+
13
## Version 2.5.1
24

35
* [MDAPI-124] [.NET] Remove the ability to pass multiple sources for PriceLeveBookSample

src/DxFeed.Graal.Net/DxFeed.Graal.Net.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<PrivateAssets>all</PrivateAssets>
2222
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2323
</PackageReference>
24-
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="8.0.0"/>
24+
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="8.0.1" />
2525
<PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
2626
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="8.0.2" />
2727
<PackageReference Include="Microsoft.Extensions.Configuration.Ini" Version="8.0.0" />

src/DxFeed.Graal.Net/Schedules/Day.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,8 @@ public Session GetSessionByTime(long time) =>
178178
public bool TryGetFirstSession(SessionFilter filter, out Session session)
179179
{
180180
session = null!;
181-
var first = this.handle.FindFirstSession(filter.Handle);
182-
if (first == null)
181+
var first = handle.FindFirstSession(filter.Handle);
182+
if (first == null || first.IsInvalid)
183183
{
184184
return false;
185185
}
@@ -216,13 +216,13 @@ public bool TryGetFirstSession(SessionFilter filter, out Session session)
216216
public bool TryGetLastSession(SessionFilter filter, out Session session)
217217
{
218218
session = null!;
219-
var first = this.handle.FindLastSession(filter.Handle);
220-
if (first == null)
219+
var last = handle.FindLastSession(filter.Handle);
220+
if (last == null || last.IsInvalid)
221221
{
222222
return false;
223223
}
224224

225-
session = new Session(Schedule, first);
225+
session = new Session(Schedule, last);
226226
return true;
227227
}
228228

@@ -248,8 +248,8 @@ public bool TryGetLastSession(SessionFilter filter, out Session session)
248248
public bool TryGetPrevDay(DayFilter filter, out Day day)
249249
{
250250
day = null!;
251-
var prev = this.handle.FindPrevDay(filter.Handle);
252-
if (prev == null)
251+
var prev = handle.FindPrevDay(filter.Handle);
252+
if (prev == null || prev.IsInvalid)
253253
{
254254
return false;
255255
}
@@ -284,8 +284,8 @@ public bool TryGetPrevDay(DayFilter filter, out Day day)
284284
public bool TryGetNextDay(DayFilter filter, out Day day)
285285
{
286286
day = null!;
287-
var next = this.handle.FindNextDay(filter.Handle);
288-
if (next == null)
287+
var next = handle.FindNextDay(filter.Handle);
288+
if (next == null || next.IsInvalid)
289289
{
290290
return false;
291291
}

src/DxFeed.Graal.Net/Schedules/Schedule.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,13 +147,13 @@ public Day GetDayByYearMonthDay(int yearMonthDay) =>
147147
public bool TryGetNearestSessionByTime(long time, SessionFilter filter, out Session session)
148148
{
149149
session = null!;
150-
var prev = handle.FindNearestSessionByTime(time, filter.Handle);
151-
if (prev == null)
150+
var nearest = handle.FindNearestSessionByTime(time, filter.Handle);
151+
if (nearest == null || nearest.IsInvalid)
152152
{
153153
return false;
154154
}
155155

156-
session = new Session(this, prev);
156+
session = new Session(this, nearest);
157157
return true;
158158
}
159159

src/DxFeed.Graal.Net/Schedules/Session.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ public bool TryGetPrevSession(SessionFilter filter, out Session session)
105105
{
106106
session = null!;
107107
var prev = handle.FindPrevSession(filter.Handle);
108-
if (prev == null)
108+
if (prev == null || prev.IsInvalid)
109109
{
110110
return false;
111111
}
@@ -144,13 +144,13 @@ public bool TryGetPrevSession(SessionFilter filter, out Session session)
144144
public bool TryGetNextSession(SessionFilter filter, out Session session)
145145
{
146146
session = null!;
147-
var prev = handle.FindNextSession(filter.Handle);
148-
if (prev == null)
147+
var next = handle.FindNextSession(filter.Handle);
148+
if (next == null || next.IsInvalid)
149149
{
150150
return false;
151151
}
152152

153-
session = new Session(schedule, prev);
153+
session = new Session(schedule, next);
154154
return true;
155155
}
156156

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
// <copyright file="ScheduleTest.cs" company="Devexperts LLC">
2+
// Copyright © 2024 Devexperts LLC. All rights reserved.
3+
// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
4+
// If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
5+
// </copyright>
6+
7+
using DxFeed.Graal.Net.Ipf;
8+
using DxFeed.Graal.Net.Schedules;
9+
10+
namespace DxFeed.Graal.Net.Tests.Schedules;
11+
12+
[TestFixture]
13+
public class ScheduleTest
14+
{
15+
private static readonly string TestIpf = Path.Combine(TestContext.CurrentContext.TestDirectory, "ipf.txt");
16+
17+
[Test]
18+
public void Day_ShouldReturnsNullValueForInvalidSession()
19+
{
20+
var profiles = new InstrumentProfileReader().ReadFromFile(TestIpf);
21+
foreach (var profile in profiles) {
22+
var schedule = Schedule.GetInstance(profile);
23+
var day = schedule.GetDayByYearMonthDay(01012024);
24+
var session = day.GetFirstSession(SessionFilter.AFTER_MARKET);
25+
Assert.That(session, Is.Null);
26+
session = day.GetLastSession(SessionFilter.AFTER_MARKET);
27+
Assert.That(session, Is.Null);
28+
Assert.Multiple(() =>
29+
{
30+
Assert.That(day.TryGetFirstSession(SessionFilter.AFTER_MARKET, out session), Is.False);
31+
Assert.That(session, Is.Null);
32+
Assert.That(day.TryGetLastSession(SessionFilter.AFTER_MARKET, out session), Is.False);
33+
Assert.That(session, Is.Null);
34+
});
35+
}
36+
}
37+
38+
[Test]
39+
public void Day_ShouldReturnsNullValueForInvalidDay()
40+
{
41+
var profiles = new InstrumentProfileReader().ReadFromFile(TestIpf);
42+
foreach (var profile in profiles) {
43+
var schedule = Schedule.GetInstance(profile);
44+
var day = schedule.GetDayByYearMonthDay(01011950);
45+
Assert.Multiple(() =>
46+
{
47+
Assert.That(day.GetNextDay(DayFilter.SHORT_DAY), Is.Null);
48+
Assert.That(day.GetPrevDay(DayFilter.SHORT_DAY), Is.Null);
49+
Assert.That(day.TryGetNextDay(DayFilter.SHORT_DAY, out var nextDay), Is.False);
50+
Assert.That(nextDay, Is.Null);
51+
Assert.That(day.TryGetPrevDay(DayFilter.SHORT_DAY, out var prevDay), Is.False);
52+
Assert.That(prevDay, Is.Null);
53+
});
54+
}
55+
}
56+
}

0 commit comments

Comments
 (0)