| File: Realtime\RealtimeClientSessionExtensionsTests.cs | |
| Project: ..\..\..\test\Libraries\Microsoft.Extensions.AI.Tests\Microsoft.Extensions.AI.Tests.csproj (Microsoft.Extensions.AI.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.Threading.Tasks; using Xunit; #pragma warning disable MEAI001 // Type is for evaluation purposes only and is subject to change or removal in future updates. namespace Microsoft.Extensions.AI; public class RealtimeClientSessionExtensionsTests { [Fact] public void GetService_NullSession_Throws() { Assert.Throws<ArgumentNullException>("session", () => ((IRealtimeClientSession)null!).GetService<IRealtimeClientSession>()); } [Fact] public async Task GetService_ReturnsMatchingService() { await using var session = new TestRealtimeClientSession(); var result = session.GetService<TestRealtimeClientSession>(); Assert.Same(session, result); } [Fact] public async Task GetService_ReturnsNullForNonMatchingType() { await using var session = new TestRealtimeClientSession(); var result = session.GetService<string>(); Assert.Null(result); } [Fact] public async Task GetService_WithServiceKey_ReturnsNull() { await using var session = new TestRealtimeClientSession(); var result = session.GetService<TestRealtimeClientSession>("someKey"); Assert.Null(result); } [Fact] public async Task GetService_ReturnsInterfaceType() { await using var session = new TestRealtimeClientSession(); var result = session.GetService<IRealtimeClientSession>(); Assert.Same(session, result); } [Fact] public void GetRequiredService_NullSession_Throws() { Assert.Throws<ArgumentNullException>("session", () => ((IRealtimeClientSession)null!).GetRequiredService(typeof(string))); Assert.Throws<ArgumentNullException>("session", () => ((IRealtimeClientSession)null!).GetRequiredService<string>()); } [Fact] public async Task GetRequiredService_NullServiceType_Throws() { await using var session = new TestRealtimeClientSession(); Assert.Throws<ArgumentNullException>("serviceType", () => session.GetRequiredService(null!)); } [Fact] public async Task GetRequiredService_ReturnsMatchingService() { await using var session = new TestRealtimeClientSession(); var result = session.GetRequiredService<TestRealtimeClientSession>(); Assert.Same(session, result); } [Fact] public async Task GetRequiredService_ReturnsInterfaceType() { await using var session = new TestRealtimeClientSession(); var result = session.GetRequiredService<IRealtimeClientSession>(); Assert.Same(session, result); } [Fact] public async Task GetRequiredService_NonGeneric_ReturnsMatchingService() { await using var session = new TestRealtimeClientSession(); var result = session.GetRequiredService(typeof(TestRealtimeClientSession)); Assert.Same(session, result); } [Fact] public async Task GetRequiredService_ThrowsForNonMatchingType() { await using var session = new TestRealtimeClientSession(); Assert.Throws<InvalidOperationException>(() => session.GetRequiredService<string>()); } [Fact] public async Task GetRequiredService_NonGeneric_ThrowsForNonMatchingType() { await using var session = new TestRealtimeClientSession(); Assert.Throws<InvalidOperationException>(() => session.GetRequiredService(typeof(string))); } [Fact] public async Task GetRequiredService_WithServiceKey_ThrowsForNonMatchingKey() { await using var session = new TestRealtimeClientSession(); Assert.Throws<InvalidOperationException>(() => session.GetRequiredService<TestRealtimeClientSession>("someKey")); } }