Skip to content

Commit 70b4df8

Browse files
committed
Changed MediaChannel queue calls to not use mediasessionid as a parameter
1 parent dbf5c87 commit 70b4df8

20 files changed

+221
-233
lines changed

Sharpcaster.Test/ChromecastApplicationTester.cs

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using Sharpcaster.Models;
22
using Sharpcaster.Test.customChannel;
33
using Sharpcaster.Test.helper;
4-
using System;
54
using System.Threading.Tasks;
65
using Xunit;
76
using Xunit.Abstractions;
@@ -25,7 +24,7 @@ public async Task ConnectToChromecastAndLaunchApplication(ChromecastReceiver rec
2524
var client = await TestHelper.CreateAndConnectClient(output, receiver);
2625
var status = await client.LaunchApplicationAsync("B3419EF5");
2726

28-
Assert.Equal("B3419EF5", status.Applications[0].AppId);
27+
Assert.Equal("B3419EF5", status.Application.AppId);
2928

3029
await client.DisconnectAsync();
3130
}
@@ -38,13 +37,13 @@ public async Task ConnectToChromecastAndLaunchApplicationTwice(ChromecastReceive
3837
var client = await TestHelper.CreateAndConnectClient(output, receiver);
3938
var status = await client.LaunchApplicationAsync("B3419EF5");
4039

41-
var firstLaunchTransportId = status.Applications[0].TransportId;
40+
var firstLaunchTransportId = status.Application.TransportId;
4241
await client.DisconnectAsync();
4342

44-
status = await client.ConnectChromecast(receiver);
43+
_ = await client.ConnectChromecast(receiver);
4544
status = await client.LaunchApplicationAsync("B3419EF5", true);
4645

47-
Assert.Equal(firstLaunchTransportId, status.Applications[0].TransportId);
46+
Assert.Equal(firstLaunchTransportId, status.Application.TransportId);
4847
}
4948

5049

@@ -56,15 +55,15 @@ public async Task ConnectToChromecastAndLaunchApplicationTwiceWithoutJoining1(Ch
5655
var client = await TestHelper.CreateAndConnectClient(output, receiver);
5756
var status = await client.LaunchApplicationAsync("B3419EF5");
5857

59-
var firstLaunchTransportId = status.Applications[0].TransportId;
58+
var firstLaunchTransportId = status.Application.TransportId;
6059
await client.DisconnectAsync();
6160

62-
status = await client.ConnectChromecast(receiver);
61+
_ = await client.ConnectChromecast(receiver);
6362
status = await client.LaunchApplicationAsync("B3419EF5", false);
6463

6564

6665
// My JBL Device (almost every time - but not always ) makes a new ID here!!!! (The other device - ChromecastAudio DOES NOT!?)
67-
Assert.NotEqual(firstLaunchTransportId, status.Applications[0].TransportId);
66+
Assert.NotEqual(firstLaunchTransportId, status.Application.TransportId);
6867
}
6968

7069
[Theory]
@@ -74,14 +73,14 @@ public async Task ConnectToChromecastAndLaunchApplicationTwiceWithoutJoining2(Ch
7473
var client = await TestHelper.CreateAndConnectClient(output, receiver);
7574
var status = await client.LaunchApplicationAsync("B3419EF5");
7675

77-
var firstLaunchTransportId = status.Applications[0].TransportId;
76+
var firstLaunchTransportId = status.Application.TransportId;
7877
await client.DisconnectAsync();
7978

80-
status = await client.ConnectChromecast(receiver);
79+
_ = await client.ConnectChromecast(receiver);
8180
status = await client.LaunchApplicationAsync("B3419EF5", false);
8281

8382
// My ChromecastAudio device keeps the same transport session here!
84-
Assert.Equal(firstLaunchTransportId, status.Applications[0].TransportId);
83+
Assert.Equal(firstLaunchTransportId, status.Application.TransportId);
8584
}
8685

8786

@@ -93,13 +92,13 @@ public async Task ConnectToChromecastAndLaunchApplicationAThenLaunchApplicationB
9392
var client = await TestHelper.CreateAndConnectClient(output, receiver);
9493
var status = await client.LaunchApplicationAsync("A9BCCB7C"); //Youtube
9594

96-
var firstLaunchTransportId = status.Applications[0].TransportId;
95+
var firstLaunchTransportId = status.Application.TransportId;
9796
await client.DisconnectAsync();
9897

99-
status = await client.ConnectChromecast(receiver);
98+
_ = await client.ConnectChromecast(receiver);
10099
status = await client.LaunchApplicationAsync("B3419EF5"); //My sample Application
101100

102-
Assert.NotEqual(firstLaunchTransportId, status.Applications[0].TransportId);
101+
Assert.NotEqual(firstLaunchTransportId, status.Application.TransportId);
103102
}
104103

105104
[Theory]
@@ -110,11 +109,11 @@ public async Task ConnectToChromecastAndLaunchApplicationOnceAndJoinIt(Chromecas
110109
var client = await TestHelper.CreateAndConnectClient(output, receiver);
111110
var status = await client.LaunchApplicationAsync("B3419EF5");
112111

113-
var firstLaunchTransportId = status.Applications[0].TransportId;
112+
var firstLaunchTransportId = status.Application.TransportId;
114113

115114
status = await client.LaunchApplicationAsync("B3419EF5");
116115

117-
Assert.Equal(firstLaunchTransportId, status.Applications[0].TransportId);
116+
Assert.Equal(firstLaunchTransportId, status.Application.TransportId);
118117
}
119118

120119
//Seems like this isn't really working anymore and just loading a white screen

Sharpcaster.Test/ChromecastConnectionTester.cs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
using Microsoft.VisualStudio.TestPlatform.Utilities;
2-
using Sharpcaster.Models;
1+
using Sharpcaster.Models;
32
using System.Threading;
43
using System.Threading.Tasks;
54
using Xunit;
65
using Xunit.Abstractions;
76
using Sharpcaster.Test.helper;
8-
using Sharpcaster.Interfaces;
97
using Sharpcaster.Models.Media;
108
using System;
119
using System.Linq;
@@ -25,8 +23,6 @@ public ChromecastConnectionTester(ITestOutputHelper outputHelper, ChromecastDevi
2523

2624
[Theory]
2725
[MemberData(nameof(ChromecastReceiversFilter.GetAll), MemberType = typeof(ChromecastReceiversFilter))]
28-
//[MemberData(nameof(CCDevices.GetJblSpeaker), MemberType = typeof(CCDevices))]
29-
//[MemberData(nameof(CCDevices.GetAny), MemberType = typeof(CCDevices))]
3026
public async Task SearchChromecastsAndConnectToIt(ChromecastReceiver receiver)
3127
{
3228
var TestHelper = new TestHelper();
@@ -35,8 +31,6 @@ public async Task SearchChromecastsAndConnectToIt(ChromecastReceiver receiver)
3531
}
3632

3733
[Theory(Skip = "Test needs manuell interactions -> skipped for autotestings")]
38-
//[Theory()]
39-
//[MemberData(nameof(CCDevices.GetAny), MemberType = typeof(CCDevices))]
4034
[MemberData(nameof(ChromecastReceiversFilter.GetAny), MemberType = typeof(ChromecastReceiversFilter))]
4135
public async Task SearchChromecastsAndConnectToItThenWaitForItToShutdown(ChromecastReceiver receiver)
4236
{
@@ -59,8 +53,6 @@ public async Task SearchChromecastsAndConnectToItThenWaitForItToShutdown(Chromec
5953
}
6054

6155
[Theory]
62-
//[MemberData(nameof(ChromecastReceiversFilter.GetChromecastUltra), MemberType = typeof(ChromecastReceiversFilter))]
63-
//[MemberData(nameof(ChromecastReceiversFilter.GetJblSpeaker), MemberType = typeof(ChromecastReceiversFilter))]
6456
[MemberData(nameof(ChromecastReceiversFilter.GetAny), MemberType = typeof(ChromecastReceiversFilter))]
6557
public async Task TestingHeartBeat(ChromecastReceiver receiver)
6658
{

Sharpcaster.Test/LoggingTester.cs

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,6 @@
1-
using Google.Protobuf.WellKnownTypes;
2-
using Microsoft.Extensions.DependencyInjection;
3-
using Microsoft.Extensions.Logging;
4-
using Microsoft.VisualStudio.TestPlatform.Utilities;
5-
using Moq;
6-
using Sharpcaster.Channels;
7-
using Sharpcaster.Interfaces;
8-
using Sharpcaster.Messages;
9-
using Sharpcaster.Models;
1+
using Sharpcaster.Models;
102
using Sharpcaster.Models.Media;
11-
using System;
123
using System.Collections.Generic;
13-
using System.Linq;
14-
using System.Reflection;
154
using System.Threading.Tasks;
165
using Xunit;
176
using Xunit.Abstractions;
@@ -29,12 +18,9 @@ public LoggingTester(ITestOutputHelper outputHelper) {
2918
[Fact]
3019
public void TestLogging() {
3120
var TestHelper = new TestHelper();
32-
List<string> logLines = new List<string>();
33-
var client = TestHelper.GetClientWithTestOutput(output, assertableLog: logLines);
21+
List<string> logLines = [];
22+
_ = TestHelper.GetClientWithTestOutput(output, assertableLog: logLines);
3423

35-
//var loggerFactory = TestHelper.CreateMockedLoggerFactory(logLines);
36-
37-
//var client = new ChromecastClient(loggerFactory: loggerFactory);
3824
Assert.Equal("[LAUNCH_ERROR,RECEIVER_STATUS,QUEUE_CHANGE,QUEUE_ITEM_IDS,QUEUE_ITEMS,DEVICE_UPDATED,MULTIZONE_STATUS,INVALID_REQUEST,LOAD_CANCELLED,LOAD_FAILED,MEDIA_STATUS,PING,CLOSE]", logLines[0]);
3925
}
4026

Sharpcaster.Test/MdnsChromecastLocatorTester.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@ public async Task SearchChromecastsTrickerEvent()
3636
public async Task SearchChromecastsWithTooShortTimeout()
3737
{
3838
IChromecastLocator locator = new MdnsChromecastLocator();
39-
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
40-
cancellationTokenSource.CancelAfter(TimeSpan.FromMilliseconds(0));
39+
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromMilliseconds(0));
4140
var chromecasts = await locator.FindReceiversAsync(cancellationTokenSource.Token);
4241
Assert.Empty(chromecasts);
4342
}

Sharpcaster.Test/MediaChannelTester.cs

Lines changed: 24 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public async Task TestWaitForDeviceStopDuringPlayback(ChromecastReceiver receive
5151

5252
mediaChannel.StatusChanged += (object sender, EventArgs e) => {
5353
try {
54-
MediaStatus status = mediaChannel.Status.FirstOrDefault();
54+
MediaStatus status = mediaChannel.MediaStatus;
5555
output.WriteLine(status?.PlayerState.ToString());
5656
} catch (Exception) {
5757
}
@@ -82,7 +82,7 @@ public async Task TestWaitForDeviceStopDuringPlayback(ChromecastReceiver receive
8282

8383

8484
[Theory]
85-
[MemberData(nameof(ChromecastReceiversFilter.GetDefaultDevice), MemberType = typeof(ChromecastReceiversFilter))]
85+
[MemberData(nameof(ChromecastReceiversFilter.GetChromecastUltra), MemberType = typeof(ChromecastReceiversFilter))]
8686
public async Task TestLoadingMediaQueueAndNavigateNextPrev(ChromecastReceiver receiver) {
8787

8888
var TestHelper = new TestHelper();
@@ -93,11 +93,13 @@ public async Task TestLoadingMediaQueueAndNavigateNextPrev(ChromecastReceiver re
9393
QueueItem[] MyCd = TestHelper.CreateTestCd();
9494

9595
int testSequenceCount = 0;
96+
var mediaStatusChanged = 0;
9697

9798
//We are setting up an event to listen to status change. Because we don't know when the audio has started to play
9899
mediaChannel.StatusChanged += async (object sender, EventArgs e) => {
99100
try {
100-
MediaStatus status = mediaChannel.Status.FirstOrDefault();
101+
mediaStatusChanged += 1;
102+
MediaStatus status = mediaChannel.MediaStatus;
101103
int currentItemId = status?.CurrentItemId ?? -1;
102104

103105
if (currentItemId != -1 && status.PlayerState == PlayerStateType.Playing) {
@@ -108,7 +110,7 @@ public async Task TestLoadingMediaQueueAndNavigateNextPrev(ChromecastReceiver re
108110
output.WriteLine("First Test Track started playin. listen for some seconds....");
109111
await Task.Delay(6000);
110112
output.WriteLine("Lets goto next item");
111-
status = await mediaChannel.QueueNextAsync(status.MediaSessionId);
113+
status = await mediaChannel.QueueNextAsync();
112114
// Asserts
113115
// ...
114116
} else {
@@ -125,8 +127,8 @@ public async Task TestLoadingMediaQueueAndNavigateNextPrev(ChromecastReceiver re
125127
testSequenceCount++;
126128
await Task.Delay(6000);
127129
output.WriteLine("Lets goto back to first one");
128-
status = await mediaChannel.QueuePrevAsync(status.MediaSessionId);
129-
}
130+
status = await mediaChannel.QueuePrevAsync();
131+
}
130132

131133
}
132134
} catch (Exception ex) {
@@ -144,7 +146,8 @@ public async Task TestLoadingMediaQueueAndNavigateNextPrev(ChromecastReceiver re
144146
Assert.Equal(status.CurrentItemId, status.Items[0].ItemId);
145147

146148
//This keeps the test running untill all eventhandler sequence steps are finished. If something goes wrong we get a very slow timeout here.
147-
Assert.True(_autoResetEvent.WaitOne(20000));
149+
await Task.Delay(10000);
150+
Assert.True(_autoResetEvent.WaitOne(5000));
148151
await client.DisconnectAsync();
149152
}
150153

@@ -165,16 +168,16 @@ public async Task TestLoadMediaQueueAndCheckContent(ChromecastReceiver receiver)
165168

166169
await Task.Delay(2000);
167170

168-
int[] ids = await client.MediaChannel.QueueGetItemIdsAsync(status.MediaSessionId);
171+
int[] ids = await client.MediaChannel.QueueGetItemIdsAsync();
169172

170173
Assert.Equal(4, ids.Length);
171174

172175
foreach (int id in ids) {
173-
QueueItem[] items = await client.MediaChannel.QueueGetItemsAsync(status.MediaSessionId, new int[] {id});
176+
QueueItem[] items = await client.MediaChannel.QueueGetItemsAsync(new int[] {id});
174177
Assert.Single(items);
175178
}
176179

177-
QueueItem[] items2 = await client.MediaChannel.QueueGetItemsAsync(status.MediaSessionId, ids);
180+
QueueItem[] items2 = await client.MediaChannel.QueueGetItemsAsync(ids);
178181
Assert.Equal(4, items2.Length);
179182
await client.DisconnectAsync();
180183
}
@@ -239,7 +242,7 @@ public async Task StartApplicationAThenStartBAndLoadMedia(ChromecastReceiver rec
239242
}
240243

241244
[Theory]
242-
[MemberData(nameof(ChromecastReceiversFilter.GetAny), MemberType = typeof(ChromecastReceiversFilter))]
245+
[MemberData(nameof(ChromecastReceiversFilter.GetChromecastUltra), MemberType = typeof(ChromecastReceiversFilter))]
243246
public async Task TestLoadingAndPausingMedia(ChromecastReceiver receiver)
244247
{
245248
var TestHelper = new TestHelper();
@@ -277,14 +280,15 @@ public async Task TestLoadingAndPausingMedia(ChromecastReceiver receiver)
277280
runSequence += "2";
278281

279282
//This checks that within 5000 ms we have loaded video and were able to pause it
280-
Assert.True(_autoResetEvent.WaitOne(5000));
283+
await Task.Delay(3000);
284+
Assert.True(_autoResetEvent.WaitOne(2000));
281285
runSequence += "3";
282286
Assert.Equal("R1p2P3", runSequence);
283287
await client.DisconnectAsync();
284288
}
285289

286290
[Theory]
287-
[MemberData(nameof(ChromecastReceiversFilter.GetAll), MemberType = typeof(ChromecastReceiversFilter))]
291+
[MemberData(nameof(ChromecastReceiversFilter.GetChromecastUltra), MemberType = typeof(ChromecastReceiversFilter))]
288292
public async Task TestLoadingAndStoppingMedia(ChromecastReceiver receiver)
289293
{
290294
var TestHelper = new TestHelper();
@@ -303,7 +307,7 @@ public async Task TestLoadingAndStoppingMedia(ChromecastReceiver receiver)
303307
client.MediaChannel.StatusChanged += async (object sender, EventArgs e) =>
304308
{
305309
try {
306-
if (client.MediaChannel.Status.FirstOrDefault()?.PlayerState == PlayerStateType.Playing) {
310+
if (client.MediaChannel.MediaStatus?.PlayerState == PlayerStateType.Playing) {
307311
if (firstPlay) {
308312
firstPlay = false;
309313
await Task.Delay(2000); // Listen for some time
@@ -319,7 +323,8 @@ public async Task TestLoadingAndStoppingMedia(ChromecastReceiver receiver)
319323
mediaStatus = await client.MediaChannel.LoadAsync(media);
320324

321325
//This checks that within 5000 ms we have loaded video and were able to pause it
322-
Assert.True(_autoResetEvent.WaitOne(10000));
326+
await Task.Delay(3000);
327+
Assert.True(_autoResetEvent.WaitOne(2000));
323328

324329
await client.DisconnectAsync();
325330
}
@@ -330,7 +335,6 @@ public async Task TestFailingLoadMedia(ChromecastReceiver receiver)
330335
{
331336
var TestHelper = new TestHelper();
332337
ChromecastClient client = await TestHelper.CreateConnectAndLoadAppClient(output, receiver);
333-
AutoResetEvent _autoResetEvent = new AutoResetEvent(false);
334338

335339
var media = new Media
336340
{
@@ -348,8 +352,7 @@ public async Task TestFailingLoadMedia(ChromecastReceiver receiver)
348352
loadFailedException = ex;
349353
}
350354

351-
Assert.True(loadFailedException?.Message == "Load failed");
352-
355+
Assert.Equal("Load failed", loadFailedException?.Message);
353356
}
354357

355358
[Theory]
@@ -358,25 +361,20 @@ public async Task TestJoiningRunningMediaSessionAndPausingMedia(ChromecastReceiv
358361
{
359362
var TestHelper = new TestHelper();
360363
ChromecastClient client = await TestHelper.CreateConnectAndLoadAppClient(output, receiver);
361-
AutoResetEvent _autoResetEvent = new AutoResetEvent(false);
362-
MediaStatus mediaStatus;
363364

364365
var media = new Media
365366
{
366367
ContentUrl = "https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/mp4/DesigningForGoogleCast.mp4"
367368
};
368369

369-
mediaStatus = await client.MediaChannel.LoadAsync(media);
370+
await client.MediaChannel.LoadAsync(media);
370371
await client.MediaChannel.PlayAsync();
371372

372373
client = TestHelper.GetClientWithTestOutput(output);
373374
var status = await client.ConnectChromecast(receiver);
374375

375-
var applicationRunning = status.Applications[0];
376-
377-
378-
379-
var chromecastStatus = await client.LaunchApplicationAsync(applicationRunning.AppId, true);
376+
var applicationRunning = status.Application;
377+
await client.LaunchApplicationAsync(applicationRunning.AppId, true);
380378
await client.MediaChannel.PauseAsync();
381379
}
382380

@@ -397,7 +395,6 @@ public async Task TestRepeatingAllQueueMedia(ChromecastReceiver receiver)
397395
Media = media
398396
};
399397

400-
401398
await client.MediaChannel.QueueLoadAsync([queueItem], null, RepeatModeType.ALL);
402399
var test = await client.MediaChannel.PlayAsync();
403400

@@ -421,7 +418,6 @@ public async Task TestRepeatingOffQueueMedia(ChromecastReceiver receiver)
421418
Media = media
422419
};
423420

424-
425421
await client.MediaChannel.QueueLoadAsync([queueItem], null, RepeatModeType.OFF);
426422
var test = await client.MediaChannel.PlayAsync();
427423

@@ -445,7 +441,6 @@ public async Task TestRepeatingSingleQueueMedia(ChromecastReceiver receiver)
445441
Media = media
446442
};
447443

448-
449444
await client.MediaChannel.QueueLoadAsync([queueItem], null, RepeatModeType.SINGLE);
450445
var test = await client.MediaChannel.PlayAsync();
451446

@@ -469,7 +464,6 @@ public async Task TestRepeatingAllAndShuffleQueueMedia(ChromecastReceiver receiv
469464
Media = media
470465
};
471466

472-
473467
await client.MediaChannel.QueueLoadAsync([queueItem], null, RepeatModeType.ALL_AND_SHUFFLE);
474468
var test = await client.MediaChannel.PlayAsync();
475469

0 commit comments

Comments
 (0)