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