// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
using System;
using System.Collections.Generic;
using System.IO;
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);
}
}
}