public RazorViewServiceConfiguration(Registration<IRazorViewLoader> razorViewLoaderRegistration)
		{
			if (razorViewLoaderRegistration == null)
				throw new ArgumentNullException(nameof(razorViewLoaderRegistration));

			RazorViewLoader = razorViewLoaderRegistration;
			CompilerServiceFactory = new DefaultCompilerServiceFactory();
			EncodedStringFactory = new HtmlEncodedStringFactory();
			CachingProvider = new DefaultCachingProvider();
			Namespaces = new HashSet<string>()
			{
				"System",
				"System.Collections.Generic",
				"System.Linq"
			};
			RazorEngineConfigurationSection configuration = RazorEngineConfigurationSection.GetConfiguration();
			Language = configuration?.DefaultLanguage ?? Language.CSharp;
		}
        /// <summary>
        /// Check if everything is cleaned up.
        /// </summary>
        public string RazorEngineService_CleanUpWorks(CrossAppDomainCleanUp.IPrinter printer)
        {
            CrossAppDomainCleanUp.CurrentPrinter = printer;
            var cache = new DefaultCachingProvider();
            RazorEngineServiceTestFixture.RunTestHelper(service =>
            {
                string template = @"@Model.Name";

                var result = service.RunCompile(template, "test", null, new { Name = "test" });
                Assert.AreEqual("test", result);
            }, config =>
            {
                config.CachingProvider = cache;
            });
            ICompiledTemplate compiledTemplate;
            Assert.IsTrue(cache.TryRetrieveTemplate(new NameOnlyTemplateKey("test", ResolveType.Global, null), null, out compiledTemplate));
            var folder = compiledTemplate.CompilationData.TmpFolder;
            Assert.IsTrue(Directory.Exists(folder));
            return folder;
        }
 public void RazorEngineService_TestDisableTempFileLocking()
 {
     var cache = new DefaultCachingProvider(t => { });
     var template = "@Model.Property";
     RazorEngineServiceTestFixture.RunTestHelper(service =>
     {
         var model = new { Property = 0 };
         string result = service.RunCompile(template, "key", null, model);
         Assert.AreEqual("0", result.Trim());
     }, config =>
     {
         config.CachingProvider = cache;
         config.DisableTempFileLocking = true;
     });
     ICompiledTemplate compiledTemplate;
     Assert.IsTrue(cache.TryRetrieveTemplate(new NameOnlyTemplateKey("key", ResolveType.Global, null), null, out compiledTemplate));
     var data = compiledTemplate.CompilationData;
     var folder = data.TmpFolder;
     Assert.IsTrue(Directory.Exists(folder));
     data.DeleteAll();
     Assert.IsFalse(Directory.Exists(folder));
 }
        public void RazorEngineService_TestDebuggingWithHelperWithTemplateFile()
        {
            var cache = new DefaultCachingProvider();
            var file = System.IO.Path.GetTempFileName();

            var template =
            @"@helper Display(int price) {
            if (price == 0) {
            <text>free</text>
            } else {
            <text>@price</text>
            }
            }
            @Display(Model.MyPrice)";
            File.WriteAllText(file, template);
            RunTestHelper(service =>
            {
                var model = new { MyPrice = 0 };
                string result = service.RunCompile(new LoadedTemplateSource(template, file), "key", null, model);
                Assert.AreEqual("free", result.Trim());
            }, config => config.CachingProvider = cache);
            ICompiledTemplate compiledTemplate;
            Assert.IsTrue(cache.TryRetrieveTemplate(new NameOnlyTemplateKey("key", ResolveType.Global, null), null, out compiledTemplate));
            // Contains line pragmas with the template file.
            Assert.IsTrue(compiledTemplate.CompilationData.SourceCode.Contains(file), "");
            File.Delete(file);
        }
 public void RazorEngineService_TestDebuggingWithHelper()
 {
     var cache = new DefaultCachingProvider();
     var template =
     @"@helper Display(int price) {
     if (price == 0) {
     <text>free</text>
     } else {
     <text>@price</text>
     }
     }
     @Display(Model.MyPrice)";
     RunTestHelper(service =>
     {
         var model = new { MyPrice = 0 };
         string result = service.RunCompile(template, "key", null, model);
         Assert.AreEqual("free", result.Trim());
     }, config => config.CachingProvider = cache);
     ICompiledTemplate compiledTemplate;
     Assert.IsTrue(cache.TryRetrieveTemplate(new NameOnlyTemplateKey("key", ResolveType.Global, null), null, out compiledTemplate));
     // #line hidden should be removed, so make debugging work, see https://github.com/Antaris/RazorEngine/issues/253.
     Assert.IsFalse(compiledTemplate.CompilationData.SourceCode.Contains("#line hidden"));
 }