Browse Source

use overloads taking configuration

pull/1644/head
Scott Williams 5 years ago
parent
commit
695cfd3ef7
  1. 11
      tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.cs
  2. 51
      tests/ImageSharp.Tests/TestUtilities/AsyncLocalSwitchableFilesystem.cs
  3. 19
      tests/ImageSharp.Tests/TestUtilities/SingleStreamFileSystem.cs

11
tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.cs

@ -150,11 +150,11 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
}
});
AsyncLocalSwitchableFilesystem.ConfigureFileSystemStream(pausedStream);
var config = Configuration.CreateDefaultInstance();
config.FileSystem = new SingleStreamFileSystem(pausedStream);
await Assert.ThrowsAsync<TaskCanceledException>(async () =>
{
using Image image = await Image.LoadAsync("someFakeFile", cts.Token);
using Image image = await Image.LoadAsync(config, "someFakeFile", cts.Token);
});
}
@ -171,9 +171,10 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
pausedStream.Release();
});
AsyncLocalSwitchableFilesystem.ConfigureFileSystemStream(pausedStream);
var config = Configuration.CreateDefaultInstance();
config.FileSystem = new SingleStreamFileSystem(pausedStream);
await Assert.ThrowsAsync<TaskCanceledException>(async () => await Image.IdentifyAsync("someFakeFile", cts.Token));
await Assert.ThrowsAsync<TaskCanceledException>(async () => await Image.IdentifyAsync(config, "someFakeFile", cts.Token));
}
// DEBUG ONLY!

51
tests/ImageSharp.Tests/TestUtilities/AsyncLocalSwitchableFilesystem.cs

@ -1,51 +0,0 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
using System.IO;
using System.Threading;
using SixLabors.ImageSharp.IO;
namespace SixLabors.ImageSharp.Tests.TestUtilities
{
public class AsyncLocalSwitchableFilesystem : IFileSystem
{
private static readonly LocalFileSystem LocalFile = new LocalFileSystem();
private static readonly AsyncLocalSwitchableFilesystem Instance = new AsyncLocalSwitchableFilesystem();
internal static void ConfigureDefaultFileSystem(IFileSystem fileSystem)
{
Configuration.Default.FileSystem = Instance;
Instance.FileSystem = fileSystem;
}
internal static void ConfigureFileSystemStream(Stream stream)
{
Configuration.Default.FileSystem = Instance;
Instance.FileSystem = new SingleStreamFileSystem(stream);
}
private readonly AsyncLocal<IFileSystem> asyncLocal = new AsyncLocal<IFileSystem>();
private IFileSystem FileSystem
{
get => this.asyncLocal.Value ?? LocalFile;
set => this.asyncLocal.Value = value;
}
public Stream Create(string path) => this.FileSystem.Create(path);
public Stream OpenRead(string path) => this.FileSystem.OpenRead(path);
public class SingleStreamFileSystem : IFileSystem
{
private readonly Stream stream;
public SingleStreamFileSystem(Stream stream) => this.stream = stream;
Stream IFileSystem.Create(string path) => this.stream;
Stream IFileSystem.OpenRead(string path) => this.stream;
}
}
}

19
tests/ImageSharp.Tests/TestUtilities/SingleStreamFileSystem.cs

@ -0,0 +1,19 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
using System.IO;
using SixLabors.ImageSharp.IO;
namespace SixLabors.ImageSharp.Tests.TestUtilities
{
internal class SingleStreamFileSystem : IFileSystem
{
private readonly Stream stream;
public SingleStreamFileSystem(Stream stream) => this.stream = stream;
Stream IFileSystem.Create(string path) => this.stream;
Stream IFileSystem.OpenRead(string path) => this.stream;
}
}
Loading…
Cancel
Save