1+ using RemoteLogViewer . Composition . Utils . Objects ;
2+
3+ using Shouldly ;
4+
5+ namespace RemoteLogViewer . Composition . Tests . Utils . Objects ;
6+
7+ /// <summary>
8+ /// <see cref="ColorModel"/> のテストクラスです。
9+ /// </summary>
10+ public class ColorModelTests {
11+ /// <summary>
12+ /// <see cref="ColorModel.FromArgb(byte, byte, byte, byte)"/> が正しくプロパティを設定することを確認します。
13+ /// </summary>
14+ [ Fact ]
15+ public void FromArgb_ShouldSetPropertiesCorrectly ( ) {
16+ // Arrange
17+ byte a = 255 ;
18+ byte r = 100 ;
19+ byte g = 150 ;
20+ byte b = 200 ;
21+
22+ // Act
23+ var color = ColorModel . FromArgb ( a , r , g , b ) ;
24+
25+ // Assert
26+ color . A . ShouldBe ( a ) ;
27+ color . R . ShouldBe ( r ) ;
28+ color . G . ShouldBe ( g ) ;
29+ color . B . ShouldBe ( b ) ;
30+ }
31+
32+ /// <summary>
33+ /// <see cref="ColorModel.Equals(ColorModel?)"/> が正しく動作することを確認します。
34+ /// </summary>
35+ [ Fact ]
36+ public void Equals_ColorModel_ShouldWorkCorrectly ( ) {
37+ // Arrange
38+ var color1 = ColorModel . FromArgb ( 255 , 100 , 150 , 200 ) ;
39+ var color2 = ColorModel . FromArgb ( 255 , 100 , 150 , 200 ) ;
40+ var color3 = ColorModel . FromArgb ( 255 , 101 , 150 , 200 ) ;
41+
42+ // Assert
43+ color1 . Equals ( null ) . ShouldBeFalse ( ) ;
44+ color1 . Equals ( color1 ) . ShouldBeTrue ( ) ;
45+ color1 . Equals ( color2 ) . ShouldBeTrue ( ) ;
46+ color1 . Equals ( color3 ) . ShouldBeFalse ( ) ;
47+ }
48+
49+ /// <summary>
50+ /// <see cref="ColorModel.Equals(object?)"/> が正しく動作することを確認します。
51+ /// </summary>
52+ [ Fact ]
53+ public void Equals_Object_ShouldWorkCorrectly ( ) {
54+ // Arrange
55+ var color1 = ColorModel . FromArgb ( 255 , 100 , 150 , 200 ) ;
56+ var color2 = ColorModel . FromArgb ( 255 , 100 , 150 , 200 ) ;
57+
58+ // Assert
59+ color1 . Equals ( ( object ? ) null ) . ShouldBeFalse ( ) ;
60+ color1 . Equals ( "not a color" ) . ShouldBeFalse ( ) ;
61+ color1 . Equals ( ( object ) color1 ) . ShouldBeTrue ( ) ;
62+ color1 . Equals ( ( object ) color2 ) . ShouldBeTrue ( ) ;
63+ }
64+
65+ /// <summary>
66+ /// <see cref="ColorModel.GetHashCode"/> が同じ値のオブジェクトに対して同じハッシュコードを返すことを確認します。
67+ /// </summary>
68+ [ Fact ]
69+ public void GetHashCode_ShouldBeConsistent ( ) {
70+ // Arrange
71+ var color1 = ColorModel . FromArgb ( 255 , 100 , 150 , 200 ) ;
72+ var color2 = ColorModel . FromArgb ( 255 , 100 , 150 , 200 ) ;
73+
74+ // Assert
75+ color1 . GetHashCode ( ) . ShouldBe ( color2 . GetHashCode ( ) ) ;
76+ }
77+
78+ /// <summary>
79+ /// 比較演算子が正しく動作することを確認します。
80+ /// </summary>
81+ [ Fact ]
82+ public void Operators_ShouldWorkCorrectly ( ) {
83+ // Arrange
84+ var color1 = ColorModel . FromArgb ( 255 , 100 , 150 , 200 ) ;
85+ var color2 = ColorModel . FromArgb ( 255 , 100 , 150 , 200 ) ;
86+ var color3 = ColorModel . FromArgb ( 255 , 101 , 150 , 200 ) ;
87+ ColorModel ? nullColor = null ;
88+
89+ // Assert
90+ ( color1 == color2 ) . ShouldBeTrue ( ) ;
91+ ( color1 != color2 ) . ShouldBeFalse ( ) ;
92+ ( color1 == color3 ) . ShouldBeFalse ( ) ;
93+ ( color1 != color3 ) . ShouldBeTrue ( ) ;
94+ ( color1 == nullColor ) . ShouldBeFalse ( ) ;
95+ ( nullColor == color1 ) . ShouldBeFalse ( ) ;
96+ ( nullColor == ( ColorModel ? ) null ) . ShouldBeTrue ( ) ;
97+ }
98+
99+ /// <summary>
100+ /// <see cref="ColorModel.ToString"/> が期待される形式の文字列を返すことを確認します。
101+ /// </summary>
102+ [ Fact ]
103+ public void ToString_ShouldReturnExpectedFormat ( ) {
104+ // Arrange
105+ var color = ColorModel . FromArgb ( 0xFF , 0x12 , 0x34 , 0x56 ) ;
106+
107+ // Act
108+ var result = color . ToString ( ) ;
109+
110+ // Assert
111+ result . ShouldBe ( "#FF123456" ) ;
112+ }
113+ }
0 commit comments