Skip to content

Commit 3cafdcb

Browse files
Merge pull request #2424 from SixLabors/bp/morewebptests
More tests for Webp lossless utils
2 parents 23a6193 + cfe2c45 commit 3cafdcb

File tree

1 file changed

+80
-10
lines changed

1 file changed

+80
-10
lines changed

tests/ImageSharp.Tests/Formats/WebP/LosslessUtilsTests.cs

Lines changed: 80 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -186,21 +186,88 @@ private static void RunPredictor12Test()
186186
private static void RunPredictor13Test()
187187
{
188188
// arrange
189-
uint[] topData = { 4278193922, 4278193666 };
190-
const uint left = 4278193410;
191-
const uint expectedResult = 4278193154;
189+
uint[] topData0 = { 4278193922, 4278193666 };
190+
const uint left0 = 4278193410;
191+
const uint expectedResult0 = 4278193154;
192+
uint[] topData1 = { 4294933015, 4278219803 };
193+
const uint left1 = 4278236686;
194+
const uint expectedResult1 = 4278231571;
195+
uint actual0 = 0;
196+
uint actual1 = 0;
192197

193198
// act
194199
unsafe
195200
{
196-
fixed (uint* top = &topData[1])
201+
fixed (uint* top = &topData0[1])
197202
{
198-
uint actual = LosslessUtils.Predictor13(left, top);
203+
actual0 = LosslessUtils.Predictor13(left0, top);
204+
}
199205

200-
// assert
201-
Assert.Equal(expectedResult, actual);
206+
fixed (uint* top = &topData1[1])
207+
{
208+
actual1 = LosslessUtils.Predictor13(left1, top);
202209
}
203210
}
211+
212+
// assert
213+
Assert.Equal(expectedResult0, actual0);
214+
Assert.Equal(expectedResult1, actual1);
215+
}
216+
217+
[Fact]
218+
public void BundleColorMap_WithXbitsZero_Works()
219+
{
220+
// arrange
221+
byte[] row = { 238, 238, 238, 238, 238, 238, 240, 237, 240, 235, 223, 223, 218, 220, 226, 219, 220, 204, 218, 211, 218, 221, 254, 255 };
222+
int xBits = 0;
223+
uint[] actual = new uint[row.Length];
224+
uint[] expected =
225+
{
226+
4278251008, 4278251008, 4278251008, 4278251008, 4278251008,
227+
4278251008, 4278251520, 4278250752, 4278251520, 4278250240,
228+
4278247168, 4278247168, 4278245888, 4278246400, 4278247936,
229+
4278246144, 4278246400, 4278242304, 4278245888, 4278244096,
230+
4278245888, 4278246656, 4278255104, 4278255360
231+
};
232+
233+
// act
234+
LosslessUtils.BundleColorMap(row, actual.Length, xBits, actual);
235+
236+
// assert
237+
Assert.True(actual.SequenceEqual(expected));
238+
}
239+
240+
[Fact]
241+
public void BundleColorMap_WithXbitsNoneZero_Works()
242+
{
243+
// arrange
244+
byte[] row =
245+
{
246+
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
247+
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
248+
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
249+
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
250+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
251+
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
252+
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
253+
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
254+
};
255+
int xBits = 2;
256+
uint[] actual = new uint[row.Length];
257+
uint[] expected =
258+
{
259+
4278233600, 4278233600, 4278233600, 4278233600, 4278255360, 4278255360, 4278255360, 4278255360, 4278233600, 4278233600, 4278233600, 4278233600,
260+
4278255360, 4278255360, 4278255360, 4278255360, 4278211840, 4278211840, 4278211840, 4278211840, 4278255360, 4278255360, 4278255360, 4278255360,
261+
4278255360, 4278255360, 4278255360, 4278255360, 4278255360, 4278255360, 4278255360, 4278206208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
262+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
263+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
264+
};
265+
266+
// act
267+
LosslessUtils.BundleColorMap(row, actual.Length, xBits, actual);
268+
269+
// assert
270+
Assert.True(actual.SequenceEqual(expected));
204271
}
205272

206273
[Fact]
@@ -215,9 +282,6 @@ private static void RunPredictor13Test()
215282
[Fact]
216283
public void Predictor13_Works() => RunPredictor13Test();
217284

218-
[Fact]
219-
public void SubtractGreen_Works() => RunSubtractGreenTest();
220-
221285
[Fact]
222286
public void AddGreenToBlueAndRed_Works() => RunAddGreenToBlueAndRedTest();
223287

@@ -251,12 +315,18 @@ private static void RunPredictor13Test()
251315
[Fact]
252316
public void Predictor13_WithoutSSE2_Works() => FeatureTestRunner.RunWithHwIntrinsicsFeature(RunPredictor13Test, HwIntrinsics.DisableSSE2);
253317

318+
[Fact]
319+
public void SubtractGreen_Works() => RunSubtractGreenTest();
320+
254321
[Fact]
255322
public void SubtractGreen_WithHardwareIntrinsics_Works() => FeatureTestRunner.RunWithHwIntrinsicsFeature(RunSubtractGreenTest, HwIntrinsics.AllowAll);
256323

257324
[Fact]
258325
public void SubtractGreen_WithoutAVX2_Works() => FeatureTestRunner.RunWithHwIntrinsicsFeature(RunSubtractGreenTest, HwIntrinsics.DisableAVX2);
259326

327+
[Fact]
328+
public void SubtractGreen_Scalar_Works() => FeatureTestRunner.RunWithHwIntrinsicsFeature(RunSubtractGreenTest, HwIntrinsics.DisableHWIntrinsic);
329+
260330
[Fact]
261331
public void SubtractGreen_WithoutAvxOrSSSE3_Works() => FeatureTestRunner.RunWithHwIntrinsicsFeature(RunSubtractGreenTest, HwIntrinsics.DisableAVX2 | HwIntrinsics.DisableSSSE3);
262332

0 commit comments

Comments
 (0)