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 }