AppSecInc.ProcessDomain.UnitTests.TestProcessDomain.TestExecutableLocation C# (CSharp) Method

TestExecutableLocation() private method

private TestExecutableLocation ( ) : void
return void
        public void TestExecutableLocation()
        {
            string desiredExecutableFileName = Path.Combine(Environment.CurrentDirectory, "MyDomain.exe");

            var setupInfo = new ProcessDomainSetup
            {
                ExecutableDirectory = Environment.CurrentDirectory
            };

            // default uses temp directory
            using (var domain1 = ProcessDomain.CreateDomain("MyDomain"))
            {
                var obj = (RemoteTestObject)domain1.CreateInstanceAndUnwrap(TestObjectAssemblyName, TestObjectTypeName);
                Assert.That(obj.GetProcessFileName(), Is.Not.EqualTo(desiredExecutableFileName));
            }

            // now using our specified location
            using (var domain2 = ProcessDomain.CreateDomain("MyDomain", setupInfo))
            {
                var obj = (RemoteTestObject)domain2.CreateInstanceAndUnwrap(TestObjectAssemblyName, TestObjectTypeName);
                Assert.That(obj.GetProcessFileName(), Is.EqualTo(desiredExecutableFileName));
            }

            // test if file exists, it will be overwritten
            using (var writer = new StreamWriter(desiredExecutableFileName, false))
            {
                writer.WriteLine("Garbage");

                // will fail to compile because file is open
                Assert.Throws<AssemblyGeneratorCompilerException>(() => ProcessDomain.CreateDomain("MyDomain", setupInfo));

                writer.Flush();
            }

            // file is now closed, but contains garbage that can't execute,
            // but the file will get overwritten
            using (var domain3 = ProcessDomain.CreateDomain("MyDomain", setupInfo))
            {
                var obj = (RemoteTestObject)domain3.CreateInstanceAndUnwrap(TestObjectAssemblyName, TestObjectTypeName);
                Assert.That(obj.GetProcessFileName(), Is.EqualTo(desiredExecutableFileName));
            }

            // and once we're done, file is gone
            Assert.That(!File.Exists(desiredExecutableFileName));
        }