TestCenter: Color has now 100% unit test code coverage and all tests are green

Color: fixed some minor issues. Color is completly finished including unit tests now.
This commit is contained in:
Glatzemann 2011-11-04 13:07:50 +00:00
parent 7423fd4532
commit 2c46103340
2 changed files with 333 additions and 28 deletions

View File

@ -93,6 +93,151 @@ namespace ANX.Framework.TestCenter.Strukturen
new object[] { DataFactory.RandomFloat, DataFactory.RandomFloat, DataFactory.RandomFloat, DataFactory.RandomFloat, DataFactory.RandomFloat, DataFactory.RandomFloat, DataFactory.RandomFloat, DataFactory.RandomFloat, DataFactory.RandomFloat }
};
static object[] colors =
{
new Object[] { XNAColor.AliceBlue, ANXColor.AliceBlue, "Color.AliceBlue" },
new Object[] { XNAColor.AntiqueWhite, ANXColor.AntiqueWhite, "Color.AntiqueWhite" },
new Object[] { XNAColor.Aqua, ANXColor.Aqua, "Color.Aqua" },
new Object[] { XNAColor.Aquamarine, ANXColor.Aquamarine, "Color.Aquamarine" },
new Object[] { XNAColor.Azure, ANXColor.Azure, "Color.Azure" },
new Object[] { XNAColor.Beige, ANXColor.Beige, "Color.Beige" },
new Object[] { XNAColor.Bisque, ANXColor.Bisque, "Color.Bisque" },
new Object[] { XNAColor.Black, ANXColor.Black, "Color.Black" },
new Object[] { XNAColor.BlanchedAlmond, ANXColor.BlanchedAlmond, "Color.BlanchedAlmond" },
new Object[] { XNAColor.Blue, ANXColor.Blue, "Color.Blue" },
new Object[] { XNAColor.BlueViolet, ANXColor.BlueViolet, "Color.BlueViolet" },
new Object[] { XNAColor.Brown, ANXColor.Brown, "Color.Brown" },
new Object[] { XNAColor.BurlyWood, ANXColor.BurlyWood, "Color.BurlyWood" },
new Object[] { XNAColor.CadetBlue, ANXColor.CadetBlue, "Color.CadetBlue" },
new Object[] { XNAColor.Chartreuse, ANXColor.Chartreuse, "Color.Chartreuse" },
new Object[] { XNAColor.Chocolate, ANXColor.Chocolate, "Color.Choclate" },
new Object[] { XNAColor.Coral, ANXColor.Coral, "Color.Coral" },
new Object[] { XNAColor.CornflowerBlue, ANXColor.CornflowerBlue, "Color.CornflowerBlue" },
new Object[] { XNAColor.Cornsilk, ANXColor.Cornsilk, "Color.Cornsilk" },
new Object[] { XNAColor.Crimson, ANXColor.Crimson, "Color.Crimson" },
new Object[] { XNAColor.Cyan, ANXColor.Cyan, "Color.Cyan" },
new Object[] { XNAColor.DarkBlue, ANXColor.DarkBlue, "Color.DarkBlue" },
new Object[] { XNAColor.DarkCyan, ANXColor.DarkCyan, "Color.DarkCyan" },
new Object[] { XNAColor.DarkGoldenrod, ANXColor.DarkGoldenrod, "Color.DarkGoldenrod" },
new Object[] { XNAColor.DarkGray, ANXColor.DarkGray, "Color.DarkGray" },
new Object[] { XNAColor.DarkGreen, ANXColor.DarkGreen, "Color.DarkGreen" },
new Object[] { XNAColor.DarkKhaki, ANXColor.DarkKhaki, "Color.DarkKhaki" },
new Object[] { XNAColor.DarkMagenta, ANXColor.DarkMagenta, "Color.DarkMagenta" },
new Object[] { XNAColor.DarkOliveGreen, ANXColor.DarkOliveGreen, "Color.DarkOliveGreen" },
new Object[] { XNAColor.DarkOrange, ANXColor.DarkOrange, "Color.DarkOrange" },
new Object[] { XNAColor.DarkOrchid, ANXColor.DarkOrchid, "Color.DarkOrchid" },
new Object[] { XNAColor.DarkRed, ANXColor.DarkRed, "Color.DarkRed" },
new Object[] { XNAColor.DarkSalmon, ANXColor.DarkSalmon, "Color.DarkSalmon" },
new Object[] { XNAColor.DarkSeaGreen, ANXColor.DarkSeaGreen, "Color.DarkSeaGreen" },
new Object[] { XNAColor.DarkSlateBlue, ANXColor.DarkSlateBlue, "Color.DarkSlateBlue" },
new Object[] { XNAColor.DarkSlateGray, ANXColor.DarkSlateGray, "Color.DarkSlateGray" },
new Object[] { XNAColor.DarkTurquoise, ANXColor.DarkTurquoise, "Color.DarkTurquoise" },
new Object[] { XNAColor.DarkViolet, ANXColor.DarkViolet, "Color.DarkViolet" },
new Object[] { XNAColor.DeepPink, ANXColor.DeepPink, "Color.DeepPink" },
new Object[] { XNAColor.DeepSkyBlue, ANXColor.DeepSkyBlue, "Color.DeepSkyBlue" },
new Object[] { XNAColor.DimGray, ANXColor.DimGray, "Color.DimGray" },
new Object[] { XNAColor.DodgerBlue, ANXColor.DodgerBlue, "Color.DodgerBlue" },
new Object[] { XNAColor.Firebrick, ANXColor.Firebrick, "Color.Firebrick" },
new Object[] { XNAColor.FloralWhite, ANXColor.FloralWhite, "Color.FloralWhite" },
new Object[] { XNAColor.ForestGreen, ANXColor.ForestGreen, "Color.ForestGreen" },
new Object[] { XNAColor.Fuchsia, ANXColor.Fuchsia, "Color.Fuchsia" },
new Object[] { XNAColor.Gainsboro, ANXColor.Gainsboro, "Color.Gainsboro" },
new Object[] { XNAColor.GhostWhite, ANXColor.GhostWhite, "Color.GhostWhite" },
new Object[] { XNAColor.Gold, ANXColor.Gold, "Color.Gold" },
new Object[] { XNAColor.Goldenrod, ANXColor.Goldenrod, "Color.Goldenrod" },
new Object[] { XNAColor.Gray, ANXColor.Gray, "Color.Gray" },
new Object[] { XNAColor.Green, ANXColor.Green, "Color.Green" },
new Object[] { XNAColor.GreenYellow, ANXColor.GreenYellow, "Color.GreenYellow" },
new Object[] { XNAColor.Honeydew, ANXColor.Honeydew, "Color.Honeydew" },
new Object[] { XNAColor.HotPink, ANXColor.HotPink, "Color.HotPink" },
new Object[] { XNAColor.IndianRed, ANXColor.IndianRed, "Color.IndianRed" },
new Object[] { XNAColor.Indigo, ANXColor.Indigo, "Color.Indigo" },
new Object[] { XNAColor.Ivory, ANXColor.Ivory, "Color.Ivory" },
new Object[] { XNAColor.Khaki, ANXColor.Khaki, "Color.Khaki" },
new Object[] { XNAColor.Lavender, ANXColor.Lavender, "Color.Lavender" },
new Object[] { XNAColor.LavenderBlush, ANXColor.LavenderBlush, "Color.LavenderBlush" },
new Object[] { XNAColor.LawnGreen, ANXColor.LawnGreen, "Color.LawnGreen" },
new Object[] { XNAColor.LemonChiffon, ANXColor.LemonChiffon, "Color.LemonChiffon" },
new Object[] { XNAColor.LightBlue, ANXColor.LightBlue, "Color.LightBlue" },
new Object[] { XNAColor.LightCoral, ANXColor.LightCoral, "Color.LightCoral" },
new Object[] { XNAColor.LightCyan, ANXColor.LightCyan, "Color.LightCyan" },
new Object[] { XNAColor.LightGoldenrodYellow, ANXColor.LightGoldenrodYellow, "Color.LightGoldenrodYellow" },
new Object[] { XNAColor.LightGray, ANXColor.LightGray, "Color.LightGray" },
new Object[] { XNAColor.LightGreen, ANXColor.LightGreen, "Color.LightGreen" },
new Object[] { XNAColor.LightPink, ANXColor.LightPink, "Color.LightPink" },
new Object[] { XNAColor.LightSalmon, ANXColor.LightSalmon, "Color.LightSalmon" },
new Object[] { XNAColor.LightSeaGreen, ANXColor.LightSeaGreen, "Color.LightSeaGreen" },
new Object[] { XNAColor.LightSkyBlue, ANXColor.LightSkyBlue, "Color.LightSkyBlue" },
new Object[] { XNAColor.LightSlateGray, ANXColor.LightSlateGray, "Color.LightSlateGray" },
new Object[] { XNAColor.LightSteelBlue, ANXColor.LightSteelBlue, "Color.LightSteelBlue" },
new Object[] { XNAColor.LightYellow, ANXColor.LightYellow, "Color.LightYellow" },
new Object[] { XNAColor.Lime, ANXColor.Lime, "Color.Lime" },
new Object[] { XNAColor.LimeGreen, ANXColor.LimeGreen, "" },
new Object[] { XNAColor.Linen, ANXColor.Linen, "" },
new Object[] { XNAColor.Magenta, ANXColor.Magenta, "" },
new Object[] { XNAColor.Maroon, ANXColor.Maroon, "" },
new Object[] { XNAColor.MediumAquamarine, ANXColor.MediumAquamarine, "" },
new Object[] { XNAColor.MediumBlue, ANXColor.MediumBlue, "" },
new Object[] { XNAColor.MediumOrchid, ANXColor.MediumOrchid, "" },
new Object[] { XNAColor.MediumPurple, ANXColor.MediumPurple, "" },
new Object[] { XNAColor.MediumSeaGreen, ANXColor.MediumSeaGreen, "" },
new Object[] { XNAColor.MediumSlateBlue, ANXColor.MediumSlateBlue, "" },
new Object[] { XNAColor.MediumSpringGreen, ANXColor.MediumSpringGreen, "" },
new Object[] { XNAColor.MediumTurquoise, ANXColor.MediumTurquoise, "" },
new Object[] { XNAColor.MediumVioletRed, ANXColor.MediumVioletRed, "" },
new Object[] { XNAColor.MidnightBlue, ANXColor.MidnightBlue, "" },
new Object[] { XNAColor.MintCream, ANXColor.MintCream, "" },
new Object[] { XNAColor.MistyRose, ANXColor.MistyRose, "" },
new Object[] { XNAColor.Moccasin, ANXColor.Moccasin, "" },
new Object[] { XNAColor.NavajoWhite, ANXColor.NavajoWhite, "" },
new Object[] { XNAColor.Navy, ANXColor.Navy, "" },
new Object[] { XNAColor.OldLace, ANXColor.OldLace, "" },
new Object[] { XNAColor.Olive, ANXColor.Olive, "" },
new Object[] { XNAColor.OliveDrab, ANXColor.OliveDrab, "" },
new Object[] { XNAColor.Orange, ANXColor.Orange, "" },
new Object[] { XNAColor.OrangeRed, ANXColor.OrangeRed, "" },
new Object[] { XNAColor.Orchid, ANXColor.Orchid, "" },
new Object[] { XNAColor.PaleGoldenrod, ANXColor.PaleGoldenrod, "" },
new Object[] { XNAColor.PaleGreen, ANXColor.PaleGreen, "" },
new Object[] { XNAColor.PaleTurquoise, ANXColor.PaleTurquoise, "" },
new Object[] { XNAColor.PaleVioletRed, ANXColor.PaleVioletRed, "" },
new Object[] { XNAColor.PapayaWhip, ANXColor.PapayaWhip, "" },
new Object[] { XNAColor.PeachPuff, ANXColor.PeachPuff, "" },
new Object[] { XNAColor.Peru, ANXColor.Peru, "" },
new Object[] { XNAColor.Pink, ANXColor.Pink, "" },
new Object[] { XNAColor.Plum, ANXColor.Plum, "" },
new Object[] { XNAColor.PowderBlue, ANXColor.PowderBlue, "" },
new Object[] { XNAColor.Purple, ANXColor.Purple, "" },
new Object[] { XNAColor.Red, ANXColor.Red, "" },
new Object[] { XNAColor.RosyBrown, ANXColor.RosyBrown, "" },
new Object[] { XNAColor.RoyalBlue, ANXColor.RoyalBlue, "" },
new Object[] { XNAColor.SaddleBrown, ANXColor.SaddleBrown, "" },
new Object[] { XNAColor.Salmon, ANXColor.Salmon, "" },
new Object[] { XNAColor.SandyBrown, ANXColor.SandyBrown, "" },
new Object[] { XNAColor.SeaGreen, ANXColor.SeaGreen, "" },
new Object[] { XNAColor.SeaShell, ANXColor.SeaShell, "" },
new Object[] { XNAColor.Sienna, ANXColor.Sienna, "" },
new Object[] { XNAColor.Silver, ANXColor.Silver, "" },
new Object[] { XNAColor.SkyBlue, ANXColor.SkyBlue, "" },
new Object[] { XNAColor.SlateBlue, ANXColor.SlateBlue, "" },
new Object[] { XNAColor.SlateGray, ANXColor.SlateGray, "" },
new Object[] { XNAColor.Snow, ANXColor.Snow, "" },
new Object[] { XNAColor.SpringGreen, ANXColor.SpringGreen, "" },
new Object[] { XNAColor.SteelBlue, ANXColor.SteelBlue, "" },
new Object[] { XNAColor.Tan, ANXColor.Tan, "" },
new Object[] { XNAColor.Teal, ANXColor.Teal, "" },
new Object[] { XNAColor.Thistle, ANXColor.Thistle, "" },
new Object[] { XNAColor.Tomato, ANXColor.Tomato, "" },
new Object[] { XNAColor.Transparent, ANXColor.Transparent, "" },
new Object[] { XNAColor.Turquoise, ANXColor.Turquoise, "" },
new Object[] { XNAColor.Violet, ANXColor.Violet, "" },
new Object[] { XNAColor.Wheat, ANXColor.Wheat, "" },
new Object[] { XNAColor.White, ANXColor.White, "" },
new Object[] { XNAColor.WhiteSmoke, ANXColor.WhiteSmoke, "" },
new Object[] { XNAColor.Yellow, ANXColor.Yellow, "" },
new Object[] { XNAColor.YellowGreen, ANXColor.YellowGreen, "" },
};
#region Constructors
[Test]
public void constructor0()
@ -156,6 +301,34 @@ namespace ANX.Framework.TestCenter.Strukturen
AssertHelper.ConvertEquals(xna, anx, "constructor6");
}
[Test]
public void constructor7()
{
XNAColor xna = new XNAColor(512, 512, 512);
ANXColor anx = new ANXColor(512, 512, 512);
AssertHelper.ConvertEquals(xna, anx, "constructor7");
}
[Test, TestCaseSource("fourfloats")]
public void constructor8(float r, float g, float b, float a)
{
XNAColor xna = new XNAColor(r, g, b, a);
ANXColor anx = new ANXColor(r, g, b, a);
AssertHelper.ConvertEquals(xna, anx, "constructor8");
}
[Test]
public void constructor9()
{
XNAColor xna = new XNAColor(512, 512, 512, 512);
ANXColor anx = new ANXColor(512, 512, 512, 512);
AssertHelper.ConvertEquals(xna, anx, "constructor9");
}
#endregion
#region Methods
@ -183,6 +356,54 @@ namespace ANX.Framework.TestCenter.Strukturen
}
}
[Test, TestCaseSource("eightfloats")]
public void EqualOperator2(
float r1, float g1, float b1, float a1,
float r2, float g2, float b2, float a2)
{
Object xna1 = new XNAColor(r1, g1, b1) * a1;
Object xna2 = new XNAColor(r2, g2, b2) * a2;
Object anx1 = new ANXColor(r1, g1, b1) * a1;
Object anx2 = new ANXColor(r2, g2, b2) * a2;
bool xna = xna1.Equals(xna2);
bool anx = anx1.Equals(anx2);
if (xna == anx)
{
Assert.Pass("EqualsOperator2 passed");
}
else
{
Assert.Fail(String.Format("EqualsOperator2 failed: xna({0}) anx({1})", xna.ToString(), anx.ToString()));
}
}
[Test, TestCaseSource("eightfloats")]
public void EqualOperator3(
float r1, float g1, float b1, float a1,
float r2, float g2, float b2, float a2)
{
Object xna1 = new XNAColor(r1, g1, b1) * a1;
Object xna2 = new XNAColor(r2, g2, b2) * a2;
Object anx1 = new ANXColor(r1, g1, b1) * a1;
Object anx2 = new ANXColor(r2, g2, b2) * a2;
bool xna = xna1.Equals(anx2); // this is itentional!!!
bool anx = anx1.Equals(xna2); // this is itentional!!!
if (xna == anx)
{
Assert.Pass("EqualsOperator3 passed");
}
else
{
Assert.Fail(String.Format("EqualsOperator3 failed: xna({0}) anx({1})", xna.ToString(), anx.ToString()));
}
}
[Test, TestCaseSource("eightfloats")]
public void UnequalOperator(
float r1, float g1, float b1, float a1,
@ -217,6 +438,15 @@ namespace ANX.Framework.TestCenter.Strukturen
AssertHelper.ConvertEquals(xna, anx, "FromNonPremultipliedIntStatic");
}
[Test]
public void FromNonPremultipliedIntStatic2(float r, float g, float b, float a)
{
XNAColor xna = XNAColor.FromNonPremultiplied(512, 512, 512, 512);
ANXColor anx = ANXColor.FromNonPremultiplied(512, 512, 512, 512);
AssertHelper.ConvertEquals(xna, anx, "FromNonPremultipliedIntStatic2");
}
[Test, TestCaseSource("fourfloats")]
public void FromNonPremultipliedVector4Static(float r, float g, float b, float a)
{
@ -246,6 +476,40 @@ namespace ANX.Framework.TestCenter.Strukturen
AssertHelper.ConvertEquals(xna, anx, "LerpStatic");
}
[Test, TestCaseSource("ninefloats")]
public void LerpStaticNaN(float r1, float g1, float b1, float a1,float r2, float g2, float b2, float a2, float nop)
{
float amount = float.NaN;
XNAColor xna1 = new XNAColor(r1, g1, b1) * a1;
XNAColor xna2 = new XNAColor(r2, g2, b2) * a2;
ANXColor anx1 = new ANXColor(r1, g1, b1) * a1;
ANXColor anx2 = new ANXColor(r2, g2, b2) * a2;
XNAColor xna = XNAColor.Lerp(xna1, xna2, amount);
ANXColor anx = ANXColor.Lerp(anx1, anx2, amount);
AssertHelper.ConvertEquals(xna, anx, "LerpStaticNan");
}
[Test, TestCaseSource("ninefloats")]
public void LerpStaticNegative(float r1, float g1, float b1, float a1, float r2, float g2, float b2, float a2, float nop)
{
float amount = float.MinValue / 65536f;
XNAColor xna1 = new XNAColor(r1, g1, b1) * a1;
XNAColor xna2 = new XNAColor(r2, g2, b2) * a2;
ANXColor anx1 = new ANXColor(r1, g1, b1) * a1;
ANXColor anx2 = new ANXColor(r2, g2, b2) * a2;
XNAColor xna = XNAColor.Lerp(xna1, xna2, amount);
ANXColor anx = ANXColor.Lerp(anx1, anx2, amount);
AssertHelper.ConvertEquals(xna, anx, "LerpStaticNegative");
}
[Test, TestCaseSource("eightfloats")]
public void MultiplyStatic(float r, float g, float b, float a, float scale, float x, float y, float z)
{
@ -362,6 +626,60 @@ namespace ANX.Framework.TestCenter.Strukturen
AssertHelper.ConvertEquals(xnaColor.A, anxColor.A, "A");
}
[Test, TestCaseSource("colors")]
public void NamedColorProperties(XNAColor xnaColor, ANXColor anxColor, string name)
{
AssertHelper.ConvertEquals(xnaColor, anxColor, name);
}
[Test, TestCaseSource("fourfloats")]
public void RSet(float r, float g, float b, float a)
{
XNAColor xnaColor = new XNAColor();
ANXColor anxColor = new ANXColor();
xnaColor.R = (byte)(r * 255);
anxColor.R = (byte)(r * 255);
AssertHelper.ConvertEquals(xnaColor.R, anxColor.R, "RSet");
}
[Test, TestCaseSource("fourfloats")]
public void GSet(float r, float g, float b, float a)
{
XNAColor xnaColor = new XNAColor();
ANXColor anxColor = new ANXColor();
xnaColor.G = (byte)(r * 255);
anxColor.G = (byte)(r * 255);
AssertHelper.ConvertEquals(xnaColor.G, anxColor.G, "GSet");
}
[Test, TestCaseSource("fourfloats")]
public void BSet(float r, float g, float b, float a)
{
XNAColor xnaColor = new XNAColor();
ANXColor anxColor = new ANXColor();
xnaColor.B = (byte)(r * 255);
anxColor.B = (byte)(r * 255);
AssertHelper.ConvertEquals(xnaColor.B, anxColor.B, "BSet");
}
[Test, TestCaseSource("fourfloats")]
public void ASet(float r, float g, float b, float a)
{
XNAColor xnaColor = new XNAColor();
ANXColor anxColor = new ANXColor();
xnaColor.A = (byte)(r * 255);
anxColor.A = (byte)(r * 255);
AssertHelper.ConvertEquals(xnaColor.A, anxColor.A, "ASet");
}
#endregion
}
}

View File

@ -107,8 +107,9 @@ namespace ANX.Framework
}
public Color(Vector4 vector)
: this(vector.X, vector.Y, vector.Z, vector.W)
{
this.packedValue = 0;
((IPackedVector)this).PackFromVector4(vector);
}
private Color(uint packedValue)
@ -785,20 +786,10 @@ namespace ANX.Framework
get { return new Color(255, 99, 71, 255); }
}
public static Color TransparentBlack
{
get { return new Color(0, 0, 0, 0); }
}
public static Color TransparentWhite
{
get { return new Color(255, 255, 255, 0); }
}
public static Color Transparent
{
get { return new Color(0, 0, 0, 0); }
}
public static Color Transparent
{
get { return new Color(0, 0, 0, 0); }
}
public static Color Turquoise
{
@ -867,10 +858,6 @@ namespace ANX.Framework
{
Color color;
r = r * a;
g = g * a;
b = b * a;
if (((((r | g) | b) | a) & -256) != 0)
{
r = r < 0 ? 0 : (r > 255 ? 255 : r);
@ -879,6 +866,10 @@ namespace ANX.Framework
a = a < 0 ? 0 : (a > 255 ? 255 : a);
}
r = r * a;
g = g * a;
b = b * a;
color.packedValue = (uint)(((r | g << 8) | b << 16) | a << 24);
return color;
@ -987,11 +978,6 @@ namespace ANX.Framework
return result;
}
public void PackFromVector4(Vector4 vector)
{
throw new NotImplementedException();
}
#endregion // Methods
#region Properties
@ -1085,14 +1071,15 @@ namespace ANX.Framework
{
return 0;
}
if (value > bitmask)
{
return (uint)bitmask;
}
return (uint)value;
}
void IPackedVector.PackFromVector4(Vector4 vector)
{
this.packedValue = ColorPack(vector.X, vector.Y, vector.Z, vector.W);
}
#endregion // Helper
}
}