public void GetFile_NotMappedPath_FallsBackToPreviousProvider()
        {
            var previousProviderStub = MockRepository.GenerateStub <VirtualPathProvider>();
            var provider             = new TestableResourceVirtualPathProvider(new[] { new ResourcePathMapping("test", "testResourceFolder") }, _testDirectory);

            provider.SetPrevious(previousProviderStub);

            var expectedFile = new ResourceVirtualFile("test", new FileInfo(Path.Combine(_testDirectory, "file.txt")));

            previousProviderStub.Stub(_ => _.GetFile("~/res/UnknownDirectory/testfile.txt")).Return(expectedFile);

            var actual = (ResourceVirtualFile)provider.GetFile("~/res/UnknownDirectory/testfile.txt");

            Assert.That(actual, Is.SameAs(expectedFile));
        }
        public void GetFile_FileInsideMappedSubdirectory()
        {
            var provider = new TestableResourceVirtualPathProvider(new[] { new ResourcePathMapping("test/subdirectory", "testResourceFolder") }, _testDirectory);

            provider.SetMakeRelativeVirtualPathOverride((a, b) => "testfile.txt");
            provider.SetCombineVirtualPathOverride((a, b) => "~/res/test/subdirectory");

            var expectedFilePath = Path.Combine(_testDirectory, "testResourceFolder\\testfile.txt");

            Directory.CreateDirectory(Path.Combine(_testDirectory, "testResourceFolder"));
            File.WriteAllText(expectedFilePath, "hello");

            var actual = (ResourceVirtualFile)provider.GetFile("~/res/test/subdirectory/testfile.txt");

            Assert.That(actual.PhysicalPath, Is.EqualTo(expectedFilePath));
            Assert.That(actual.Exists);
        }