From 4265a57ebfab0d14dffc5b41f1cd8e3b6683514f Mon Sep 17 00:00:00 2001 From: Momo The Monster Date: Sun, 25 Feb 2024 16:13:10 -0800 Subject: [PATCH 1/2] Adds service discovery tests for MeaModDiscovery --- .../MeaModDiscoveryTests.cs | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 Tests/vrc-oscquery-tests/MeaModDiscoveryTests.cs diff --git a/Tests/vrc-oscquery-tests/MeaModDiscoveryTests.cs b/Tests/vrc-oscquery-tests/MeaModDiscoveryTests.cs new file mode 100644 index 0000000..bf41312 --- /dev/null +++ b/Tests/vrc-oscquery-tests/MeaModDiscoveryTests.cs @@ -0,0 +1,73 @@ +using System.Net; + +namespace VRC.OSCQuery.Tests; + +public class MeaModDiscoveryTests +{ + private const int DELAY_TIME_MS = 1000; + + [Test] + public async Task Discovery_WhenOSCQueryServiceAdvertised_ContainsService() + { + // Arrange + // var loggerMock = new Mock>(); + var advertiser = new MeaModDiscovery(); + var discoverer = new MeaModDiscovery(); + var oscQueryServiceProfile = new OSCQueryServiceProfile + ( + Guid.NewGuid().ToString(), + IPAddress.Loopback, + Extensions.GetAvailableTcpPort(), + OSCQueryServiceProfile.ServiceType.OSCQuery + ); + + // Act + advertiser.Advertise(oscQueryServiceProfile); + await Task.Delay(DELAY_TIME_MS); // Wait for the service to be advertised + discoverer.RefreshServices(); + await Task.Delay(DELAY_TIME_MS); // Wait for the service to be discovered + + // Assert + var discoveredServices = discoverer.GetOSCQueryServices(); + Assert.Contains(oscQueryServiceProfile, discoveredServices.ToList()); + + // Cleanup + advertiser.Unadvertise(oscQueryServiceProfile); + } + + [Test] + public async Task Discovery_WhenOSCQueryServiceUnadvertised_DoesNotContainService() + { + // Arrange + // var loggerMock = new Mock>(); + var advertiser = new MeaModDiscovery(); + var discoverer = new MeaModDiscovery(); + var oscQueryServiceProfile = new OSCQueryServiceProfile + ( + Guid.NewGuid().ToString(), + IPAddress.Loopback, + Extensions.GetAvailableTcpPort(), + OSCQueryServiceProfile.ServiceType.OSCQuery + ); + + // Act + advertiser.Advertise(oscQueryServiceProfile); + await Task.Delay(DELAY_TIME_MS); // Wait for the service to be advertised + discoverer.RefreshServices(); + await Task.Delay(DELAY_TIME_MS); // Wait for the service to be discovered + + // Assert + var discoveredServices = discoverer.GetOSCQueryServices(); + Assert.Contains(oscQueryServiceProfile, discoveredServices.ToList()); + + // Cleanup + advertiser.Unadvertise(oscQueryServiceProfile); + + discoverer.RefreshServices(); + await Task.Delay(DELAY_TIME_MS); // Wait for the service to be disconnected + + // Assert that the service is no longer in the list + discoveredServices = discoverer.GetOSCQueryServices(); + Assert.IsFalse(discoveredServices.Contains(oscQueryServiceProfile)); + } +} \ No newline at end of file From ceb2c4bb56c367c42e399d5687a16c35f5621e62 Mon Sep 17 00:00:00 2001 From: Momo The Monster Date: Sun, 25 Feb 2024 20:08:55 -0800 Subject: [PATCH 2/2] Improves comments in MeaModDiscoveryTests --- .../MeaModDiscoveryTests.cs | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/Tests/vrc-oscquery-tests/MeaModDiscoveryTests.cs b/Tests/vrc-oscquery-tests/MeaModDiscoveryTests.cs index bf41312..38f2677 100644 --- a/Tests/vrc-oscquery-tests/MeaModDiscoveryTests.cs +++ b/Tests/vrc-oscquery-tests/MeaModDiscoveryTests.cs @@ -9,8 +9,7 @@ public class MeaModDiscoveryTests [Test] public async Task Discovery_WhenOSCQueryServiceAdvertised_ContainsService() { - // Arrange - // var loggerMock = new Mock>(); + // Set up Advertising and Discovery var advertiser = new MeaModDiscovery(); var discoverer = new MeaModDiscovery(); var oscQueryServiceProfile = new OSCQueryServiceProfile @@ -21,25 +20,24 @@ public async Task Discovery_WhenOSCQueryServiceAdvertised_ContainsService() OSCQueryServiceProfile.ServiceType.OSCQuery ); - // Act + // Advertise the service, Refresh the services, and wait for the service to be discovered advertiser.Advertise(oscQueryServiceProfile); await Task.Delay(DELAY_TIME_MS); // Wait for the service to be advertised discoverer.RefreshServices(); await Task.Delay(DELAY_TIME_MS); // Wait for the service to be discovered - // Assert + // Assert that the service was discovered var discoveredServices = discoverer.GetOSCQueryServices(); Assert.Contains(oscQueryServiceProfile, discoveredServices.ToList()); - // Cleanup + // Stop advertising the service advertiser.Unadvertise(oscQueryServiceProfile); } [Test] public async Task Discovery_WhenOSCQueryServiceUnadvertised_DoesNotContainService() { - // Arrange - // var loggerMock = new Mock>(); + // Set up Advertising and Discovery var advertiser = new MeaModDiscovery(); var discoverer = new MeaModDiscovery(); var oscQueryServiceProfile = new OSCQueryServiceProfile @@ -50,19 +48,18 @@ public async Task Discovery_WhenOSCQueryServiceUnadvertised_DoesNotContainServic OSCQueryServiceProfile.ServiceType.OSCQuery ); - // Act + // Advertise the service, Refresh the services, and wait for the service to be discovered advertiser.Advertise(oscQueryServiceProfile); await Task.Delay(DELAY_TIME_MS); // Wait for the service to be advertised discoverer.RefreshServices(); await Task.Delay(DELAY_TIME_MS); // Wait for the service to be discovered - // Assert + // Assert that the service was discovered var discoveredServices = discoverer.GetOSCQueryServices(); Assert.Contains(oscQueryServiceProfile, discoveredServices.ToList()); - // Cleanup + // Stop advertising the service, Refresh the services, and wait for the service to be disconnected advertiser.Unadvertise(oscQueryServiceProfile); - discoverer.RefreshServices(); await Task.Delay(DELAY_TIME_MS); // Wait for the service to be disconnected