// Copyright (c) Six Labors. // Licensed under the Six Labors Split License. namespace SixLabors.ImageSharp.Tests; /// /// A test image file. /// public class TestFileSystem : ImageSharp.IO.IFileSystem { private readonly Dictionary> fileSystem = new Dictionary>(StringComparer.OrdinalIgnoreCase); public void AddFile(string path, Func data) { lock (this.fileSystem) { this.fileSystem.Add(path, data); } } public Stream Create(string path) { // if we have injected a fake file use it instead lock (this.fileSystem) { if (this.fileSystem.ContainsKey(path)) { Stream stream = this.fileSystem[path](); stream.Position = 0; return stream; } } return File.Create(path); } public Stream OpenRead(string path) { // if we have injected a fake file use it instead lock (this.fileSystem) { if (this.fileSystem.ContainsKey(path)) { Stream stream = this.fileSystem[path](); stream.Position = 0; return stream; } } return File.OpenRead(path); } }