Exemple #1
0
        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}"));
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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;"));
        }