@@ -3531,6 +3531,61 @@ static void test_MannWhitneyUTestVisitor() {
35313531
35323532// ----------------------------------------------------------------------------
35333533
3534+ static void test_mask () {
3535+
3536+ std::cout << " \n Testing mask( ) ..." << std::endl;
3537+
3538+ StrDataFrame ibm;
3539+
3540+ try {
3541+ ibm.read (" IBM.csv" , io_format::csv2);
3542+ }
3543+ catch (const DataFrameError &ex) {
3544+ std::cout << ex.what () << std::endl;
3545+ ::exit (-1 );
3546+ }
3547+
3548+ ibm.load_column (" close_mask" ,
3549+ ibm.mask <double , char >(" IBM_Close" ,
3550+ [](const double &close) -> char {
3551+ return (close > 180.0 );
3552+ })
3553+ );
3554+ ibm.load_column (" close_diff" ,
3555+ ibm.mask <double , double >(" IBM_Close" ,
3556+ [](const double &close) -> double {
3557+ return (180.0 - close);
3558+ })
3559+ );
3560+
3561+ const auto &close_mask = ibm.get_column <char >(" close_mask" );
3562+ const auto &close_diff = ibm.get_column <double >(" close_diff" );
3563+
3564+ assert (close_mask[0 ] == 0 );
3565+ assert (close_mask[10 ] == 0 );
3566+ assert (close_mask[247 ] == 0 );
3567+ assert (close_mask[1180 ] == 0 );
3568+ assert (close_mask[2761 ] == 1 );
3569+ assert (close_mask[2806 ] == 1 );
3570+ assert (close_mask[3372 ] == 1 );
3571+ assert (close_mask[4106 ] == 1 );
3572+ assert (close_mask[4966 ] == 0 );
3573+ assert (close_mask[5030 ] == 0 );
3574+
3575+ assert ((std::fabs (close_diff[0 ] - 81.4375 ) < 0.0001 ));
3576+ assert ((std::fabs (close_diff[10 ] - 80.625 ) < 0.0001 ));
3577+ assert ((std::fabs (close_diff[247 ] - 71.93 ) < 0.0001 ));
3578+ assert ((std::fabs (close_diff[1180 ] - 98.19 ) < 0.0001 ));
3579+ assert ((std::fabs (close_diff[2761 ] - -0.360001 ) < 0.000001 ));
3580+ assert ((std::fabs (close_diff[2806 ] - -6.17999 ) < 0.0001 ));
3581+ assert ((std::fabs (close_diff[3372 ] - -13.55 ) < 0.0001 ));
3582+ assert ((std::fabs (close_diff[4106 ] - -0.529999 ) < 0.000001 ));
3583+ assert ((std::fabs (close_diff[4966 ] - 57.06 ) < 0.0001 ));
3584+ assert ((std::fabs (close_diff[5030 ] - 68.34 ) < 0.0001 ));
3585+ }
3586+
3587+ // ----------------------------------------------------------------------------
3588+
35343589int main (int , char *[]) {
35353590
35363591 MyDataFrame::set_optimum_thread_level ();
@@ -3592,6 +3647,7 @@ int main(int, char *[]) {
35923647 test_detect_and_change ();
35933648 test_KolmoSmirnovTestVisitor ();
35943649 test_MannWhitneyUTestVisitor ();
3650+ test_mask ();
35953651
35963652 return (0 );
35973653}
0 commit comments