public async Task The_extend_directive_can_be_used_to_load_a_kernel_extension() { var extensionDir = Create.EmptyWorkspace() .Directory; var extensionDllPath = (await KernelExtensionTestHelper.CreateExtension(extensionDir, @"await kernel.SendAsync(new SubmitCode(""using System.Reflection;""));")) .FullName; var kernel = CreateKernel(); using var events = kernel.KernelEvents.ToSubscribedList(); await kernel.SendAsync(new SubmitCode($"#extend \"{extensionDllPath}\"")); events.Should() .ContainSingle(e => e is ExtensionLoaded && e.As <ExtensionLoaded>().ExtensionPath.FullName.Equals(extensionDllPath)); events.Should() .ContainSingle(e => e is CommandHandled && e.As <CommandHandled>() .Command .As <SubmitCode>() .Code .Contains("using System.Reflection;")); events.Should() .ContainSingle(e => e is DisplayedValueProduced && e.As <DisplayedValueProduced>() .Value .ToString() .Contains($"Loaded kernel extension TestKernelExtension from assembly {extensionDllPath}")); }
public async Task Gives_kernel_extension_load_exception_event_when_extension_throws_exception_during_load() { var extensionDir = Create.EmptyWorkspace() .Directory; var extensionDllPath = (await KernelExtensionTestHelper.CreateExtension(extensionDir, @"throw new Exception();")).FullName; var kernel = CreateKernel(); await kernel.SendAsync(new SubmitCode($"#extend \"{extensionDllPath}\"")); KernelEvents.Should() .ContainSingle(e => e.Value is KernelExtensionLoadException); }
public async Task The_extend_directive_can_be_used_to_load_a_kernel_extension() { var extensionDir = Create.EmptyWorkspace() .Directory; var extensionDllPath = (await KernelExtensionTestHelper.CreateExtension(extensionDir, @"await kernel.SendAsync(new SubmitCode(""using System.Reflection;""));")).FullName; var kernel = CreateKernel(); await kernel.SendAsync(new SubmitCode($"#extend \"{extensionDllPath}\"")); KernelEvents.Should().ContainSingle(e => e.Value is ExtensionLoaded && e.Value.As <ExtensionLoaded>().ExtensionPath.FullName.Equals(extensionDllPath)); KernelEvents.Should() .ContainSingle(e => e.Value is CommandHandled && e.Value.As <CommandHandled>() .Command .As <SubmitCode>() .Code .Contains("using System.Reflection;")); }