From 2190dc20963a28e04f46a986eb50b579a84b451f Mon Sep 17 00:00:00 2001 From: Ryan Nowak Date: Sun, 4 Dec 2016 23:22:15 -0800 Subject: [PATCH] Add RazorCSharpSourceDocument Precursor to actual CSharp lowering --- .../RazorCSharpDocument.cs | 15 +++++++++ .../RazorCodeDocumentExtensions.cs | 20 ++++++++++++ .../RazorCodeDocumentExtensionsTest.cs | 31 +++++++++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 src/Microsoft.AspNetCore.Razor.Evolution/RazorCSharpDocument.cs diff --git a/src/Microsoft.AspNetCore.Razor.Evolution/RazorCSharpDocument.cs b/src/Microsoft.AspNetCore.Razor.Evolution/RazorCSharpDocument.cs new file mode 100644 index 0000000000..d71f2520c5 --- /dev/null +++ b/src/Microsoft.AspNetCore.Razor.Evolution/RazorCSharpDocument.cs @@ -0,0 +1,15 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; +using Microsoft.AspNetCore.Razor.Evolution.Legacy; + +namespace Microsoft.AspNetCore.Razor.Evolution +{ + public class RazorCSharpDocument + { + public string GeneratedCode { get; set; } + + internal IReadOnlyList LineMappings { get; set; } + } +} diff --git a/src/Microsoft.AspNetCore.Razor.Evolution/RazorCodeDocumentExtensions.cs b/src/Microsoft.AspNetCore.Razor.Evolution/RazorCodeDocumentExtensions.cs index 286a2c7001..9fde6ccc3a 100644 --- a/src/Microsoft.AspNetCore.Razor.Evolution/RazorCodeDocumentExtensions.cs +++ b/src/Microsoft.AspNetCore.Razor.Evolution/RazorCodeDocumentExtensions.cs @@ -47,5 +47,25 @@ namespace Microsoft.AspNetCore.Razor.Evolution document.Items[typeof(DocumentIRNode)] = irDocument; } + + public static RazorCSharpDocument GetCSharpDocument(this RazorCodeDocument document) + { + if (document == null) + { + throw new ArgumentNullException(nameof(document)); + } + + return (RazorCSharpDocument)document.Items[typeof(RazorCSharpDocument)]; + } + + public static void SetCSharpDocument(this RazorCodeDocument document, RazorCSharpDocument csharp) + { + if (document == null) + { + throw new ArgumentNullException(nameof(document)); + } + + document.Items[typeof(RazorCSharpDocument)] = csharp; + } } } diff --git a/test/Microsoft.AspNetCore.Razor.Evolution.Test/RazorCodeDocumentExtensionsTest.cs b/test/Microsoft.AspNetCore.Razor.Evolution.Test/RazorCodeDocumentExtensionsTest.cs index b4a6ced9b3..b37ecc9a47 100644 --- a/test/Microsoft.AspNetCore.Razor.Evolution.Test/RazorCodeDocumentExtensionsTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Evolution.Test/RazorCodeDocumentExtensionsTest.cs @@ -69,5 +69,36 @@ namespace Microsoft.AspNetCore.Razor.Evolution // Assert Assert.Same(expected, codeDocument.Items[typeof(DocumentIRNode)]); } + + [Fact] + public void GetCSharpDocument_ReturnsCSharpDocument() + { + // Arrange + var codeDocument = TestRazorCodeDocument.CreateEmpty(); + + var expected = new RazorCSharpDocument(); + codeDocument.Items[typeof(RazorCSharpDocument)] = expected; + + // Act + var actual = codeDocument.GetCSharpDocument(); + + // Assert + Assert.Same(expected, actual); + } + + [Fact] + public void SetCSharpDocument_SetsCSharpDocument() + { + // Arrange + var codeDocument = TestRazorCodeDocument.CreateEmpty(); + + var expected = new RazorCSharpDocument(); + + // Act + codeDocument.SetCSharpDocument(expected); + + // Assert + Assert.Same(expected, codeDocument.Items[typeof(RazorCSharpDocument)]); + } } }