File: Abstractions\IDeterministicModeMacro.cs
Web Access
Project: src\sdk\src\TemplateEngine\Microsoft.TemplateEngine.Orchestrator.RunnableProjects\Microsoft.TemplateEngine.Orchestrator.RunnableProjects.csproj (Microsoft.TemplateEngine.Orchestrator.RunnableProjects)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using Microsoft.TemplateEngine.Abstractions;

namespace Microsoft.TemplateEngine.Orchestrator.RunnableProjects.Abstractions
{
    /// <summary>
    /// A macro that supports deterministic mode (for test purposes).
    /// </summary>
    internal interface IDeterministicModeMacro : IMacro
    {
        /// <summary>
        /// Evaluates the macro based on <paramref name="config"/>. The result is modification of variable collection <paramref name="variables"/>.
        /// The evaluation is performed deterministically, i.e. different external factors cannot impact the result and the recurrent evaluation is guaranteed to provide same result.
        /// </summary>
        void EvaluateConfigDeterministically(IEngineEnvironmentSettings environmentSettings, IVariableCollection variables, IMacroConfig config);
    }

    /// <summary>
    /// A macro that supports deterministic mode (for test purposes).
    /// </summary>
    internal interface IDeterministicModeMacro<T> : IMacro<T> where T : IMacroConfig
    {
        /// <summary>
        /// Evaluates the macro based on <paramref name="config"/>. The result is modification of variable collection <paramref name="variables"/>.
        /// The evaluation is performed deterministically, i.e. different external factors cannot impact the result and the recurrent evaluation is guaranteed to provide same result.
        /// </summary>
        void EvaluateDeterministically(IEngineEnvironmentSettings environmentSettings, IVariableCollection variables, T config);
    }
}