|
|
|
@ -47,6 +47,93 @@ namespace SixLabors.ImageSharp.Tests |
|
|
|
this.Image = new Image<Rgba32>(config, 1, 1); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void SavePixelData_Rgba32() |
|
|
|
{ |
|
|
|
using (var img = new Image<Rgba32>(2, 2)) |
|
|
|
{ |
|
|
|
img[0, 0] = Rgba32.White; |
|
|
|
img[1, 0] = Rgba32.Black; |
|
|
|
|
|
|
|
img[0, 1] = Rgba32.Red; |
|
|
|
img[1, 1] = Rgba32.Blue; |
|
|
|
var buffer = new byte[2 * 2 * 4]; // width * height * bytes per pixel
|
|
|
|
img.SavePixelData(buffer); |
|
|
|
|
|
|
|
Assert.Equal(255, buffer[0]); // 0, 0, R
|
|
|
|
Assert.Equal(255, buffer[1]); // 0, 0, G
|
|
|
|
Assert.Equal(255, buffer[2]); // 0, 0, B
|
|
|
|
Assert.Equal(255, buffer[3]); // 0, 0, A
|
|
|
|
|
|
|
|
Assert.Equal(0, buffer[4]); // 1, 0, R
|
|
|
|
Assert.Equal(0, buffer[5]); // 1, 0, G
|
|
|
|
Assert.Equal(0, buffer[6]); // 1, 0, B
|
|
|
|
Assert.Equal(255, buffer[7]); // 1, 0, A
|
|
|
|
|
|
|
|
Assert.Equal(255, buffer[8]); // 0, 1, R
|
|
|
|
Assert.Equal(0, buffer[9]); // 0, 1, G
|
|
|
|
Assert.Equal(0, buffer[10]); // 0, 1, B
|
|
|
|
Assert.Equal(255, buffer[11]); // 0, 1, A
|
|
|
|
|
|
|
|
Assert.Equal(0, buffer[12]); // 1, 1, R
|
|
|
|
Assert.Equal(0, buffer[13]); // 1, 1, G
|
|
|
|
Assert.Equal(255, buffer[14]); // 1, 1, B
|
|
|
|
Assert.Equal(255, buffer[15]); // 1, 1, A
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void SavePixelData_Bgr24() |
|
|
|
{ |
|
|
|
using (var img = new Image<Bgr24>(2, 2)) |
|
|
|
{ |
|
|
|
img[0, 0] = NamedColors<Bgr24>.White; |
|
|
|
img[1, 0] = NamedColors<Bgr24>.Black; |
|
|
|
|
|
|
|
img[0, 1] = NamedColors<Bgr24>.Red; |
|
|
|
img[1, 1] = NamedColors<Bgr24>.Blue; |
|
|
|
|
|
|
|
var buffer = new byte[2 * 2 * 3]; // width * height * bytes per pixel
|
|
|
|
img.SavePixelData(buffer); |
|
|
|
|
|
|
|
Assert.Equal(255, buffer[0]); // 0, 0, B
|
|
|
|
Assert.Equal(255, buffer[1]); // 0, 0, G
|
|
|
|
Assert.Equal(255, buffer[2]); // 0, 0, R
|
|
|
|
|
|
|
|
Assert.Equal(0, buffer[3]); // 1, 0, B
|
|
|
|
Assert.Equal(0, buffer[4]); // 1, 0, G
|
|
|
|
Assert.Equal(0, buffer[5]); // 1, 0, R
|
|
|
|
|
|
|
|
Assert.Equal(0, buffer[6]); // 0, 1, B
|
|
|
|
Assert.Equal(0, buffer[7]); // 0, 1, G
|
|
|
|
Assert.Equal(255, buffer[8]); // 0, 1, R
|
|
|
|
|
|
|
|
Assert.Equal(255, buffer[9]); // 1, 1, B
|
|
|
|
Assert.Equal(0, buffer[10]); // 1, 1, G
|
|
|
|
Assert.Equal(0, buffer[11]); // 1, 1, R
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void SavePixelData_Rgba32_Buffer_must_be_bigger() |
|
|
|
{ |
|
|
|
using (var img = new Image<Rgba32>(2, 2)) |
|
|
|
{ |
|
|
|
img[0, 0] = Rgba32.White; |
|
|
|
img[1, 0] = Rgba32.Black; |
|
|
|
|
|
|
|
img[0, 1] = Rgba32.Red; |
|
|
|
img[1, 1] = Rgba32.Blue; |
|
|
|
var buffer = new byte[2 * 2]; // width * height * bytes per pixel
|
|
|
|
|
|
|
|
Assert.Throws<ArgumentOutOfRangeException>(() => |
|
|
|
{ |
|
|
|
img.SavePixelData(buffer); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void SavePath() |
|
|
|
{ |
|
|
|
|