// 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 System.Linq; using Microsoft.AspNetCore.Razor.Evolution; using Moq; using Xunit; namespace Microsoft.AspNetCore.Razor.Evolution { public class RazorEngineTest { [Fact] public void Create_NoArg_CreatesDefaultEngine() { // Arrange // Act var engine = RazorEngine.Create(); // Assert Assert.IsType(engine); AssertDefaultFeatures(engine.Features); AssertDefaultPhases(engine.Phases); } [Fact] public void Create_Null_CreatesDefaultEngine() { // Arrange // Act var engine = RazorEngine.Create(configure: null); // Assert Assert.IsType(engine); AssertDefaultFeatures(engine.Features); AssertDefaultPhases(engine.Phases); } [Fact] public void Create_Lambda_AddsFeaturesAndPhases() { // Arrange IRazorEngineFeature[] features = null; IRazorEnginePhase[] phases = null; // Act var engine = RazorEngine.Create(builder => { builder.Features.Clear(); builder.Phases.Clear(); builder.Features.Add(Mock.Of()); builder.Features.Add(Mock.Of()); builder.Phases.Add(Mock.Of()); builder.Phases.Add(Mock.Of()); features = builder.Features.ToArray(); phases = builder.Phases.ToArray(); }); // Assert Assert.Collection( engine.Features, f => Assert.Same(features[0], f), f => Assert.Same(features[1], f)); Assert.Collection( engine.Phases, p => Assert.Same(phases[0], p), p => Assert.Same(phases[1], p)); } private static void AssertDefaultFeatures(IEnumerable features) { Assert.Collection( features, feature => Assert.IsType(feature), feature => Assert.IsType(feature)); } private static void AssertDefaultPhases(IReadOnlyList phases) { Assert.Collection( phases, phase => Assert.IsType(phase), phase => Assert.IsType(phase), phase => Assert.IsType(phase)); } } }