public void CodeGenerationStartedTest() { // Arrange WebPageRazorHost host = new WebPageRazorHost("~/Foo/Baz.cshtml", @"C:\Foo\Baz.cshtml"); RazorBuildProvider provider = CreateBuildProvider("foo @bar baz"); provider.Host = host; // Expected original base dependencies var baseDependencies = new ArrayList(); baseDependencies.Add("/Samples/Foo/Baz.cshtml"); // Expected list of dependencies after GenerateCode is called var dependencies = new ArrayList(); dependencies.Add(baseDependencies[0]); dependencies.Add("/Samples/Foo/Foo.cshtml"); // Set up the event handler provider.CodeGenerationStartedInternal += (sender, e) => { var bp = sender as RazorBuildProvider; bp.AddVirtualPathDependency("/Samples/Foo/Foo.cshtml"); }; // Set up the base dependency MockAssemblyBuilder builder = new MockAssemblyBuilder(); typeof(BuildProvider) .GetField("_virtualPath", BindingFlags.NonPublic | BindingFlags.Instance) .SetValue(provider, CreateVirtualPath("/Samples/Foo/Baz.cshtml")); // Test that VirtualPathDependencies returns the original dependency before GenerateCode is called Assert.True( baseDependencies .OfType <string>() .SequenceEqual(provider.VirtualPathDependencies.OfType <string>()) ); // Act provider.GenerateCodeCore(builder); // Assert Assert.NotNull(provider.AssemblyBuilderInternal); Assert.Equal(builder, provider.AssemblyBuilderInternal); Assert.True( dependencies .OfType <string>() .SequenceEqual(provider.VirtualPathDependencies.OfType <string>()) ); Assert.Equal("/Samples/Foo/Baz.cshtml", provider.VirtualPath); }
public void GenerateCodeCoreAddsGeneratedCodeToAssemblyBuilder() { // Arrange WebPageRazorHost host = new WebPageRazorHost("~/Foo/Bar.vbhtml", @"C:\Foo\Bar.vbhtml"); RazorBuildProvider provider = new RazorBuildProvider(); CodeCompileUnit ccu = new CodeCompileUnit(); MockAssemblyBuilder asmBuilder = new MockAssemblyBuilder(); provider.Host = host; provider.GeneratedCode = ccu; // Act provider.GenerateCodeCore(asmBuilder); // Assert Assert.AreSame(provider, asmBuilder.BuildProvider); Assert.AreSame(ccu, asmBuilder.CompileUnit); Assert.AreEqual("ASP._Page_Foo_Bar_vbhtml", asmBuilder.LastTypeFactoryGenerated); }
public void GenerateCodeCoreAddsGeneratedCodeToAssemblyBuilder() { // Arrange WebPageRazorHost host = new WebPageRazorHost("~/Foo/Baz.cshtml", @"C:\Foo\Baz.cshtml"); RazorBuildProvider provider = new RazorBuildProvider(); CodeCompileUnit ccu = new CodeCompileUnit(); MockAssemblyBuilder asmBuilder = new MockAssemblyBuilder(); provider.Host = host; provider.GeneratedCode = ccu; // Act provider.GenerateCodeCore(asmBuilder); // Assert Assert.Same(provider, asmBuilder.BuildProvider); Assert.Same(ccu, asmBuilder.CompileUnit); Assert.Equal("ASP._Page_Foo_Baz_cshtml", asmBuilder.LastTypeFactoryGenerated); }
public void CodeGenerationStartedTest() { // Arrange WebPageRazorHost host = new WebPageRazorHost("~/Foo/Baz.cshtml", @"C:\Foo\Baz.cshtml"); RazorBuildProvider provider = CreateBuildProvider("foo @bar baz"); provider.Host = host; // Expected original base dependencies var baseDependencies = new ArrayList(); baseDependencies.Add("/Samples/Foo/Baz.cshtml"); // Expected list of dependencies after GenerateCode is called var dependencies = new ArrayList(); dependencies.Add(baseDependencies[0]); dependencies.Add("/Samples/Foo/Foo.cshtml"); // Set up the event handler provider.CodeGenerationStartedInternal += (sender, e) => { var bp = sender as RazorBuildProvider; bp.AddVirtualPathDependency("/Samples/Foo/Foo.cshtml"); }; // Set up the base dependency MockAssemblyBuilder builder = new MockAssemblyBuilder(); typeof(BuildProvider).GetField("_virtualPath", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(provider, CreateVirtualPath("/Samples/Foo/Baz.cshtml")); // Test that VirtualPathDependencies returns the original dependency before GenerateCode is called Assert.True(baseDependencies.OfType<string>().SequenceEqual(provider.VirtualPathDependencies.OfType<string>())); // Act provider.GenerateCodeCore(builder); // Assert Assert.NotNull(provider.AssemblyBuilderInternal); Assert.Equal(builder, provider.AssemblyBuilderInternal); Assert.True(dependencies.OfType<string>().SequenceEqual(provider.VirtualPathDependencies.OfType<string>())); Assert.Equal("/Samples/Foo/Baz.cshtml", provider.VirtualPath); }