5


1

これは動作しません

int blueInt = Color.Blue.ToArgb();カラーfred = Color.FromArgb(blueInt); Assert.AreEqual(Color.Blue、fred);

助言がありますか?

{空} [編集]

NUnitを使っていますが、出力は

失敗しました:

予想される色:[ブルー]

色は[A = 255、R = 0、G = 0、B = 255]です。

{空} [編集]

これは動作します。

int blueInt = Color.Blue.ToArgb();カラーfred = Color.FromArgb(blueInt); Assert.AreEqual(Color.Blue.ToArgb()、fred.ToArgb());

4 Answer


10


_ このメソッドは、Color構造のARGB値よりも多くを比較します。 また、いくつかの状態フラグの比較も行います。 2つのカラー構造体のARGB値だけを比較したい場合は、ToArgbメソッドを使用してそれらを比較します。 _

私は州の旗が違うと思います。


1


Color.Blueはあなたのカラーオブジェクトと同じではなく、内部的に保存されているものと同じでもあります。「new Color(KnownColor.Blue);正確には。


0


値型のボクシングのため、Assert.AreSameでこれを予想していましたが、AreEqualではこの問題は発生しません。

どの言語(私はC#を想定しています)を使用し、どのテストフレームワークを追加しますか?

Assert.AreEqual(true、Color.Blue == fred);はどうなるのでしょうか。


0


あるいは、これも機能し、私はそれがより直感的だと思います

[テスト] public void ColorTransform(){var argbInt = Color.LightCyan.ToArgb();カラー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); }