1 // 2 // Copyright (c) 2010-2023 Antmicro 3 // 4 // This file is licensed under the MIT License. 5 // Full license text is available in 'licenses/MIT.txt'. 6 // 7 using System; 8 using System.Collections.Generic; 9 using System.IO; 10 using Antmicro.Renode.PlatformDescription; 11 using Antmicro.Renode.Utilities; 12 13 namespace Antmicro.Renode.UnitTests.PlatformDescription 14 { 15 public sealed class FakeUsingResolver : IUsingResolver 16 { FakeUsingResolver()17 public FakeUsingResolver() 18 { 19 argumentToSource = new Dictionary<string, string>(); 20 tempManager = TemporaryFilesManager.Instance; 21 resultsCache = new Dictionary<string, string>(); 22 } 23 With(string argument, string source)24 public FakeUsingResolver With(string argument, string source) 25 { 26 argumentToSource.Add(argument, source); 27 return this; 28 } 29 IUsingResolver.Resolve(string argument, string includingFile)30 string IUsingResolver.Resolve(string argument, string includingFile) 31 { 32 string result; 33 if(resultsCache.TryGetValue(argument, out result)) 34 { 35 return result; 36 } 37 if(!argumentToSource.ContainsKey(argument)) 38 { 39 return "nonExisting"; // necessary for the test with a non existing file 40 } 41 var tempFileName = tempManager.GetTemporaryFile(); 42 File.WriteAllText(tempFileName, argumentToSource[argument]); 43 resultsCache[argument] = tempFileName; 44 return tempFileName; 45 } 46 47 private readonly TemporaryFilesManager tempManager; 48 private readonly Dictionary<string, string> argumentToSource; 49 private readonly Dictionary<string, string> resultsCache; 50 } 51 } 52