@@ -126,6 +126,28 @@ TEST_F(color_test, to_bgr_conversion)
126126 EXPECT_EQ (bgr_array[2 ], 100 ); // r
127127}
128128
129+ TEST_F (color_test, to_rgba_conversion)
130+ {
131+ tc::img::color c (100 , 150 , 200 , 128 );
132+ auto rgba_array = c.to_rgba ();
133+ EXPECT_EQ (rgba_array.size (), 4 );
134+ EXPECT_EQ (rgba_array[0 ], 100 ); // r
135+ EXPECT_EQ (rgba_array[1 ], 150 ); // g
136+ EXPECT_EQ (rgba_array[2 ], 200 ); // b
137+ EXPECT_EQ (rgba_array[3 ], 128 ); // a
138+ }
139+
140+ TEST_F (color_test, to_bgra_conversion)
141+ {
142+ tc::img::color c (100 , 150 , 200 , 128 );
143+ auto bgra_array = c.to_bgra ();
144+ EXPECT_EQ (bgra_array.size (), 4 );
145+ EXPECT_EQ (bgra_array[0 ], 200 ); // b
146+ EXPECT_EQ (bgra_array[1 ], 150 ); // g
147+ EXPECT_EQ (bgra_array[2 ], 100 ); // r
148+ EXPECT_EQ (bgra_array[3 ], 128 ); // a
149+ }
150+
129151// Test equality operators
130152TEST_F (color_test, equality_operator)
131153{
@@ -163,4 +185,87 @@ TEST_F(color_test, boundary_values)
163185 EXPECT_EQ (c_max.a , 255 );
164186}
165187
188+ // Test rgba/bgra conversions with boundary values
189+ TEST_F (color_test, rgba_bgra_conversion_boundary_values)
190+ {
191+ // Test minimum values
192+ tc::img::color c_min (0 , 0 , 0 , 0 );
193+ auto rgba_min = c_min.to_rgba ();
194+ auto bgra_min = c_min.to_bgra ();
195+
196+ EXPECT_EQ (rgba_min[0 ], 0 ); // r
197+ EXPECT_EQ (rgba_min[1 ], 0 ); // g
198+ EXPECT_EQ (rgba_min[2 ], 0 ); // b
199+ EXPECT_EQ (rgba_min[3 ], 0 ); // a
200+
201+ EXPECT_EQ (bgra_min[0 ], 0 ); // b
202+ EXPECT_EQ (bgra_min[1 ], 0 ); // g
203+ EXPECT_EQ (bgra_min[2 ], 0 ); // r
204+ EXPECT_EQ (bgra_min[3 ], 0 ); // a
205+
206+ // Test maximum values
207+ tc::img::color c_max (255 , 255 , 255 , 255 );
208+ auto rgba_max = c_max.to_rgba ();
209+ auto bgra_max = c_max.to_bgra ();
210+
211+ EXPECT_EQ (rgba_max[0 ], 255 ); // r
212+ EXPECT_EQ (rgba_max[1 ], 255 ); // g
213+ EXPECT_EQ (rgba_max[2 ], 255 ); // b
214+ EXPECT_EQ (rgba_max[3 ], 255 ); // a
215+
216+ EXPECT_EQ (bgra_max[0 ], 255 ); // b
217+ EXPECT_EQ (bgra_max[1 ], 255 ); // g
218+ EXPECT_EQ (bgra_max[2 ], 255 ); // r
219+ EXPECT_EQ (bgra_max[3 ], 255 ); // a
220+ }
221+
222+ // Test rgba/bgra conversions with static colors
223+ TEST_F (color_test, rgba_bgra_conversion_static_colors)
224+ {
225+ // Test red color
226+ auto red_color = tc::img::color::red ();
227+ auto red_rgba = red_color.to_rgba ();
228+ auto red_bgra = red_color.to_bgra ();
229+
230+ EXPECT_EQ (red_rgba[0 ], 255 ); // r
231+ EXPECT_EQ (red_rgba[1 ], 0 ); // g
232+ EXPECT_EQ (red_rgba[2 ], 0 ); // b
233+ EXPECT_EQ (red_rgba[3 ], 255 ); // a
234+
235+ EXPECT_EQ (red_bgra[0 ], 0 ); // b
236+ EXPECT_EQ (red_bgra[1 ], 0 ); // g
237+ EXPECT_EQ (red_bgra[2 ], 255 ); // r
238+ EXPECT_EQ (red_bgra[3 ], 255 ); // a
239+
240+ // Test green color
241+ auto green_color = tc::img::color::green ();
242+ auto green_rgba = green_color.to_rgba ();
243+ auto green_bgra = green_color.to_bgra ();
244+
245+ EXPECT_EQ (green_rgba[0 ], 0 ); // r
246+ EXPECT_EQ (green_rgba[1 ], 255 ); // g
247+ EXPECT_EQ (green_rgba[2 ], 0 ); // b
248+ EXPECT_EQ (green_rgba[3 ], 255 ); // a
249+
250+ EXPECT_EQ (green_bgra[0 ], 0 ); // b
251+ EXPECT_EQ (green_bgra[1 ], 255 ); // g
252+ EXPECT_EQ (green_bgra[2 ], 0 ); // r
253+ EXPECT_EQ (green_bgra[3 ], 255 ); // a
254+
255+ // Test blue color
256+ auto blue_color = tc::img::color::blue ();
257+ auto blue_rgba = blue_color.to_rgba ();
258+ auto blue_bgra = blue_color.to_bgra ();
259+
260+ EXPECT_EQ (blue_rgba[0 ], 0 ); // r
261+ EXPECT_EQ (blue_rgba[1 ], 0 ); // g
262+ EXPECT_EQ (blue_rgba[2 ], 255 ); // b
263+ EXPECT_EQ (blue_rgba[3 ], 255 ); // a
264+
265+ EXPECT_EQ (blue_bgra[0 ], 255 ); // b
266+ EXPECT_EQ (blue_bgra[1 ], 0 ); // g
267+ EXPECT_EQ (blue_bgra[2 ], 0 ); // r
268+ EXPECT_EQ (blue_bgra[3 ], 255 ); // a
269+ }
270+
166271}
0 commit comments