// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.IO; using System.Text; using Microsoft.AspNet.FileProviders; using Moq; using Xunit; namespace Microsoft.AspNet.Mvc.Razor.Test { public class CompilationResultTest { [Fact] public void FailedResult_ThrowsWhenAccessingCompiledType() { // Arrange var expected = @"Error compiling page at 'myfile'."; var originalContent = "Original file content"; var fileInfo = new Mock(); fileInfo.SetupGet(f => f.PhysicalPath) .Returns("myfile"); var contentBytes = Encoding.UTF8.GetBytes(originalContent); fileInfo.Setup(f => f.CreateReadStream()) .Returns(new MemoryStream(contentBytes)); var messages = new[] { new CompilationMessage("hello", 1, 1, 2, 2), new CompilationMessage("world", 3, 3, 4, 3) }; var result = CompilationResult.Failed(fileInfo.Object, "

hello world

", messages); // Act and Assert var ex = Assert.Throws(() => result.CompiledType); Assert.Equal(expected, ex.Message); var compilationFailure = Assert.Single(ex.CompilationFailures); Assert.Equal(originalContent, compilationFailure.SourceFileContent); Assert.Equal(messages, compilationFailure.Messages); } } }