Skip to content

Commit 6a9b402

Browse files
committed
✅ fix tests
semver: chore
1 parent eb20ff2 commit 6a9b402

2 files changed

Lines changed: 77 additions & 45 deletions

File tree

EliteAPI.Tests/StatusChangeEventTests.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public class StatusChangeEventTests
88
[Test]
99
public void FiresStatusEvent_WhenStatusJsonProcessed()
1010
{
11-
var api = new EliteDangerousApi();
11+
var api = new EliteDangerousApi(null, null);
1212
var statusEventFired = false;
1313

1414
api.OnJson("Status", e => statusEventFired = true);
@@ -22,7 +22,7 @@ public void FiresStatusEvent_WhenStatusJsonProcessed()
2222
[Test]
2323
public void FiresChangeEvent_WhenFieldChanges()
2424
{
25-
var api = new EliteDangerousApi();
25+
var api = new EliteDangerousApi(null, null);
2626
var gearChangeEventFired = false;
2727

2828
api.OnJson("Status.Gear", e => gearChangeEventFired = true);
@@ -43,7 +43,7 @@ public void FiresChangeEvent_WhenFieldChanges()
4343
[Test]
4444
public void DoesNotFireChangeEvent_WhenFieldStaysSame()
4545
{
46-
var api = new EliteDangerousApi();
46+
var api = new EliteDangerousApi(null, null);
4747
var gearChangeEventFired = false;
4848

4949
api.OnJson("Status.Gear", e => gearChangeEventFired = true);
@@ -62,7 +62,7 @@ public void DoesNotFireChangeEvent_WhenFieldStaysSame()
6262
[Test]
6363
public void FiresMultipleChangeEvents_WhenMultipleFieldsChange()
6464
{
65-
var api = new EliteDangerousApi();
65+
var api = new EliteDangerousApi(null, null);
6666
var gearChangeEventFired = false;
6767
var hardpointsChangeEventFired = false;
6868

@@ -84,7 +84,7 @@ public void FiresMultipleChangeEvents_WhenMultipleFieldsChange()
8484
[Test]
8585
public void FiresChangeEvent_ForNumericFieldChanges()
8686
{
87-
var api = new EliteDangerousApi();
87+
var api = new EliteDangerousApi(null, null);
8888
var guiFocusChangeEventFired = false;
8989

9090
api.OnJson("Status.GuiFocus", e => guiFocusChangeEventFired = true);
@@ -103,7 +103,7 @@ public void FiresChangeEvent_ForNumericFieldChanges()
103103
[Test]
104104
public void FiresChangeEvent_ForNestedFieldChanges()
105105
{
106-
var api = new EliteDangerousApi();
106+
var api = new EliteDangerousApi(null, null);
107107
var fuelChangeEventFired = false;
108108

109109
api.OnJson("Status.Fuel", e => fuelChangeEventFired = true);
@@ -122,7 +122,7 @@ public void FiresChangeEvent_ForNestedFieldChanges()
122122
[Test]
123123
public void FiresChangeEvent_ForPipsChanges()
124124
{
125-
var api = new EliteDangerousApi();
125+
var api = new EliteDangerousApi(null, null);
126126
var pipsChangeEventFired = false;
127127

128128
api.OnJson("Status.Pips", e => pipsChangeEventFired = true);
@@ -141,7 +141,7 @@ public void FiresChangeEvent_ForPipsChanges()
141141
[Test]
142142
public void FiresEventsInCorrectOrder_StatusThenChanges()
143143
{
144-
var api = new EliteDangerousApi();
144+
var api = new EliteDangerousApi(null, null);
145145
var eventOrder = new List<string>();
146146

147147
api.OnAllJson(e =>
@@ -168,7 +168,7 @@ public void FiresEventsInCorrectOrder_StatusThenChanges()
168168
[Test]
169169
public void OnlyFiresChangeEvent_ForRootField_NotSubfields()
170170
{
171-
var api = new EliteDangerousApi();
171+
var api = new EliteDangerousApi(null, null);
172172
var eventsFired = new List<string>();
173173

174174
api.OnAllJson(e =>
@@ -195,7 +195,7 @@ public void OnlyFiresChangeEvent_ForRootField_NotSubfields()
195195
[Test]
196196
public void DoesNotFireChangeEvents_ForNonStatusEvents()
197197
{
198-
var api = new EliteDangerousApi();
198+
var api = new EliteDangerousApi(null, null);
199199
var changeEventsFired = 0;
200200

201201
api.OnAllJson(e =>
@@ -214,7 +214,7 @@ public void DoesNotFireChangeEvents_ForNonStatusEvents()
214214
[Test]
215215
public void AllowsMultipleHandlers_ForSameChangeEvent()
216216
{
217-
var api = new EliteDangerousApi();
217+
var api = new EliteDangerousApi(null, null);
218218
var handler1Fired = false;
219219
var handler2Fired = false;
220220

@@ -236,7 +236,7 @@ public void AllowsMultipleHandlers_ForSameChangeEvent()
236236
[Test]
237237
public void FiresChangeEvent_ForBalance_WhenItChanges()
238238
{
239-
var api = new EliteDangerousApi();
239+
var api = new EliteDangerousApi(null, null);
240240
var balanceChangeEventFired = false;
241241

242242
api.OnJson("Status.Balance", e => balanceChangeEventFired = true);

EliteAPI/EliteDangerousApi.cs

Lines changed: 65 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -31,47 +31,79 @@ public class EliteDangerousApi
3131
private readonly Dictionary<string, List<Action<(string eventName, string json)>>> _untypedEventHandlers = new(StringComparer.OrdinalIgnoreCase);
3232
private readonly List<Action<IReadOnlyCollection<Control>>> _bindingsHandlers = [];
3333

34-
public EliteDangerousApi()
34+
public EliteDangerousApi() : this(JournalUtils.GetJournalsDirectory(), BindingsUtils.GetBindingsDirectory())
3535
{
36-
string[] statusFiles = [
37-
"Cargo.json",
38-
"Market.json",
39-
"ModulesInfo.json",
40-
"NavRoute.json",
41-
"Outfitting.json",
42-
"ShipLocker.json",
43-
"Shipyard.json",
44-
"Status.json"
45-
];
46-
47-
_statusWatchers = statusFiles
48-
.Select(fileName => FileWatcher.Create(JournalUtils.GetJournalsDirectory(), fileName, FileWatchMode.EntireFile))
49-
.ToList();
50-
51-
_journalWatcher = FileWatcher.Create(JournalUtils.GetJournalsDirectory(), "Journal.*.log", FileWatchMode.LineByLine);
52-
53-
_bindingsPresetsWatcher = FileWatcher.Create(BindingsUtils.GetBindingsDirectory(), "StartPreset*", FileWatchMode.EntireFile);
5436
}
5537

56-
public void Start()
38+
/// <summary>
39+
/// Creates a new instance of the API with custom directories.
40+
/// Pass null for directories to skip file watcher initialization (useful for testing).
41+
/// </summary>
42+
public EliteDangerousApi(DirectoryInfo? journalDirectory, DirectoryInfo? bindingsDirectory)
5743
{
58-
_journalWatcher.OnContentChanged((json) =>
44+
if (journalDirectory != null)
5945
{
60-
JournalUtils.PrepareLocalisations(json);
61-
Invoke(json);
62-
});
63-
_journalWatcher.OnFileChanged(file =>
46+
string[] statusFiles = [
47+
"Cargo.json",
48+
"Market.json",
49+
"ModulesInfo.json",
50+
"NavRoute.json",
51+
"Outfitting.json",
52+
"ShipLocker.json",
53+
"Shipyard.json",
54+
"Status.json"
55+
];
56+
57+
_statusWatchers = statusFiles
58+
.Select(fileName => FileWatcher.Create(journalDirectory, fileName, FileWatchMode.EntireFile))
59+
.ToList();
60+
61+
_journalWatcher = FileWatcher.Create(journalDirectory, "Journal.*.log", FileWatchMode.LineByLine);
62+
}
63+
else
64+
{
65+
_statusWatchers = [];
66+
_journalWatcher = null!;
67+
}
68+
69+
if (bindingsDirectory != null)
70+
{
71+
_bindingsPresetsWatcher = FileWatcher.Create(bindingsDirectory, "StartPreset*", FileWatchMode.EntireFile);
72+
}
73+
else
74+
{
75+
_bindingsPresetsWatcher = null!;
76+
}
77+
}
78+
79+
public void Start()
80+
{
81+
if (_journalWatcher != null)
6482
{
65-
foreach (var handler in _journalChangedHandlers)
66-
SafeInvoke.Invoke("handling journal switch", handler, file);
67-
});
68-
_statusWatchers.ForEach(w => w.OnContentChanged(Invoke));
69-
_bindingsPresetsWatcher.OnContentChanged(HandleBindingsPreset);
83+
_journalWatcher.OnContentChanged((json) =>
84+
{
85+
JournalUtils.PrepareLocalisations(json);
86+
Invoke(json);
87+
});
88+
_journalWatcher.OnFileChanged(file =>
89+
{
90+
foreach (var handler in _journalChangedHandlers)
91+
SafeInvoke.Invoke("handling journal switch", handler, file);
92+
});
93+
_journalWatcher.StartWatching();
94+
}
7095

71-
_statusWatchers.ForEach(w => w.StartWatching());
72-
_journalWatcher.StartWatching();
73-
HandleBindingsPreset(_bindingsPresetsWatcher.StartWatching());
96+
if (_statusWatchers != null && _statusWatchers.Count > 0)
97+
{
98+
_statusWatchers.ForEach(w => w.OnContentChanged(Invoke));
99+
_statusWatchers.ForEach(w => w.StartWatching());
100+
}
74101

102+
if (_bindingsPresetsWatcher != null)
103+
{
104+
_bindingsPresetsWatcher.OnContentChanged(HandleBindingsPreset);
105+
HandleBindingsPreset(_bindingsPresetsWatcher.StartWatching());
106+
}
75107
}
76108

77109
/// <summary>

0 commit comments

Comments
 (0)