// // Copyright (c) 2010-2023 Antmicro // // This file is licensed under the MIT License. // Full license text is available in 'licenses/MIT.txt'. // using System; using System.Collections.Generic; using System.IO; using Antmicro.Renode.PlatformDescription; using Antmicro.Renode.Utilities; namespace Antmicro.Renode.UnitTests.PlatformDescription { public sealed class FakeUsingResolver : IUsingResolver { public FakeUsingResolver() { argumentToSource = new Dictionary(); tempManager = TemporaryFilesManager.Instance; resultsCache = new Dictionary(); } public FakeUsingResolver With(string argument, string source) { argumentToSource.Add(argument, source); return this; } string IUsingResolver.Resolve(string argument, string includingFile) { string result; if(resultsCache.TryGetValue(argument, out result)) { return result; } if(!argumentToSource.ContainsKey(argument)) { return "nonExisting"; // necessary for the test with a non existing file } var tempFileName = tempManager.GetTemporaryFile(); File.WriteAllText(tempFileName, argumentToSource[argument]); resultsCache[argument] = tempFileName; return tempFileName; } private readonly TemporaryFilesManager tempManager; private readonly Dictionary argumentToSource; private readonly Dictionary resultsCache; } }