コード例 #1
0
        public void Returns_Null_From_AppDomain_When_NOT_IsHostAssembly_And_RemoteAssembly()
        {
            // Arrange
            var someAssembly            = GetRealAssembly();
            var someAssemblyName        = someAssembly.GetName();
            var pluginLogger            = this.LooseMock <IPluginLogger>();
            var pluginLoadContext       = this.Mock <IPluginLoadContext>();
            var pluginDependencyContext = this.Mock <IPluginDependencyContext>();
            var sut = new Prise.DefaultAssemblyLoadStrategy(pluginLogger, pluginLoadContext, pluginDependencyContext);
            var loadFromDependencyContext = CreateLookupFunction((c, a) => ValueOrProceed <AssemblyFromStrategy> .Proceed());
            var loadFromRemote            = CreateLookupFunction((c, a) => ValueOrProceed <AssemblyFromStrategy> .Proceed());
            var loadFromAppDomain         = CreateLookupFunction((c, a) => ValueOrProceed <AssemblyFromStrategy> .Proceed());

            // Mock the fact that it was setup as a host assembly that should be loaded from the host.
            this.Arrange <IPluginDependencyContext>()
            .Setup(p => p.HostDependencies).Returns(new List <HostDependency> {
                new HostDependency {
                    DependencyName = someAssemblyName
                }
            });

            // Mock the fact that it was ALSO setup as a remote assembly that should be loaded from the plugin.
            this.Arrange <IPluginDependencyContext>()
            .Setup(p => p.RemoteDependencies).Returns(new List <RemoteDependency> {
                new RemoteDependency {
                    DependencyName = someAssemblyName
                }
            });

            // Act, Assert
            Assert.Null(sut.LoadAssembly(someAssemblyName, loadFromDependencyContext, loadFromRemote, loadFromAppDomain)?.Assembly);
        }
コード例 #2
0
ファイル: LoadAssembly.cs プロジェクト: yangkuii/Prise
        public void Returns_Null_For_Empty_AssemblyName()
        {
            // Arrange
            var pluginLoadContext       = this.Mock <IPluginLoadContext>();
            var pluginDependencyContext = this.Mock <IPluginDependencyContext>();
            var sut = new Prise.DefaultAssemblyLoadStrategy(pluginLoadContext, pluginDependencyContext);
            var emptyAssemblyname = new AssemblyName();

            // Act, Assert
            Assert.Null(sut.LoadAssembly(emptyAssemblyname, null, null, null));
        }
コード例 #3
0
ファイル: LoadAssembly.cs プロジェクト: yangkuii/Prise
        public void Returns_Null_When_AssemblyName_NotFound()
        {
            // Arrange
            var pluginLoadContext       = this.Mock <IPluginLoadContext>();
            var pluginDependencyContext = this.Mock <IPluginDependencyContext>();
            var sut          = new Prise.DefaultAssemblyLoadStrategy(pluginLoadContext, pluginDependencyContext);
            var assemblyname = new AssemblyName(this.CreateFixture <string>());
            var loadFromDependencyContext = CreateLookupFunction((c, a) => ValueOrProceed <Assembly> .Proceed());
            var loadFromRemote            = CreateLookupFunction((c, a) => ValueOrProceed <Assembly> .Proceed());
            var loadFromAppDomain         = CreateLookupFunction((c, a) => ValueOrProceed <Assembly> .Proceed());

            this.Arrange <IPluginDependencyContext>()
            .Setup(p => p.HostDependencies).Returns(Enumerable.Empty <HostDependency>());

            // Act, Assert
            Assert.Null(sut.LoadAssembly(assemblyname, loadFromDependencyContext, loadFromRemote, loadFromAppDomain));
        }
コード例 #4
0
ファイル: LoadAssembly.cs プロジェクト: yangkuii/Prise
        public void Returns_Assembly_From_Remote()
        {
            // Arrange
            var someAssembly            = GetRealAssembly();
            var someAssemblyName        = someAssembly.GetName();
            var pluginLoadContext       = this.Mock <IPluginLoadContext>();
            var pluginDependencyContext = this.Mock <IPluginDependencyContext>();
            var sut = new Prise.DefaultAssemblyLoadStrategy(pluginLoadContext, pluginDependencyContext);
            var loadFromDependencyContext = CreateLookupFunction((c, a) => ValueOrProceed <Assembly> .Proceed());
            var loadFromRemote            = CreateLookupFunction((c, a) => ValueOrProceed <Assembly> .FromValue(someAssembly, false));
            var loadFromAppDomain         = CreateLookupFunction((c, a) => ValueOrProceed <Assembly> .Proceed());

            this.Arrange <IPluginDependencyContext>()
            .Setup(p => p.HostDependencies).Returns(Enumerable.Empty <HostDependency>());

            // Act, Assert
            Assert.Equal(someAssembly, sut.LoadAssembly(someAssemblyName, loadFromDependencyContext, loadFromRemote, loadFromAppDomain));
        }
コード例 #5
0
ファイル: LoadUnmanagedDll.cs プロジェクト: yangkuii/Prise
        public void Returns_AssemblyPath_FromRemote()
        {
            // Arrange
            var someAssembly            = GetRealAssembly();
            var someAssemblyName        = someAssembly.GetName();
            var pluginLoadContext       = this.Mock <IPluginLoadContext>();
            var pluginDependencyContext = this.Mock <IPluginDependencyContext>();
            var sut = new Prise.DefaultAssemblyLoadStrategy(pluginLoadContext, pluginDependencyContext);
            var loadFromDependencyContext = CreateLookupFunction <string, string>((c, a) => ValueOrProceed <string> .Proceed());
            var loadFromRemote            = CreateLookupFunction <string, string>((c, a) => ValueOrProceed <string> .FromValue(someAssemblyName.Name, false));
            var loadFromAppDomain         = CreateLookupFunction <string, IntPtr>((c, a) => ValueOrProceed <IntPtr> .Proceed());

            // Act
            var result = sut.LoadUnmanagedDll(someAssemblyName.Name, loadFromDependencyContext, loadFromRemote, loadFromAppDomain);

            // Assert
            Assert.Equal(someAssemblyName.Name, result.Path);
            Assert.Equal(IntPtr.Zero, result.Pointer);
        }