File indexing completed on 2025-02-23 05:14:54
0001 // bjgc_playertable.t.cpp -*-C++-*- 0002 #include <bjgc_playertable.h> 0003 0004 #include <cstdlib> 0005 #include <iostream> 0006 #include <sstream> 0007 0008 // ============================================================================ 0009 // STANDARD ASSERT TEST FUNCTION 0010 // ---------------------------------------------------------------------------- 0011 0012 namespace { 0013 0014 int testStatus = 0; 0015 0016 void aSsErT(bool condition, const char *message, int line) 0017 { 0018 if (condition) { 0019 std::cout << "Error " __FILE__ "(" << line << "): " << message << " (failed)" << std::endl; 0020 0021 if (0 <= testStatus && testStatus <= 100) { 0022 ++testStatus; 0023 } 0024 } 0025 } 0026 0027 } // namespace 0028 0029 // ============================================================================ 0030 // STANDARD TEST DRIVER MACROS 0031 // ---------------------------------------------------------------------------- 0032 0033 #define ASSERT(X) aSsErT(!(X), #X, __LINE__); 0034 0035 // ============================================================================ 0036 // MAIN PROGRAM 0037 // ---------------------------------------------------------------------------- 0038 0039 int main(int argc, char *argv[]) 0040 { 0041 const int test = argc > 1 ? std::atoi(argv[1]) : 0; 0042 const bool verbose = argc > 2; 0043 const bool veryVerbose = argc > 3; 0044 const bool veryVeryVerbose = argc > 4; 0045 const bool veryVeryVeryVerbose = argc > 5; 0046 0047 std::cout << "TEST " << __FILE__ << " CASE " << test << std::endl; 0048 0049 switch (test) { 0050 case 0: 0051 case 1: { 0052 // -------------------------------------------------------------------- 0053 // BREATHING TEST 0054 // 0055 // Concerns: 0056 //: 1 TBD 0057 // 0058 // Plan: 0059 //: 1 TBD 0060 // 0061 // Testing: 0062 // BREATHING TEST 0063 // -------------------------------------------------------------------- 0064 0065 if (verbose) 0066 std::cout << std::endl << "BREATHING TEST" << std::endl << "==============" << std::endl; 0067 0068 // default constructor 0069 { 0070 const bjgc::PlayerTable X; 0071 0072 for (int j = 0; j < bjgb::State::k_NUM_STATES; ++j) { 0073 for (int i = 1; i <= bjgc::PlayerTable::k_NUM_CARD_VALUES; ++i) { 0074 ASSERT(X.exp(j, i) == -9e97); 0075 } 0076 } 0077 } 0078 0079 // 'clearRow', 'reset' 0080 { 0081 bjgc::PlayerTable mX; 0082 const bjgc::PlayerTable& X = mX; 0083 0084 for (int k = 0; k < bjgb::State::k_NUM_STATES; ++k) { 0085 mX.clearRow(k); 0086 0087 for (int j = 0; j < bjgb::State::k_NUM_STATES; ++j) { 0088 for (int i = 1; i <= bjgc::PlayerTable::k_NUM_CARD_VALUES; ++i) { 0089 ASSERT(X.exp(j, i) == (j <= k ? 0.0 : -9e97)); 0090 } 0091 } 0092 } 0093 0094 mX.reset(); 0095 0096 for (int j = 0; j < bjgb::State::k_NUM_STATES; ++j) { 0097 for (int i = 1; i <= bjgc::PlayerTable::k_NUM_CARD_VALUES; ++i) { 0098 ASSERT(X.exp(j, i) == -9e97); 0099 } 0100 } 0101 } 0102 0103 // 'exp' manipulator and accessor 0104 { 0105 bjgc::PlayerTable mX; 0106 const bjgc::PlayerTable& X = mX; 0107 0108 for (int j = 0; j < bjgb::State::k_NUM_STATES; ++j) { 0109 for (int i = 1; i <= bjgc::PlayerTable::k_NUM_CARD_VALUES; ++i) { 0110 mX.exp(j, i) = j * 2 + i * 3; 0111 } 0112 } 0113 0114 for (int j = 0; j < bjgb::State::k_NUM_STATES; ++j) { 0115 for (int i = 1; i <= bjgc::PlayerTable::k_NUM_CARD_VALUES; ++i) { 0116 ASSERT(X.exp(j, i) == j * 2 + i * 3); 0117 } 0118 } 0119 } 0120 0121 } break; 0122 default: { 0123 std::cerr << "WARNING: CASE `" << test << "' NOT FOUND." << std::endl; 0124 testStatus = -1; 0125 } 0126 } 0127 0128 if (testStatus > 0) { 0129 std::cerr << "Error, non-zero test status = " << testStatus << "." << std::endl; 0130 } 0131 0132 return testStatus; 0133 }