#include #include #include "ColorT.h" #include #include #include #include using namespace std; const int TRIALS = 100'000; void RandomTest(); void NameTest(); int main() { RandomTest(); NameTest(); return 0; } void TestPermutations(ColorT color) { string name{ColorTToString(color)}; int i; size_t j; for( i = 0; i < pow(2,static_cast(name.size())) ; ++i) { bitset<10> state{static_cast(i)}; for (j =0; j < name.size(); ++j) { if (state[j] == 0) { name[j] = static_cast(tolower(name[j])); } else { name[j] = static_cast(toupper(name[j])); } } if (color != StringToColorT(name)) { cout << "Name conversion of " << ColorTToString(color) << " failed for " << name << endl; } } } void NameTest() { ColorT color; cout << "Performing Color Name Test " << endl; for(color = FIRST_COLOR; color != ColorT::NONE; color = NextColor(color)) { cout << "Testing " << ColorTToString(color) << endl; TestPermutations(color); } cout << "Color Name Test Complete" << endl; cout << endl; } void RandomTest() { map count; int trial; ColorT color; double percent; cout << "Performing Random Color Test " << endl; srand (static_cast(time(nullptr))); for( trial = 1; trial <= TRIALS; trial++) { color = RandomColor(); ++(count[color]); } cout << "Frequency Analysis " << endl; cout << fixed << setprecision(2); for(color = FIRST_COLOR; color != ColorT::NONE; color = NextColor(color)) { percent = static_cast(count[color])/ TRIALS * 100.0 ; cout <