mirror of
https://github.com/DarthAffe/RGB.NET.git
synced 2025-12-13 01:58:30 +00:00
139 lines
5.3 KiB
C#
139 lines
5.3 KiB
C#
using System;
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
using RGB.NET.Core;
|
|
using RGB.NET.Presets.Textures.Sampler;
|
|
|
|
namespace RGB.NET.Presets.Tests.Sampler;
|
|
|
|
[TestClass]
|
|
public class AverageFloatSamplerTest
|
|
{
|
|
#region Methods
|
|
|
|
[TestMethod]
|
|
public void WhiteTest()
|
|
{
|
|
Span<Color> colorData = new Color[16 * 16];
|
|
colorData.Fill(new Color(1f, 1f, 1f, 1f));
|
|
float[] result = new float[4];
|
|
|
|
Span<float> data = new float[colorData.Length * 4];
|
|
int index = 0;
|
|
for (int i = 0; i < colorData.Length; i++)
|
|
{
|
|
data[index++] = colorData[i].A;
|
|
data[index++] = colorData[i].R;
|
|
data[index++] = colorData[i].G;
|
|
data[index++] = colorData[i].B;
|
|
}
|
|
|
|
SamplerInfo<float> info = new(0, 0, 2, 3, 16, 4, data);
|
|
new AverageFloatSampler().Sample(info, result);
|
|
Assert.AreEqual(new Color(1f, 1f, 1f, 1f), new Color(result[0], result[1], result[2], result[3]));
|
|
|
|
info = new SamplerInfo<float>(0, 0, 13, 13, 16, 4, data);
|
|
new AverageFloatSampler().Sample(info, result);
|
|
Assert.AreEqual(new Color(1f, 1f, 1f, 1f), new Color(result[0], result[1], result[2], result[3]));
|
|
|
|
info = new SamplerInfo<float>(0, 0, 16, 16, 16, 4, data);
|
|
new AverageFloatSampler().Sample(info, result);
|
|
Assert.AreEqual(new Color(1f, 1f, 1f, 1f), new Color(result[0], result[1], result[2], result[3]));
|
|
}
|
|
|
|
[TestMethod]
|
|
public void BlackTest()
|
|
{
|
|
Span<Color> colorData = new Color[16 * 16];
|
|
colorData.Fill(new Color(1f, 0f, 0f, 0f));
|
|
float[] result = new float[4];
|
|
|
|
Span<float> data = new float[colorData.Length * 4];
|
|
int index = 0;
|
|
for (int i = 0; i < colorData.Length; i++)
|
|
{
|
|
data[index++] = colorData[i].A;
|
|
data[index++] = colorData[i].R;
|
|
data[index++] = colorData[i].G;
|
|
data[index++] = colorData[i].B;
|
|
}
|
|
|
|
SamplerInfo<float> info = new(0, 0, 2, 3, 16, 4, data);
|
|
new AverageFloatSampler().Sample(info, result);
|
|
Assert.AreEqual(new Color(1f, 0f, 0f, 0f), new Color(result[0], result[1], result[2], result[3]));
|
|
|
|
info = new SamplerInfo<float>(0, 0, 13, 13, 16, 4, data);
|
|
new AverageFloatSampler().Sample(info, result);
|
|
Assert.AreEqual(new Color(1f, 0f, 0f, 0f), new Color(result[0], result[1], result[2], result[3]));
|
|
|
|
info = new SamplerInfo<float>(0, 0, 16, 16, 16, 4, data);
|
|
new AverageFloatSampler().Sample(info, result);
|
|
Assert.AreEqual(new Color(1f, 0f, 0f, 0f), new Color(result[0], result[1], result[2], result[3]));
|
|
}
|
|
|
|
[TestMethod]
|
|
public void GrayTest()
|
|
{
|
|
Span<Color> colorData = new Color[16 * 16];
|
|
for (int i = 0; i < colorData.Length; i++)
|
|
colorData[i] = (i % 2) == 0 ? new Color(1f, 0f, 0f, 0f) : new Color(1f, 1f, 1f, 1f);
|
|
float[] result = new float[4];
|
|
|
|
Span<float> data = new float[colorData.Length * 4];
|
|
int index = 0;
|
|
for (int i = 0; i < colorData.Length; i++)
|
|
{
|
|
data[index++] = colorData[i].A;
|
|
data[index++] = colorData[i].R;
|
|
data[index++] = colorData[i].G;
|
|
data[index++] = colorData[i].B;
|
|
}
|
|
|
|
SamplerInfo<float> info = new(0, 0, 2, 3, 16, 4, data);
|
|
new AverageFloatSampler().Sample(info, result);
|
|
Assert.AreEqual(new Color(1f, 0.5f, 0.5f, 0.5f), new Color(result[0], result[1], result[2], result[3]));
|
|
|
|
info = new SamplerInfo<float>(0, 0, 13, 13, 16, 4, data);
|
|
new AverageFloatSampler().Sample(info, result);
|
|
Assert.AreEqual(new Color(1f, 6f / 13f, 6f / 13f, 6f / 13f), new Color(result[0], result[1], result[2], result[3]));
|
|
|
|
info = new SamplerInfo<float>(0, 0, 16, 16, 16, 4, data);
|
|
new AverageFloatSampler().Sample(info, result);
|
|
Assert.AreEqual(new Color(1f, 0.5f, 0.5f, 0.5f), new Color(result[0], result[1], result[2], result[3]));
|
|
}
|
|
|
|
[TestMethod]
|
|
public void MixedTest()
|
|
{
|
|
Color[] colorData = new Color[16 * 16];
|
|
for (int i = 0; i < colorData.Length; i++)
|
|
colorData[i] = (i % 5) switch
|
|
{
|
|
0 => new Color(1f, 1f, 0f, 0f),
|
|
1 => new Color(1f, 0f, 0.75f, 0f),
|
|
2 => new Color(0.5f, 0f, 0f, 0.5f),
|
|
3 => new Color(0f, 1f, 1f, 1f),
|
|
_ => new Color(0f, 0f, 0f, 0f),
|
|
};
|
|
float[] result = new float[4];
|
|
|
|
Span<float> data = new float[colorData.Length * 4];
|
|
int index = 0;
|
|
for (int i = 0; i < colorData.Length; i++)
|
|
{
|
|
data[index++] = colorData[i].A;
|
|
data[index++] = colorData[i].R;
|
|
data[index++] = colorData[i].G;
|
|
data[index++] = colorData[i].B;
|
|
}
|
|
|
|
SamplerInfo<float> info = new(0, 0, 2, 3, 2, 4, data[..(6 * 4)]);
|
|
new AverageFloatSampler().Sample(info, result);
|
|
Assert.AreEqual(new Color(0.5833333f, 0.5f, 0.291666657f, 0.25f), new Color(result[0], result[1], result[2], result[3]));
|
|
|
|
info = new SamplerInfo<float>(0, 0, 16, 16, 16, 4, data);
|
|
new AverageFloatSampler().Sample(info, result);
|
|
Assert.AreEqual(new Color(0.5019531f, 0.40234375f, 0.3486328f, 0.298828125f), new Color(result[0], result[1], result[2], result[3]));
|
|
}
|
|
|
|
#endregion
|
|
} |