/ src / common / UnitTests-CommonUtils / ColorUtils.Tests.cpp
ColorUtils.Tests.cpp
  1  #include "pch.h"
  2  #include "TestHelpers.h"
  3  #include <color.h>
  4  
  5  using namespace Microsoft::VisualStudio::CppUnitTestFramework;
  6  
  7  namespace UnitTestsCommonUtils
  8  {
  9      TEST_CLASS(ColorUtilsTests)
 10      {
 11      public:
 12          // checkValidRGB tests
 13          TEST_METHOD(CheckValidRGB_ValidBlack_ReturnsTrue)
 14          {
 15              uint8_t r, g, b;
 16              bool result = checkValidRGB(L"#000000", &r, &g, &b);
 17              Assert::IsTrue(result);
 18              Assert::AreEqual(static_cast<uint8_t>(0), r);
 19              Assert::AreEqual(static_cast<uint8_t>(0), g);
 20              Assert::AreEqual(static_cast<uint8_t>(0), b);
 21          }
 22  
 23          TEST_METHOD(CheckValidRGB_ValidWhite_ReturnsTrue)
 24          {
 25              uint8_t r, g, b;
 26              bool result = checkValidRGB(L"#FFFFFF", &r, &g, &b);
 27              Assert::IsTrue(result);
 28              Assert::AreEqual(static_cast<uint8_t>(255), r);
 29              Assert::AreEqual(static_cast<uint8_t>(255), g);
 30              Assert::AreEqual(static_cast<uint8_t>(255), b);
 31          }
 32  
 33          TEST_METHOD(CheckValidRGB_ValidRed_ReturnsTrue)
 34          {
 35              uint8_t r, g, b;
 36              bool result = checkValidRGB(L"#FF0000", &r, &g, &b);
 37              Assert::IsTrue(result);
 38              Assert::AreEqual(static_cast<uint8_t>(255), r);
 39              Assert::AreEqual(static_cast<uint8_t>(0), g);
 40              Assert::AreEqual(static_cast<uint8_t>(0), b);
 41          }
 42  
 43          TEST_METHOD(CheckValidRGB_ValidGreen_ReturnsTrue)
 44          {
 45              uint8_t r, g, b;
 46              bool result = checkValidRGB(L"#00FF00", &r, &g, &b);
 47              Assert::IsTrue(result);
 48              Assert::AreEqual(static_cast<uint8_t>(0), r);
 49              Assert::AreEqual(static_cast<uint8_t>(255), g);
 50              Assert::AreEqual(static_cast<uint8_t>(0), b);
 51          }
 52  
 53          TEST_METHOD(CheckValidRGB_ValidBlue_ReturnsTrue)
 54          {
 55              uint8_t r, g, b;
 56              bool result = checkValidRGB(L"#0000FF", &r, &g, &b);
 57              Assert::IsTrue(result);
 58              Assert::AreEqual(static_cast<uint8_t>(0), r);
 59              Assert::AreEqual(static_cast<uint8_t>(0), g);
 60              Assert::AreEqual(static_cast<uint8_t>(255), b);
 61          }
 62  
 63          TEST_METHOD(CheckValidRGB_ValidMixed_ReturnsTrue)
 64          {
 65              uint8_t r, g, b;
 66              bool result = checkValidRGB(L"#AB12CD", &r, &g, &b);
 67              Assert::IsTrue(result);
 68              Assert::AreEqual(static_cast<uint8_t>(0xAB), r);
 69              Assert::AreEqual(static_cast<uint8_t>(0x12), g);
 70              Assert::AreEqual(static_cast<uint8_t>(0xCD), b);
 71          }
 72  
 73          TEST_METHOD(CheckValidRGB_MissingHash_ReturnsFalse)
 74          {
 75              uint8_t r, g, b;
 76              bool result = checkValidRGB(L"FFFFFF", &r, &g, &b);
 77              Assert::IsFalse(result);
 78          }
 79  
 80          TEST_METHOD(CheckValidRGB_TooShort_ReturnsFalse)
 81          {
 82              uint8_t r, g, b;
 83              bool result = checkValidRGB(L"#FFF", &r, &g, &b);
 84              Assert::IsFalse(result);
 85          }
 86  
 87          TEST_METHOD(CheckValidRGB_TooLong_ReturnsFalse)
 88          {
 89              uint8_t r, g, b;
 90              bool result = checkValidRGB(L"#FFFFFFFF", &r, &g, &b);
 91              Assert::IsFalse(result);
 92          }
 93  
 94          TEST_METHOD(CheckValidRGB_InvalidChars_ReturnsFalse)
 95          {
 96              uint8_t r, g, b;
 97              bool result = checkValidRGB(L"#GGHHII", &r, &g, &b);
 98              Assert::IsFalse(result);
 99          }
100  
101          TEST_METHOD(CheckValidRGB_LowercaseInvalid_ReturnsFalse)
102          {
103              uint8_t r, g, b;
104              bool result = checkValidRGB(L"#ffffff", &r, &g, &b);
105              Assert::IsFalse(result);
106          }
107  
108          TEST_METHOD(CheckValidRGB_EmptyString_ReturnsFalse)
109          {
110              uint8_t r, g, b;
111              bool result = checkValidRGB(L"", &r, &g, &b);
112              Assert::IsFalse(result);
113          }
114  
115          TEST_METHOD(CheckValidRGB_OnlyHash_ReturnsFalse)
116          {
117              uint8_t r, g, b;
118              bool result = checkValidRGB(L"#", &r, &g, &b);
119              Assert::IsFalse(result);
120          }
121  
122          // checkValidARGB tests
123          TEST_METHOD(CheckValidARGB_ValidBlackOpaque_ReturnsTrue)
124          {
125              uint8_t a, r, g, b;
126              bool result = checkValidARGB(L"#FF000000", &a, &r, &g, &b);
127              Assert::IsTrue(result);
128              Assert::AreEqual(static_cast<uint8_t>(255), a);
129              Assert::AreEqual(static_cast<uint8_t>(0), r);
130              Assert::AreEqual(static_cast<uint8_t>(0), g);
131              Assert::AreEqual(static_cast<uint8_t>(0), b);
132          }
133  
134          TEST_METHOD(CheckValidARGB_ValidWhiteOpaque_ReturnsTrue)
135          {
136              uint8_t a, r, g, b;
137              bool result = checkValidARGB(L"#FFFFFFFF", &a, &r, &g, &b);
138              Assert::IsTrue(result);
139              Assert::AreEqual(static_cast<uint8_t>(255), a);
140              Assert::AreEqual(static_cast<uint8_t>(255), r);
141              Assert::AreEqual(static_cast<uint8_t>(255), g);
142              Assert::AreEqual(static_cast<uint8_t>(255), b);
143          }
144  
145          TEST_METHOD(CheckValidARGB_ValidTransparent_ReturnsTrue)
146          {
147              uint8_t a, r, g, b;
148              bool result = checkValidARGB(L"#00FFFFFF", &a, &r, &g, &b);
149              Assert::IsTrue(result);
150              Assert::AreEqual(static_cast<uint8_t>(0), a);
151              Assert::AreEqual(static_cast<uint8_t>(255), r);
152              Assert::AreEqual(static_cast<uint8_t>(255), g);
153              Assert::AreEqual(static_cast<uint8_t>(255), b);
154          }
155  
156          TEST_METHOD(CheckValidARGB_ValidSemiTransparent_ReturnsTrue)
157          {
158              uint8_t a, r, g, b;
159              bool result = checkValidARGB(L"#80FF0000", &a, &r, &g, &b);
160              Assert::IsTrue(result);
161              Assert::AreEqual(static_cast<uint8_t>(0x80), a);
162              Assert::AreEqual(static_cast<uint8_t>(255), r);
163              Assert::AreEqual(static_cast<uint8_t>(0), g);
164              Assert::AreEqual(static_cast<uint8_t>(0), b);
165          }
166  
167          TEST_METHOD(CheckValidARGB_ValidMixed_ReturnsTrue)
168          {
169              uint8_t a, r, g, b;
170              bool result = checkValidARGB(L"#12345678", &a, &r, &g, &b);
171              Assert::IsTrue(result);
172              Assert::AreEqual(static_cast<uint8_t>(0x12), a);
173              Assert::AreEqual(static_cast<uint8_t>(0x34), r);
174              Assert::AreEqual(static_cast<uint8_t>(0x56), g);
175              Assert::AreEqual(static_cast<uint8_t>(0x78), b);
176          }
177  
178          TEST_METHOD(CheckValidARGB_MissingHash_ReturnsFalse)
179          {
180              uint8_t a, r, g, b;
181              bool result = checkValidARGB(L"FFFFFFFF", &a, &r, &g, &b);
182              Assert::IsFalse(result);
183          }
184  
185          TEST_METHOD(CheckValidARGB_TooShort_ReturnsFalse)
186          {
187              uint8_t a, r, g, b;
188              bool result = checkValidARGB(L"#FFFFFF", &a, &r, &g, &b);
189              Assert::IsFalse(result);
190          }
191  
192          TEST_METHOD(CheckValidARGB_TooLong_ReturnsFalse)
193          {
194              uint8_t a, r, g, b;
195              bool result = checkValidARGB(L"#FFFFFFFFFF", &a, &r, &g, &b);
196              Assert::IsFalse(result);
197          }
198  
199          TEST_METHOD(CheckValidARGB_InvalidChars_ReturnsFalse)
200          {
201              uint8_t a, r, g, b;
202              bool result = checkValidARGB(L"#GGHHIIJJ", &a, &r, &g, &b);
203              Assert::IsFalse(result);
204          }
205  
206          TEST_METHOD(CheckValidARGB_LowercaseInvalid_ReturnsFalse)
207          {
208              uint8_t a, r, g, b;
209              bool result = checkValidARGB(L"#ffffffff", &a, &r, &g, &b);
210              Assert::IsFalse(result);
211          }
212  
213          TEST_METHOD(CheckValidARGB_EmptyString_ReturnsFalse)
214          {
215              uint8_t a, r, g, b;
216              bool result = checkValidARGB(L"", &a, &r, &g, &b);
217              Assert::IsFalse(result);
218          }
219      };
220  }