mirror of https://github.com/SixLabors/ImageSharp
30 changed files with 402 additions and 108 deletions
@ -0,0 +1,96 @@ |
|||||
|
// Copyright (c) Six Labors and contributors.
|
||||
|
// Licensed under the Apache License, Version 2.0.
|
||||
|
|
||||
|
using System; |
||||
|
using SixLabors.ImageSharp.Memory; |
||||
|
using SixLabors.ImageSharp.PixelFormats; |
||||
|
using Xunit; |
||||
|
|
||||
|
namespace SixLabors.ImageSharp.Tests |
||||
|
{ |
||||
|
public class ImageFrameTests |
||||
|
{ |
||||
|
public class Indexer |
||||
|
{ |
||||
|
private readonly Configuration configuration = Configuration.CreateDefaultInstance(); |
||||
|
|
||||
|
private void LimitBufferCapacity(int bufferCapacityInBytes) |
||||
|
{ |
||||
|
var allocator = (ArrayPoolMemoryAllocator)this.configuration.MemoryAllocator; |
||||
|
allocator.BufferCapacityInBytes = bufferCapacityInBytes; |
||||
|
} |
||||
|
|
||||
|
[Theory] |
||||
|
[InlineData(false)] |
||||
|
[InlineData(true)] |
||||
|
public void GetSet(bool enforceDisco) |
||||
|
{ |
||||
|
if (enforceDisco) |
||||
|
{ |
||||
|
this.LimitBufferCapacity(100); |
||||
|
} |
||||
|
|
||||
|
using var image = new Image<Rgba32>(this.configuration, 10, 10); |
||||
|
ImageFrame<Rgba32> frame = image.Frames.RootFrame; |
||||
|
Rgba32 val = frame[3, 4]; |
||||
|
Assert.Equal(default(Rgba32), val); |
||||
|
frame[3, 4] = Color.Red; |
||||
|
val = frame[3, 4]; |
||||
|
Assert.Equal(Color.Red.ToRgba32(), val); |
||||
|
} |
||||
|
|
||||
|
public static TheoryData<bool, int> OutOfRangeData = new TheoryData<bool, int>() |
||||
|
{ |
||||
|
{ false, -1 }, |
||||
|
{ false, 10 }, |
||||
|
{ true, -1 }, |
||||
|
{ true, 10 }, |
||||
|
}; |
||||
|
|
||||
|
[Theory] |
||||
|
[MemberData(nameof(OutOfRangeData))] |
||||
|
public void Get_OutOfRangeX(bool enforceDisco, int x) |
||||
|
{ |
||||
|
if (enforceDisco) |
||||
|
{ |
||||
|
this.LimitBufferCapacity(100); |
||||
|
} |
||||
|
|
||||
|
using var image = new Image<Rgba32>(this.configuration, 10, 10); |
||||
|
ImageFrame<Rgba32> frame = image.Frames.RootFrame; |
||||
|
ArgumentOutOfRangeException ex = Assert.Throws<ArgumentOutOfRangeException>(() => _ = frame[x, 3]); |
||||
|
Assert.Equal("x", ex.ParamName); |
||||
|
} |
||||
|
|
||||
|
[Theory] |
||||
|
[MemberData(nameof(OutOfRangeData))] |
||||
|
public void Set_OutOfRangeX(bool enforceDisco, int x) |
||||
|
{ |
||||
|
if (enforceDisco) |
||||
|
{ |
||||
|
this.LimitBufferCapacity(100); |
||||
|
} |
||||
|
|
||||
|
using var image = new Image<Rgba32>(this.configuration, 10, 10); |
||||
|
ImageFrame<Rgba32> frame = image.Frames.RootFrame; |
||||
|
ArgumentOutOfRangeException ex = Assert.Throws<ArgumentOutOfRangeException>(() => frame[x, 3] = default); |
||||
|
Assert.Equal("x", ex.ParamName); |
||||
|
} |
||||
|
|
||||
|
[Theory] |
||||
|
[MemberData(nameof(OutOfRangeData))] |
||||
|
public void Set_OutOfRangeY(bool enforceDisco, int y) |
||||
|
{ |
||||
|
if (enforceDisco) |
||||
|
{ |
||||
|
this.LimitBufferCapacity(100); |
||||
|
} |
||||
|
|
||||
|
using var image = new Image<Rgba32>(this.configuration, 10, 10); |
||||
|
ImageFrame<Rgba32> frame = image.Frames.RootFrame; |
||||
|
ArgumentOutOfRangeException ex = Assert.Throws<ArgumentOutOfRangeException>(() => frame[3, y] = default); |
||||
|
Assert.Equal("y", ex.ParamName); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue