155TEST_CASE( 
"Initializing stdSubDir", 
"[libMagAOX::file::stdSubDir]" )
 
  157    SECTION( 
"default construction" )
 
  162        REQUIRE_FALSE( ssd.
valid() );
 
  164        std::string path = ssd.
path();
 
  166        REQUIRE( path == 
"" );
 
  168        errc = mx::error_t::noerror;
 
  169        path = ssd.
path( &errc );
 
  171        REQUIRE( errc == mx::error_t::invalidconfig );
 
  172        REQUIRE( path == 
"" );
 
  174        int year = ssd.
year();
 
  176        REQUIRE( year == std::numeric_limits<int>::max() );
 
  178        errc = mx::error_t::noerror;
 
  179        year = ssd.
year( &errc );
 
  181        REQUIRE( errc == mx::error_t::invalidconfig );
 
  182        REQUIRE( year == std::numeric_limits<int>::max() );
 
  184        unsigned int month = ssd.
month();
 
  186        REQUIRE( month == std::numeric_limits<unsigned int>::max() );
 
  188        errc  = mx::error_t::noerror;
 
  189        month = ssd.
month( &errc );
 
  191        REQUIRE( errc == mx::error_t::invalidconfig );
 
  192        REQUIRE( month == std::numeric_limits<unsigned int>::max() );
 
  194        unsigned int day = ssd.
day();
 
  195        REQUIRE( day == std::numeric_limits<unsigned int>::max() );
 
  197        errc = mx::error_t::noerror;
 
  198        day  = ssd.
day( &errc );
 
  200        REQUIRE( errc == mx::error_t::invalidconfig );
 
  201        REQUIRE( day == std::numeric_limits<unsigned int>::max() );
 
  204    SECTION( 
"default construction, then setting subdir" )
 
  208        REQUIRE_FALSE( ssd.
valid() );
 
  210        ssd.
path( 
"2024_11_21" );
 
  212        REQUIRE( ssd.
valid() );
 
  213        REQUIRE( ssd.
path() == 
"2024_11_21" );
 
  214        REQUIRE( ssd.
year() == 2024 );
 
  215        REQUIRE( ssd.
month() == 11 );
 
  216        REQUIRE( ssd.
day() == 21 );
 
  218        mx::error_t errc = mx::error_t::error;
 
  219        REQUIRE( ssd.
year( &errc ) == 2024 );
 
  220        REQUIRE( errc == mx::error_t::noerror );
 
  222        errc = mx::error_t::error;
 
  223        REQUIRE( ssd.
month( &errc ) == 11 );
 
  224        REQUIRE( errc == mx::error_t::noerror );
 
  226        errc = mx::error_t::error;
 
  227        REQUIRE( ssd.
day( &errc ) == 21 );
 
  228        REQUIRE( errc == mx::error_t::noerror );
 
  231    SECTION( 
"construction by chrono::sys_days" )
 
  233        std::chrono::year_month_day ymd{ std::chrono::year( 2024 ), std::chrono::month( 11 ), std::chrono::day( 21 ) };
 
  235        std::chrono::sys_days sysday = ymd;
 
  239        REQUIRE( ssd.
valid() );
 
  241        REQUIRE( ssd.
path() == 
"2024_11_21" );
 
  242        REQUIRE( ssd.
year() == 2024 );
 
  243        REQUIRE( ssd.
month() == 11 );
 
  244        REQUIRE( ssd.
day() == 21 );
 
  246        mx::error_t errc = mx::error_t::error;
 
  247        REQUIRE( ssd.
year( &errc ) == 2024 );
 
  248        REQUIRE( errc == mx::error_t::noerror );
 
  250        errc = mx::error_t::error;
 
  251        REQUIRE( ssd.
month( &errc ) == 11 );
 
  252        REQUIRE( errc == mx::error_t::noerror );
 
  254        errc = mx::error_t::error;
 
  255        REQUIRE( ssd.
day( &errc ) == 21 );
 
  256        REQUIRE( errc == mx::error_t::noerror );
 
  259    SECTION( 
"construction by YMD" )
 
  263        REQUIRE( ssd.
valid() );
 
  265        REQUIRE( ssd.
path() == 
"2024_11_21" );
 
  266        REQUIRE( ssd.
year() == 2024 );
 
  267        REQUIRE( ssd.
month() == 11 );
 
  268        REQUIRE( ssd.
day() == 21 );
 
  270        mx::error_t errc = mx::error_t::error;
 
  271        REQUIRE( ssd.
year( &errc ) == 2024 );
 
  272        REQUIRE( errc == mx::error_t::noerror );
 
  274        errc = mx::error_t::error;
 
  275        REQUIRE( ssd.
month( &errc ) == 11 );
 
  276        REQUIRE( errc == mx::error_t::noerror );
 
  278        errc = mx::error_t::error;
 
  279        REQUIRE( ssd.
day( &errc ) == 21 );
 
  280        REQUIRE( errc == mx::error_t::noerror );
 
  283    SECTION( 
"construction by path" )
 
  287        REQUIRE( ssd.
valid() );
 
  289        REQUIRE( ssd.
path() == 
"2024_11_21" );
 
  290        REQUIRE( ssd.
year() == 2024 );
 
  291        REQUIRE( ssd.
month() == 11 );
 
  292        REQUIRE( ssd.
day() == 21 );
 
  294        mx::error_t errc = mx::error_t::error;
 
  295        REQUIRE( ssd.
year( &errc ) == 2024 );
 
  296        REQUIRE( errc == mx::error_t::noerror );
 
  298        errc = mx::error_t::error;
 
  299        REQUIRE( ssd.
month( &errc ) == 11 );
 
  300        REQUIRE( errc == mx::error_t::noerror );
 
  302        errc = mx::error_t::error;
 
  303        REQUIRE( ssd.
day( &errc ) == 21 );
 
  304        REQUIRE( errc == mx::error_t::noerror );
 
 
  312TEST_CASE( 
"Construction with errors", 
"[libMagAOX::file::stdSubDir]" )
 
  314    SECTION( 
"Construction from sys_days causes bad_alloc" )
 
  316        std::chrono::year_month_day ymd{ std::chrono::year( 2024 ), std::chrono::month( 11 ), std::chrono::day( 21 ) };
 
  318        std::chrono::sys_days sysday = ymd;
 
  324            MagAOX::file::XWCTEST_STDSUBDIR_CTORSYSDAYS_BAD_ALLOC_ns::stdSubDir<mx::verbose::vv> ssd( sysday );
 
  329            static_cast<void>( e );
 
  333        REQUIRE( caught == 
true );
 
  336    SECTION( 
"Construction from sys_days causes exception" )
 
  338        std::chrono::year_month_day ymd{ std::chrono::year( 2024 ), std::chrono::month( 11 ), std::chrono::day( 21 ) };
 
  340        std::chrono::sys_days sysday = ymd;
 
  342        MagAOX::file::XWCTEST_STDSUBDIR_CTORSYSDAYS_EXCEPTION_ns::stdSubDir<mx::verbose::vv> ssd( sysday );
 
  346        REQUIRE_FALSE( ssd.valid() );
 
  349    SECTION( 
"Construction from ymd causes bad_alloc" )
 
  355            MagAOX::file::XWCTEST_STDSUBDIR_YMD_BAD_ALLOC_ns::stdSubDir<mx::verbose::vv> ssd( 2024, 11, 21 );
 
  360            static_cast<void>( e );
 
  364        REQUIRE( caught == 
true );
 
  367    SECTION( 
"Construction from ymd causes exception" )
 
  369        MagAOX::file::XWCTEST_STDSUBDIR_YMD_EXCEPTION_ns::stdSubDir<mx::verbose::vv> ssd( 2024, 11, 21 );
 
  372        REQUIRE_FALSE( ssd.valid() );
 
  375    SECTION( 
"Construction from path throws bad_alloc in stoT" )
 
  381            MagAOX::file::XWCTEST_STDSUBDIR_SETPATH_BAD_ALLOC_ns::stdSubDir<mx::verbose::vv> ssd( 
"2024_11_20" );
 
  386            static_cast<void>( e );
 
  390        REQUIRE( caught == 
true );
 
  393    SECTION( 
"Constructing from path throws out_of_range in stoT" )
 
  395        MagAOX::file::XWCTEST_STDSUBDIR_SETPATH_OUT_OF_RANGE_ns::stdSubDir<mx::verbose::vv> ssd( 
"2024_11_20" );
 
  398        REQUIRE_FALSE( ssd.valid() );
 
  401    SECTION( 
"Construction from path throws exception in stoT" )
 
  403        MagAOX::file::XWCTEST_STDSUBDIR_SETPATH_EXCEPTION_ns::stdSubDir<mx::verbose::vv> ssd( 
"2024_11_20" );
 
  406        REQUIRE_FALSE( ssd.valid() );
 
  409    SECTION( 
"Construction from path throws bad_alloc setting ymd" )
 
  416            MagAOX::file::XWCTEST_STDSUBDIR_SETPATH_BAD_ALLOC2_ns::stdSubDir<mx::verbose::vv> ssd( 
"2024_11_20" );
 
  421            static_cast<void>( e );
 
  425        REQUIRE( caught == 
true );
 
  428    SECTION( 
"Construction from path throws exception setting ymd" )
 
  430        MagAOX::file::XWCTEST_STDSUBDIR_SETPATH_EXCEPTION2_ns::stdSubDir<mx::verbose::vv> ssd( 
"2024_11_20" );
 
  433        REQUIRE_FALSE( ssd.valid() );
 
 
  441TEST_CASE( 
"Setting path with errors", 
"[libMagAOX::file::stdSubDir]" )
 
  443    SECTION( 
"Setting path from string giving errors" )
 
  447        REQUIRE_FALSE( ssd.
valid() );
 
  450        errc = ssd.
path( 
"2024_11_2" );
 
  451        REQUIRE( errc == mx::error_t::invalidarg );
 
  452        REQUIRE_FALSE( ssd.
valid() );
 
  454        errc = ssd.
path( 
"2024x11_21" );
 
  455        REQUIRE( errc == mx::error_t::invalidarg );
 
  456        REQUIRE_FALSE( ssd.
valid() );
 
  458        errc = ssd.
path( 
"2024_11x21" );
 
  459        REQUIRE( errc == mx::error_t::invalidarg );
 
  460        REQUIRE_FALSE( ssd.
valid() );
 
  462        errc = ssd.
path( 
"Y024_11_24" );
 
  463        REQUIRE( errc == mx::error_t::invalidarg );
 
  464        REQUIRE_FALSE( ssd.
valid() );
 
  466        errc = ssd.
path( 
"2Y24_11_24" );
 
  467        REQUIRE( errc == mx::error_t::invalidarg );
 
  468        REQUIRE_FALSE( ssd.
valid() );
 
  470        errc = ssd.
path( 
"20Y4_11_24" );
 
  471        REQUIRE( errc == mx::error_t::invalidarg );
 
  472        REQUIRE_FALSE( ssd.
valid() );
 
  474        errc = ssd.
path( 
"202Y_11_24" );
 
  475        REQUIRE( errc == mx::error_t::invalidarg );
 
  476        REQUIRE_FALSE( ssd.
valid() );
 
  478        errc = ssd.
path( 
"2024_M1_24" );
 
  479        REQUIRE( errc == mx::error_t::invalidarg );
 
  480        REQUIRE_FALSE( ssd.
valid() );
 
  482        errc = ssd.
path( 
"2024_2M_24" );
 
  483        REQUIRE( errc == mx::error_t::invalidarg );
 
  484        REQUIRE_FALSE( ssd.
valid() );
 
  486        errc = ssd.
path( 
"2024_21_D4" );
 
  487        REQUIRE( errc == mx::error_t::invalidarg );
 
  488        REQUIRE_FALSE( ssd.
valid() );
 
  490        errc = ssd.
path( 
"2024_21_2D" );
 
  491        REQUIRE( errc == mx::error_t::invalidarg );
 
  492        REQUIRE_FALSE( ssd.
valid() );
 
  495    SECTION( 
"Setting path throws bad_alloc in stoT" )
 
  498        MagAOX::file::XWCTEST_STDSUBDIR_SETPATH_BAD_ALLOC_ns::stdSubDir<mx::verbose::vv> ssd;
 
  501        REQUIRE_FALSE( ssd.valid() );
 
  507            ssd.path( 
"2024_11_20" );
 
  511            static_cast<void>( e );
 
  515        REQUIRE( caught == 
true );
 
  516        REQUIRE_FALSE( ssd.valid() );
 
  519    SECTION( 
"Setting path throws out_of_range in stoT" )
 
  521        MagAOX::file::XWCTEST_STDSUBDIR_SETPATH_OUT_OF_RANGE_ns::stdSubDir<mx::verbose::vv> ssd;
 
  524        REQUIRE_FALSE( ssd.valid() );
 
  526        mx::error_t errc = ssd.path( 
"2024_11_20" );
 
  528        REQUIRE( errc == mx::error_t::std_out_of_range );
 
  529        REQUIRE_FALSE( ssd.valid() );
 
  532    SECTION( 
"Setting path throws exception in stoT" )
 
  534        MagAOX::file::XWCTEST_STDSUBDIR_SETPATH_EXCEPTION_ns::stdSubDir<mx::verbose::vv> ssd;
 
  537        REQUIRE_FALSE( ssd.valid() );
 
  539        mx::error_t errc = ssd.path( 
"2024_11_20" );
 
  541        REQUIRE( errc == mx::error_t::std_exception );
 
  542        REQUIRE_FALSE( ssd.valid() );
 
  545    SECTION( 
"Setting path throws bad_alloc setting ymd" )
 
  547        MagAOX::file::XWCTEST_STDSUBDIR_SETPATH_BAD_ALLOC2_ns::stdSubDir<mx::verbose::vv> ssd;
 
  550        REQUIRE_FALSE( ssd.valid() );
 
  556            ssd.path( 
"2024_11_20" );
 
  560            static_cast<void>( e );
 
  564        REQUIRE( caught == 
true );
 
  565        REQUIRE_FALSE( ssd.valid() );
 
  568    SECTION( 
"Setting path throws exception setting ymd" )
 
  570        MagAOX::file::XWCTEST_STDSUBDIR_SETPATH_EXCEPTION2_ns::stdSubDir<mx::verbose::vv> ssd;
 
  573        REQUIRE_FALSE( ssd.valid() );
 
  575        mx::error_t errc = ssd.path( 
"2024_11_20" );
 
  577        REQUIRE( errc == mx::error_t::std_exception );
 
  578        REQUIRE_FALSE( ssd.valid() );
 
 
  586TEST_CASE( 
"Getting path with errors", 
"[libMagAOX::file::stdSubDir]" )
 
  588    SECTION( 
"Getting path throws bad_alloc making path" )
 
  590        MagAOX::file::XWCTEST_STDSUBDIR_MAKEPATH_BAD_ALLOC_ns::stdSubDir<mx::verbose::vv> ssd( 2024, 11, 20 );
 
  593        REQUIRE( ssd.valid() );
 
  603            static_cast<void>( e );
 
  607        REQUIRE( caught == 
true );
 
  610    SECTION( 
"Getting path throws format_error making path" )
 
  612        MagAOX::file::XWCTEST_STDSUBDIR_MAKEPATH_FORMAT_ERROR_ns::stdSubDir<mx::verbose::vv> ssd( 2024, 11, 20 );
 
  615        REQUIRE( ssd.valid() );
 
  618        std::string p = ssd.path( &errc );
 
  620        REQUIRE( errc == mx::error_t::std_format_error );
 
  624    SECTION( 
"Getting path throws exception making path" )
 
  626        MagAOX::file::XWCTEST_STDSUBDIR_MAKEPATH_EXCEPTION_ns::stdSubDir<mx::verbose::vv> ssd( 2024, 11, 20 );
 
  629        REQUIRE( ssd.valid() );
 
  632        std::string p = ssd.path( &errc );
 
  634        REQUIRE( errc == mx::error_t::std_exception );
 
 
  709TEST_CASE( 
"Getting YMD with errors", 
"[libMagAOX::file::stdSubDir]" )
 
  711    SECTION( 
"Getting year while invalid" )
 
  716        int         y = ssd.
year( &errc );
 
  717        REQUIRE( y == std::numeric_limits<int>::max() );
 
  718        REQUIRE( errc == mx::error_t::invalidconfig );
 
  721    SECTION( 
"Getting year causes bad_alloc" )
 
  723        MagAOX::file::XWCTEST_STDSUBDIR_GYMD_BAD_ALLOC_ns::stdSubDir ssd( 2024, 11, 20 );
 
  730            int y = ssd.year( &errc );
 
  731            static_cast<void>( y );
 
  738        REQUIRE( caught == 
true );
 
  739        REQUIRE( errc == mx::error_t::std_bad_alloc );
 
  742    SECTION( 
"Getting year causes exception" )
 
  744        MagAOX::file::XWCTEST_STDSUBDIR_GYMD_EXCEPTION_ns::stdSubDir ssd( 2024, 11, 20 );
 
  748        int         y = ssd.year( &errc );
 
  749        REQUIRE( y == std::numeric_limits<int>::max() );
 
  750        REQUIRE( errc == mx::error_t::std_exception );
 
  753    SECTION( 
"Getting month while invalid" )
 
  758        unsigned int m = ssd.
month( &errc );
 
  759        REQUIRE( m == std::numeric_limits<unsigned int>::max() );
 
  760        REQUIRE( errc == mx::error_t::invalidconfig );
 
  763    SECTION( 
"Getting month causes bad_alloc" )
 
  765        MagAOX::file::XWCTEST_STDSUBDIR_GYMD_BAD_ALLOC_ns::stdSubDir ssd( 2024, 11, 20 );
 
  771            unsigned int m = ssd.month( &errc );
 
  772            static_cast<void>( m );
 
  779        REQUIRE( caught == 
true );
 
  780        REQUIRE( errc == mx::error_t::std_bad_alloc );
 
  783    SECTION( 
"Getting month causes exception" )
 
  785        MagAOX::file::XWCTEST_STDSUBDIR_GYMD_EXCEPTION_ns::stdSubDir ssd( 2024, 11, 20 );
 
  789        unsigned int m = ssd.month( &errc );
 
  790        REQUIRE( m == std::numeric_limits<unsigned int>::max() );
 
  791        REQUIRE( errc == mx::error_t::std_exception );
 
  794    SECTION( 
"Getting day while invalid" )
 
  799        unsigned int d = ssd.
day( &errc );
 
  800        REQUIRE( d == std::numeric_limits<unsigned int>::max() );
 
  801        REQUIRE( errc == mx::error_t::invalidconfig );
 
  804    SECTION( 
"Getting day causes bad_alloc" )
 
  806        MagAOX::file::XWCTEST_STDSUBDIR_GYMD_BAD_ALLOC_ns::stdSubDir ssd( 2024, 11, 20 );
 
  813            unsigned int d = ssd.day( &errc );
 
  814            static_cast<void>( d );
 
  821        REQUIRE( caught == 
true );
 
  822        REQUIRE( errc == mx::error_t::std_bad_alloc );
 
  825    SECTION( 
"Getting day causes exception" )
 
  827        MagAOX::file::XWCTEST_STDSUBDIR_GYMD_EXCEPTION_ns::stdSubDir ssd( 2024, 11, 20 );
 
  831        unsigned int d = ssd.day( &errc );
 
  832        REQUIRE( d == std::numeric_limits<unsigned int>::max() );
 
  833        REQUIRE( errc == mx::error_t::std_exception );
 
 
  915TEST_CASE( 
"Incrementing and decrementing stdSubDirs with errors", 
"[libMagAOX::file::stdSubDir]" )
 
  917    SECTION( 
"decrementing while invalid" )
 
  921        mx::error_t errc = ssd.
subDay();
 
  923        REQUIRE_FALSE( ssd.
valid() );
 
  924        REQUIRE( errc == mx::error_t::invalidconfig );
 
  927    SECTION( 
"decrementing causes bad_alloc" )
 
  933            MagAOX::file::XWCTEST_STDSUBDIR_INC_BAD_ALLOC_ns::stdSubDir ssd( 2024, 11, 20 );
 
  943        REQUIRE( caught == 
true );
 
  946    SECTION( 
"decrementing causes exception" )
 
  948        MagAOX::file::XWCTEST_STDSUBDIR_INC_EXCEPTION_ns::stdSubDir ssd( 2024, 11, 20 );
 
  950        mx::error_t errc = ssd.subDay();
 
  952        REQUIRE_FALSE( ssd.valid() );
 
  953        REQUIRE( errc == mx::error_t::std_exception );
 
  958    SECTION( 
"incrementing while invalid" )
 
  962        mx::error_t errc = ssd.
addDay();
 
  964        REQUIRE_FALSE( ssd.
valid() );
 
  965        REQUIRE( errc == mx::error_t::invalidconfig );
 
  968    SECTION( 
"incrementing causes bad_alloc" )
 
  974            MagAOX::file::XWCTEST_STDSUBDIR_INC_BAD_ALLOC_ns::stdSubDir ssd( 2024, 11, 20 );
 
  982        REQUIRE( caught == 
true );
 
  987    SECTION( 
"incrementing causes exception" )
 
  989        MagAOX::file::XWCTEST_STDSUBDIR_INC_EXCEPTION_ns::stdSubDir ssd( 2024, 11, 20 );
 
  991        mx::error_t errc = ssd.addDay();
 
  993        REQUIRE_FALSE( ssd.valid() );
 
  994        REQUIRE( errc == mx::error_t::std_exception );
 
 
 1146TEST_CASE( 
"Getting previous and following stdSubDirs with errors", 
"[libMagAOX::file::stdSubDir]" )
 
 1151                         static_cast<void>( psd ) );
 
 1153    SECTION( 
"getting previous subdir while invalid" )
 
 1157        REQUIRE_FALSE( ssd.
valid() );
 
 1162        REQUIRE( psd.
valid() == 
false );
 
 1163        REQUIRE( errc == mx::error_t::invalidconfig );
 
 1166    SECTION( 
"getting previous subdir error creating new subdir" )
 
 1168        MagAOX::file::XWCTEST_STDSUBDIR_PREV_INVAL_ns::stdSubDir ssd( 2024, 11, 20 );
 
 1170        REQUIRE( ssd.valid() );
 
 1174        MagAOX::file::XWCTEST_STDSUBDIR_PREV_INVAL_ns::stdSubDir psd = ssd.previousSubdir( &errc );
 
 1176        REQUIRE( psd.valid() == 
false );
 
 1177        REQUIRE( errc == mx::error_t::error );
 
 1181    SECTION( 
"getting previous subdir causes bad_alloc in subDay" )
 
 1183        MagAOX::file::XWCTEST_STDSUBDIR_INC_BAD_ALLOC_ns::stdSubDir ssd( 2024, 11, 20 );
 
 1185        REQUIRE( ssd.valid() );
 
 1187        bool caught = 
false;
 
 1192            ssd.previousSubdir( &errc );
 
 1201        REQUIRE( caught == 
true );
 
 1204    SECTION( 
"getting previous subdir causes bad_alloc" )
 
 1206        MagAOX::file::XWCTEST_STDSUBDIR_PREVFOLL_BAD_ALLOC_ns::stdSubDir ssd( 2024, 11, 20 );
 
 1208        REQUIRE( ssd.valid() );
 
 1210        bool caught = 
false;
 
 1215            ssd.previousSubdir( &errc );
 
 1224        REQUIRE( caught == 
true );
 
 1227    SECTION( 
"getting previous subdir causes exception" )
 
 1229        MagAOX::file::XWCTEST_STDSUBDIR_INC_EXCEPTION_ns::stdSubDir ssd( 2024, 11, 20 );
 
 1231        REQUIRE( ssd.valid() );
 
 1235        MagAOX::file::XWCTEST_STDSUBDIR_INC_EXCEPTION_ns::stdSubDir pssd = ssd.previousSubdir( &errc );
 
 1237        REQUIRE_FALSE( pssd.valid() );
 
 1238        REQUIRE( errc == mx::error_t::std_exception );
 
 1241    SECTION( 
"getting following subdir while invalid" )
 
 1245        REQUIRE_FALSE( ssd.
valid() );
 
 1250        REQUIRE( psd.
valid() == 
false );
 
 1251        REQUIRE( errc == mx::error_t::invalidconfig );
 
 1254    SECTION( 
"getting following subdir error creating new subdir" )
 
 1256        MagAOX::file::XWCTEST_STDSUBDIR_PREV_INVAL_ns::stdSubDir ssd( 2024, 11, 20 );
 
 1258        REQUIRE( ssd.valid() );
 
 1262        MagAOX::file::XWCTEST_STDSUBDIR_PREV_INVAL_ns::stdSubDir psd = ssd.followingSubdir( &errc );
 
 1264        REQUIRE( psd.valid() == 
false );
 
 1265        REQUIRE( errc == mx::error_t::error );
 
 1269    SECTION( 
"getting following subdir causes bad_alloc in add day" )
 
 1271        MagAOX::file::XWCTEST_STDSUBDIR_INC_BAD_ALLOC_ns::stdSubDir ssd( 2024, 11, 20 );
 
 1273        REQUIRE( ssd.valid() );
 
 1275        bool caught = 
false;
 
 1280            ssd.followingSubdir( &errc );
 
 1287        REQUIRE( caught == 
true );
 
 1291    SECTION( 
"getting following subdir causes bad_alloc" )
 
 1293        MagAOX::file::XWCTEST_STDSUBDIR_PREVFOLL_BAD_ALLOC_ns::stdSubDir ssd( 2024, 11, 20 );
 
 1295        REQUIRE( ssd.valid() );
 
 1297        bool caught = 
false;
 
 1302            ssd.followingSubdir( &errc );
 
 1311        REQUIRE( caught == 
true );
 
 1314    SECTION( 
"getting following subdir causes exception" )
 
 1316        MagAOX::file::XWCTEST_STDSUBDIR_INC_EXCEPTION_ns::stdSubDir ssd( 2024, 11, 20 );
 
 1318        REQUIRE( ssd.valid() );
 
 1322        MagAOX::file::XWCTEST_STDSUBDIR_INC_EXCEPTION_ns::stdSubDir pssd = ssd.followingSubdir( &errc );
 
 1324        REQUIRE_FALSE( pssd.valid() );
 
 1325        REQUIRE( errc == mx::error_t::std_exception );
 
 
 1334TEST_CASE( 
"Using comparison operators", 
"[libMagAOX::file::stdSubDir]" )
 
 1336    SECTION( 
"testing equality while equal" )
 
 1341        REQUIRE( ssd1 == ssd2 );
 
 1344    SECTION( 
"testing equality while not equal" )
 
 1349        REQUIRE_FALSE( ( ssd1 == ssd2 ) );
 
 1352    SECTION( 
"testing inequality while equal" )
 
 1357        REQUIRE_FALSE( ( ssd1 != ssd2 ) );
 
 1360    SECTION( 
"testing inequality while not equal" )
 
 1365        REQUIRE( ssd1 != ssd2 );
 
 1368    SECTION( 
"testing less-than while equal" )
 
 1373        REQUIRE_FALSE( ( ssd1 < ssd2 ) );
 
 1376    SECTION( 
"testing less-than while less-than" )
 
 1381        REQUIRE( ssd1 < ssd2 );
 
 1384    SECTION( 
"testing less-than while greater-than" )
 
 1389        REQUIRE_FALSE( ( ssd2 < ssd2 ) );
 
 1392    SECTION( 
"testing less-than-or-equal while equal" )
 
 1397        REQUIRE( ( ssd1 <= ssd2 ) );
 
 1400    SECTION( 
"testing less-than-or-equal while less-than" )
 
 1405        REQUIRE( ssd1 <= ssd2 );
 
 1408    SECTION( 
"testing less-than-or-equal while greater-than" )
 
 1413        REQUIRE_FALSE( ( ssd2 <= ssd1 ) );
 
 1416    SECTION( 
"testing greater-than while equal" )
 
 1421        REQUIRE_FALSE( ( ssd1 > ssd2 ) );
 
 1424    SECTION( 
"testing greater-than while greater-than" )
 
 1429        REQUIRE( ssd2 > ssd1 );
 
 1432    SECTION( 
"testing greater-than while less-than" )
 
 1437        REQUIRE_FALSE( ( ssd1 > ssd2 ) );
 
 1440    SECTION( 
"testing greater-than-or-equal while equal" )
 
 1445        REQUIRE( ssd1 >= ssd2 );
 
 1448    SECTION( 
"testing greater-than-or-equal while greater-than" )
 
 1453        REQUIRE( ssd2 >= ssd1 );
 
 1456    SECTION( 
"testing greater-than-or-equal while less-than" )
 
 1461        REQUIRE_FALSE( ( ssd1 >= ssd2 ) );