teamsiso/src/tests/TeamsISO.Engine.Tests/Domain/NdiSourceParserTests.cs
Zac Gaetano aaf3184a8e
Some checks failed
CI / build-and-test (push) Failing after 22s
feat(discovery): add NdiSource record and Teams source string parser
2026-05-07 15:11:00 +00:00

46 lines
1.7 KiB
C#

using TeamsISO.Engine.Discovery;
using TeamsISO.Engine.Domain;
namespace TeamsISO.Engine.Tests.Domain;
public class NdiSourceParserTests
{
[Theory]
[InlineData("WORKSTATION-01 (Teams - Jane Doe)", "WORKSTATION-01", NdiSourceKind.Participant, "Jane Doe")]
[InlineData("PROD-PC (Teams - Élise O'Connor)", "PROD-PC", NdiSourceKind.Participant, "Élise O'Connor")]
[InlineData("HOST (Teams - Smith, Bob (PM))", "HOST", NdiSourceKind.Participant, "Smith, Bob (PM)")]
public void Parse_Participant_ExtractsMachineAndDisplayName(
string fullName, string expectedMachine, NdiSourceKind expectedKind, string expectedDisplay)
{
var result = NdiSourceParser.Parse(fullName);
result.Should().NotBeNull();
result!.MachineName.Should().Be(expectedMachine);
result.Kind.Should().Be(expectedKind);
result.DisplayName.Should().Be(expectedDisplay);
result.FullName.Should().Be(fullName);
}
[Theory]
[InlineData("HOST (Teams)", NdiSourceKind.ActiveSpeaker)]
[InlineData("HOST (Teams Audio)", NdiSourceKind.Audio)]
[InlineData("HOST (Teams Screen Share)", NdiSourceKind.ScreenShare)]
public void Parse_NonParticipantKinds_ClassifyCorrectly(string fullName, NdiSourceKind expectedKind)
{
var result = NdiSourceParser.Parse(fullName);
result.Should().NotBeNull();
result!.Kind.Should().Be(expectedKind);
result.DisplayName.Should().BeNull();
}
[Theory]
[InlineData("Plain NDI Source")]
[InlineData("HOST (Some Other Software)")]
[InlineData("(Teams - No Machine)")]
public void Parse_NonTeamsSource_ReturnsNull(string fullName)
{
var result = NdiSourceParser.Parse(fullName);
result.Should().BeNull();
}
}