这不起作用
int blueInt = Color.Blue.ToArgb();
Color fred = Color.FromArgb(blueInt);
Assert.AreEqual(Color.Blue,fred);
有什么建议吗?
[编辑]
我正在使用NUnit,输出是
失败:
预期:颜色[蓝色]
但是:颜色[A = 255,R = 0,G = 0,B = 255]
[编辑]
这有效!
int blueInt = Color.Blue.ToArgb();
Color fred = Color.FromArgb(blueInt);
Assert.AreEqual(Color.Blue.ToArgb(),fred.ToArgb());
答案 0 :(得分:10)
来自MSDN documentation on Color.operator ==
:
这种方法比较多 颜色结构的ARGB值。 它也做了一些比较 州旗。如果你想比较 只是两个颜色的ARGB值 结构,使用它们进行比较 ToArgb方法。
我猜测状态标志是不同的。
答案 1 :(得分:1)
它们不会相同,因为Color.Blue不等于你的颜色对象,它等于内部存储的东西,“new Color(KnownColor.Blue);”准确地说。
答案 2 :(得分:0)
我原以为Assert.AreSame是因为拳击与值类型,但AreEqual不应该有这个问题。
你可以添加哪种语言(我假设是C#)你的使用和哪种测试框架?
Assert.AreEqual(true, Color.Blue == fred);
会产生什么结果?
答案 3 :(得分:0)
或者,这也有效,我认为它更直观
[Test]
public void ColorTransform()
{
var argbInt = Color.LightCyan.ToArgb();
Color backColor = Color.FromArgb(argbInt);
Assert.AreEqual(Color.LightCyan.A, backColor.A);
Assert.AreEqual(Color.LightCyan.B, backColor.B);
Assert.AreEqual(Color.LightCyan.G, backColor.G);
Assert.AreEqual(Color.LightCyan.R, backColor.R);
}