00001
00105 #define DEBUG
00106
00107
00108 #include <cppad/cppad.hpp>
00109
00110 #include "OSCoinSolver.h"
00111 #include "OSConfig.h"
00112 #include "OSmps2osil.h"
00113 #include "OSResult.h"
00114 #include "OSOption.h"
00115 #include "OSiLReader.h"
00116 #include "OSiLWriter.h"
00117 #include "OSoLReader.h"
00118 #include "OSoLWriter.h"
00119 #include "OSrLReader.h"
00120 #include "OSrLWriter.h"
00121 #include "OSInstance.h"
00122 #include "OSFileUtil.h"
00123 #include "CoinError.hpp"
00124
00125 #include "OSDefaultSolver.h"
00126 #include "OSWSUtil.h"
00127 #include "OSSolverAgent.h"
00128 #include "OShL.h"
00129 #include "OSErrorClass.h"
00130 #include "OSBase64.h"
00131 #include "OSMathUtil.h"
00132
00133
00134 #include <CoinMpsIO.hpp>
00135 #include <CoinPackedMatrix.hpp>
00136
00137
00138 #include "CoinError.hpp"
00139 #include "CoinHelperFunctions.hpp"
00140
00141
00142
00143 #ifdef COIN_HAS_GLPK
00144 #include <OsiGlpkSolverInterface.hpp>
00145 #endif
00146
00147 #ifdef COIN_HAS_COUENNE
00148 #include "OSCouenneSolver.h"
00149 #endif
00150
00151 #ifdef COIN_HAS_ASL
00152 #include "OSnl2osil.h"
00153 #endif
00154
00155 #ifdef COIN_HAS_LINDO
00156 #include "OSLindoSolver.h"
00157 #endif
00158
00159 #ifdef COIN_HAS_IPOPT
00160 #include "OSIpoptSolver.h"
00161 #endif
00162
00163 #ifdef COIN_HAS_BONMIN
00164 #include "OSBonminSolver.h"
00165 #endif
00166
00167 #ifdef COIN_HAS_GAMSUTILS
00168 #include "OSgams2osil.hpp"
00169 #endif
00170
00171 #ifdef HAVE_CTIME
00172 # include <ctime>
00173 #else
00174 # ifdef HAVE_TIME_H
00175 # include <time.h>
00176 # else
00177 # error "don't have header file for time"
00178 # endif
00179 #endif
00180
00181
00182 #ifdef HAVE_CMATH
00183 # include <cmath>
00184 #else
00185 # ifdef HAVE_CMATH_H
00186 # include <cmath.h>
00187 # endif
00188 #endif
00189
00190
00191
00192 #ifdef HAVE_CSTDIO
00193 # include <cstdio>
00194 #else
00195 # ifdef HAVE_STDIO_H
00196 # include <stdio.h>
00197 # else
00198 # error "don't have header file for stdio"
00199 # endif
00200 #endif
00201
00202
00203
00204
00205
00206 using std::cout;
00207 using std::endl;
00208 using std::ostringstream;
00209
00210
00211
00212
00213 int main(int argC, char* argV[])
00214 {
00215
00216
00217
00218 WindowsErrorPopupBlocker();
00219 double getObjVal(std::string osrl);
00220
00221 bool ok;
00222 double check;
00223
00224
00225 bool BASIC_TESTS;
00226 bool SOLVER_TESTS;
00227 bool THOROUGH;
00228 bool PARSER_TESTS;
00229 bool OTHER_TESTS;
00230
00231
00232
00233 std::string testConfig = "install";
00234 int testLevel = 1;
00235 if( argC > 2){
00236 std::cout << "Too Many Input Parameters" << std::endl;
00237 return 1;
00238 }
00239 if(argC == 2){
00240 testConfig = argV[ 1];
00241 std::cout << "test configuration = \'" << testConfig << "\'"<< std::endl;
00242 }
00243
00244 #ifdef GUS_DEBUG
00245 testConfig = "parser";
00246 #endif
00247
00248 if (testConfig == "install") testLevel = 1;
00249 if (testConfig == "parser" ) testLevel = 2;
00250 if (testConfig == "parsers") testLevel = 2;
00251 if (testConfig == "solver" ) testLevel = 3;
00252 if (testConfig == "solvers") testLevel = 3;
00253 if (testConfig == "release") testLevel = 4;
00254 if (testConfig == "nightlyBuild") testLevel = 4;
00255 if (testConfig == "all") testLevel = 4;
00256 if (testConfig == "NB") testLevel = 4;
00257 if (testConfig == "nb") testLevel = 4;
00258
00259 switch (testLevel){
00260 case 1:
00261 BASIC_TESTS = true;
00262 SOLVER_TESTS = true;
00263 THOROUGH = false;
00264 PARSER_TESTS = false;
00265 OTHER_TESTS = false;
00266 break;
00267 case 2:
00268 BASIC_TESTS = false;
00269 SOLVER_TESTS = false;
00270 THOROUGH = false;
00271 PARSER_TESTS = true;
00272 OTHER_TESTS = false;
00273 break;
00274 case 3:
00275 BASIC_TESTS = false;
00276 SOLVER_TESTS = true;
00277 THOROUGH = true;
00278 PARSER_TESTS = false;
00279 OTHER_TESTS = false;
00280 break;
00281 case 4:
00282 default:
00283 BASIC_TESTS = true;
00284 SOLVER_TESTS = true;
00285 THOROUGH = true;
00286 PARSER_TESTS = true;
00287 OTHER_TESTS = true;
00288 break;
00289 }
00290
00291 if (BASIC_TESTS) std::cout << "Perform basic tests" << std::endl;
00292 if (SOLVER_TESTS) {
00293 if (THOROUGH)
00294 std::cout << "Perform thorough solver tests" << std::endl;
00295 else
00296 std::cout << "Perform simple solver tests" << std::endl;
00297 }
00298 if (PARSER_TESTS) std::cout << "Perform parser tests" << std::endl;
00299 if (OTHER_TESTS) std::cout << "Perform other tests" << std::endl;
00300 std::cout << std::endl << std::endl;
00301
00302
00303
00304
00305 cout << "START UNIT TEST" << endl;
00306 int nOfTest = 0;
00307
00308 FileUtil *fileUtil = NULL;
00309 #ifdef COIN_HAS_ASL
00310 OSnl2osil *nl2osil = NULL;
00311 #endif
00312 OSmps2osil *mps2osil = NULL;
00313 DefaultSolver *solver = NULL;
00314 OSiLReader *osilreader = NULL;
00315 OSoLReader *osolreader = NULL;
00316 OSrLReader *osrlreader = NULL;
00317 OSrLWriter *osrlwriter = NULL;
00318 OSrLWriter *tmp_writer = NULL;
00319
00320 std::string osilFileName;
00321 std::string osolFileName;
00322 std::string osrlFileName;
00323 std::string nlFileName;
00324 std::string mpsFileName;
00325 std::string osil;
00326 std::string osol;
00327 ostringstream unitTestResult;
00328 ostringstream unitTestResultFailure;
00329
00330 const char dirsep = CoinFindDirSeparator();
00331
00332 std::string dataDir;
00333 dataDir = dirsep == '/' ? "../data/" : "..\\data\\";
00334 #ifdef GUS_DEBUG
00335 dataDir = "C:\\datafiles\\research\\OS\\OS-trunk-work\\OS\\data\\";
00336 #endif
00337 nlFileName = dataDir + "amplFiles" + dirsep + "parinc.nl";
00338 mpsFileName = dataDir + "mpsFiles" + dirsep + "parinc.mps";
00339 fileUtil = new FileUtil();
00340
00341
00342 if(BASIC_TESTS == true){
00343
00344
00345 try{
00346 std::cout << endl << "TEST " << ++nOfTest << ": Try to read a sample file" << endl << endl;
00347 osilFileName = dataDir + "osilFiles" + dirsep + "parincLinearByRow.osil";
00348
00349 std::cout << "The file is: " ;
00350 std::cout << osilFileName << std::endl;
00351 osil = fileUtil->getFileAsString( osilFileName.c_str() );
00352 std::cout << "Done reading the test file" << std::endl;
00353 osilreader = new OSiLReader();
00354
00355
00356 unitTestResult << "TEST " << nOfTest << ": Reading files successfully" << std::endl;
00357 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
00358 OSiLWriter osilwriter;
00359 osilwriter.m_bWhiteSpace = true;
00360
00361 delete osilreader;
00362 osilreader = NULL;
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372
00373
00374
00375
00376
00377
00378
00379
00380
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390
00391
00392
00393
00394
00395
00396
00397 cout << endl << "TEST " << ++nOfTest << ": Lossless I/O" << endl << endl;
00398
00399 mpsFileName = dataDir + "mpsFiles" + dirsep + "parinc.mps";
00400 mps2osil = new OSmps2osil( mpsFileName);
00401
00402 mps2osil->createOSInstance() ;
00403
00404 OSInstance *osinstance1 = mps2osil->osinstance;
00405 std::string sOSiL = osilwriter.writeOSiL( osinstance1 );
00406 #ifdef DEBUG
00407 cout << sOSiL << endl;
00408 #endif
00410 // now create a second object
00411 osilreader = new OSiLReader();
00412 OSInstance *osinstance2 = osilreader->readOSiL( sOSiL);
00413
00414 int nvals = osinstance1->instanceData->linearConstraintCoefficients->numberOfValues;
00415 double theDiff, theMax;
00416 int theIndex = -1;
00417 theMax = 0;
00418 for(int i = 0; i < nvals; i++){
00419 theDiff = fabs(osinstance1->instanceData->linearConstraintCoefficients->value->el[ i] -
00420 osinstance2->instanceData->linearConstraintCoefficients->value->el[ i])/ fabs(osinstance1->instanceData->linearConstraintCoefficients->value->el[ i]);
00421 if(theDiff > theMax){
00422 theMax = theDiff;
00423 theIndex = i;
00424 }
00425
00426 }
00427 std::cout << "MAXIMUM DIFF = " << theMax << std::endl;
00428 if(theMax > 0)
00429 { std::cout << "MAXIMUM DIFF INDEX = " << theIndex << std::endl;
00430 unitTestResult << "WARNING: you do not have lossless IO" << std::endl;
00431 }
00432 else
00433 { unitTestResult << "TEST " << nOfTest << ": Passed lossless IO test" << std::endl;
00434 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
00435 }
00436 delete mps2osil;
00437 delete osilreader;
00438 osilreader = NULL;
00439
00440
00441
00442
00443
00444
00445
00446
00447
00448
00449
00450
00451
00452
00453
00454
00455
00456
00457
00458
00459
00460
00461
00462
00463
00464
00465
00466
00467
00468
00469
00470
00471
00472
00473
00474
00475
00476
00477
00478
00479
00480
00481
00482
00483
00484
00485
00486
00487
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497 }
00498 catch(const ErrorClass& eclass){
00499 unitTestResultFailure << "Sorry Unit Test Failed Reading a file: " + eclass.errormsg<< endl;
00500
00501 unitTestResultFailure << "Since we can't read files we are terminating" << endl;
00502 cout << unitTestResultFailure.str() << endl << endl;
00503 cout << "Conclusion: FAILURE" << endl;
00504 return 1;
00505 }
00506 }
00507
00508 if (SOLVER_TESTS){
00509 try{
00510 cout << endl << "TEST " << ++nOfTest << ": Clp solver on parincLinearByRow.osil" << endl << endl;
00511 ok = true;
00512 std::cout << "create a new COIN Clp for OSiL string solution" << std::endl;
00513 osilFileName = dataDir + "osilFiles" + dirsep + "parincLinearByRow.osil";
00514 osolFileName = dataDir + "osolFiles" + dirsep + "parincLinearByRow_clp.osol";
00515 osil = fileUtil->getFileAsString( osilFileName.c_str());
00516 osol = fileUtil->getFileAsString( osolFileName.c_str());
00517
00518 std::cout << "create a new Solver object" << std::endl;
00519 osilreader = new OSiLReader();
00520 osolreader = new OSoLReader();
00521 solver = new CoinSolver();
00522 solver->sSolverName = "clp";
00523 solver->osinstance = osilreader->readOSiL( osil);
00524 std::cout << " Done reading the OSiL" << std::endl;
00525
00526 OSiLWriter *osilwriter;
00527 osilwriter = new OSiLWriter();
00528 osilwriter->m_bWhiteSpace = true;
00529 std::cout << " Write the OSiL" << std::endl;
00530 osil = osilwriter->writeOSiL( solver->osinstance) ;
00531
00532 std::cout << " Done writing the OSiL" << std::endl;
00533 solver->osoption = osolreader->readOSoL( osol);
00534 cout << "call the COIN - clp Solver for parincLinearbyRow" << endl;
00535
00536 std::cout << "call solver" << std::endl;
00537 solver->solve();
00538 std::cout << "returned from solver" << std::endl;
00539 check = 7668;
00540 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
00541 if (ok)
00542 {
00543 #ifdef DEBUG
00544 cout << solver->osrl << endl;
00545 #endif
00546 cout << "COIN clp solver solution for parincLinearByRow checks." << endl;
00547 }
00548 else
00549 { cout << "COIN clp solver solution for parincLinearByRow in error:" << endl;
00550 cout << solver->osrl << endl;
00551 }
00552 if(ok == false) throw ErrorClass(" Fail unit test with clp on parincLinearByRow.osil");
00553
00554 osrlreader = new OSrLReader();
00555 #ifdef DEBUG
00556 cout << "\nThe osrl file:\n" << solver->osrl << endl;
00557 cout << "Start parsing the file" << endl;
00558 #endif
00559 osrlreader->readOSrL( solver->osrl);
00560 #ifdef DEBUG
00561 cout << "read successfully" << endl;
00562 #endif
00563 delete osilreader;
00564 #ifdef DEBUG
00565 cout << "osilreader successfully deleted" << endl;
00566 #endif
00567 osilreader = NULL;
00568 delete osolreader;
00569 #ifdef DEBUG
00570 cout << "osolreader successfully deleted" << endl;
00571 #endif
00572 osolreader = NULL;
00573 delete solver;
00574 #ifdef DEBUG
00575 cout << "solver successfully deleted" << endl;
00576 #endif
00577 solver = NULL;
00578 delete osilwriter;
00579 #ifdef DEBUG
00580 cout << "osilwriter successfully deleted" << endl;
00581 #endif
00582 osilwriter = NULL;
00583 delete osrlreader;
00584 #ifdef DEBUG
00585 cout << "osrlreader successfully deleted" << endl;
00586 #endif
00587 osrlreader = NULL;
00588 unitTestResult << "TEST " << nOfTest << ": Solved problem parincLinearByRow.osil with Clp" << std::endl;
00589 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
00590 }
00591 catch(const ErrorClass& eclass){
00592 unitTestResultFailure << "Sorry Unit Test Failed Testing Clp Solver:" + eclass.errormsg<< endl;
00593 }
00594
00595
00596 try{
00597 cout << endl << "TEST " << ++nOfTest << ": Cbc solver on p0033.osil" << endl << endl;
00598 std::cout << "create a new COIN Cbc for OSiL string solution" << std::endl;
00599 ok = true;
00600 osilFileName = dataDir + "osilFiles" + dirsep + "p0033.osil";
00601
00602 osil = fileUtil->getFileAsString( osilFileName.c_str());
00603
00604 osol = "";
00605 osilreader = new OSiLReader();
00606 osolreader = new OSoLReader();
00607 solver = new CoinSolver();
00608 solver->sSolverName ="cbc";
00609 solver->osil = osil;
00610 solver->osol = osol;
00611 solver->osinstance = NULL;
00612 solver->osoption = NULL;
00613 cout << "call the COIN - Cbc Solver for p0033" << endl;
00614 solver->buildSolverInstance();
00615 solver->solve();
00616 check = 3089;
00617 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
00618 if (ok)
00619 {
00620 #ifdef DEBUG
00621 cout << solver->osrl << endl;
00622 #endif
00623 cout << "Coin cbc solution for p0033 checks" << endl;
00624 }
00625 else
00626 { cout << "Coin cbc solution for p0033 in error:" << endl;
00627 cout << solver->osrl << endl;
00628 }
00629 if (ok == false) throw ErrorClass(" Fail unit test with Cbc on p0033.osil");
00630 delete solver;
00631 solver = NULL;
00632 delete osilreader;
00633 osilreader = NULL;
00634 delete osolreader;
00635 osolreader = NULL;
00636 unitTestResult << "TEST " << nOfTest << ": Solved problem p0033.osil with Cbc" << std::endl;
00637 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
00638 }
00639 catch(const ErrorClass& eclass){
00640 unitTestResultFailure << "Sorry Unit Test Failed Testing Cbc Solver:" + eclass.errormsg<< endl;
00641 }
00642
00643 if( THOROUGH == true){
00644
00645
00646 try{
00647 cout << endl << "TEST " << ++nOfTest << ": Cbc solver on p0033MULT.osil" << endl << endl;
00648 std::cout << "create a new COIN Cbc for OSiL string solution" << std::endl;
00649 ok = true;
00650 osilFileName = dataDir + "osilFiles" + dirsep + "p0033MULT.osil";
00651
00652 osil = fileUtil->getFileAsString( osilFileName.c_str());
00653
00654 osol = "";
00655 osilreader = new OSiLReader();
00656 osolreader = new OSoLReader();
00657 solver = new CoinSolver();
00658 solver->sSolverName ="cbc";
00659 solver->osil = osil;
00660 solver->osol = osol;
00661 solver->osinstance = NULL;
00662 solver->osoption = NULL;
00663 cout << "call the COIN - Cbc Solver for p0033MULT" << endl;
00664 solver->buildSolverInstance();
00665 solver->solve();
00666 check = 3089;
00667 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
00668 if (ok)
00669 {
00670 #ifdef DEBUG
00671 cout << solver->osrl << endl;
00672 #endif
00673 cout << "Coin cbc solution for p0033MULT checks" << endl;
00674 }
00675 else
00676 { cout << "Coin cbc solution for p0033MULT in error:" << endl;
00677 cout << solver->osrl << endl;
00678 }
00679 if (ok == false) throw ErrorClass(" Fail unit test with Cbc on p0033MULT.osil");
00680 delete solver;
00681 solver = NULL;
00682 delete osilreader;
00683 osilreader = NULL;
00684 delete osolreader;
00685 osolreader = NULL;
00686 unitTestResult << "TEST " << nOfTest << ": Solved problem p0033MULT.osil with Cbc" << std::endl;
00687 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
00688 }
00689 catch(const ErrorClass& eclass){
00690 unitTestResultFailure << "Sorry Unit Test Failed Testing Cbc Solver:" + eclass.errormsg<< endl;
00691 }
00692
00693
00694
00695 try{
00696 cout << endl << "TEST " << ++nOfTest << ": Cbc solver on p0033.osil - node limit set" << endl << endl;
00697
00698 ok = true;
00699 osilFileName = dataDir + "osilFiles" + dirsep + "p0033.osil";
00700 osolFileName = dataDir + "osolFiles" + dirsep + "p0033_cbc.osol";
00701 osil = fileUtil->getFileAsString( osilFileName.c_str());
00702 osol = fileUtil->getFileAsString( osolFileName.c_str());
00703 osilreader = new OSiLReader();
00704 osolreader = new OSoLReader();
00705 solver = new CoinSolver();
00706 solver->sSolverName ="cbc";
00707 solver->osil = osil;
00708 solver->osol = osol;
00709 solver->osinstance = NULL;
00710 solver->osoption = NULL;
00711 cout << "call the COIN - Cbc Solver for p0033" << endl;
00712 solver->buildSolverInstance();
00713 solver->solve();
00714
00715
00716 if( solver->osrl.find("node limit reached") != std::string::npos)
00717 ok = true;
00718 else
00719 ok = false;
00720 if (ok == false) throw ErrorClass(" node limit option on p0033.osil not processed properly");
00721 delete solver;
00722 solver = NULL;
00723 delete osilreader;
00724 osilreader = NULL;
00725 delete osolreader;
00726 osolreader = NULL;
00727 unitTestResult << "TEST " << nOfTest << ": Solved problem p0033.osil with Cbc node limit" << std::endl;
00728 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
00729 }
00730 catch(const ErrorClass& eclass){
00731 unitTestResultFailure << "Sorry Unit Test Failed Testing Cbc Solver:" + eclass.errormsg<< endl;
00732 }
00733
00734
00735 try{
00736 cout << endl << "TEST " << ++nOfTest << ": Cbc solver on p0201.osil" << endl << endl;
00737 ok = true;
00738 osilFileName = dataDir + "osilFiles" + dirsep + "p0201.osil";
00739 osolFileName = dataDir + "osolFiles" + dirsep + "p0201_cbc.osol";
00740 osil = fileUtil->getFileAsString( osilFileName.c_str());
00741 osol = fileUtil->getFileAsString( osolFileName.c_str());
00742 solver = new CoinSolver();
00743 solver->sSolverName ="cbc";
00744 solver->osil = osil;
00745 osilreader = new OSiLReader();
00746 osolreader = new OSoLReader();
00747 solver->osol = osol;
00748 solver->osinstance = NULL;
00749 solver->osoption = NULL;
00750 cout << "call the COIN - Cbc Solver for p0201" << endl;
00751 solver->solve();
00752 cout << "Here is the COIN Cbc solver solution for p0201" << endl;
00753 std::cout << solver->osrl << std::endl;
00754 check = 7615;
00755
00756
00757 string::size_type pos;
00758 pos = solver->osrl.find( "node limit");
00759 if(pos == std::string::npos) throw ErrorClass(" Error with p0201 on Cbc");
00760
00761
00762
00763 delete solver;
00764 solver = NULL;
00765 delete osilreader;
00766 osilreader = NULL;
00767 delete osolreader;
00768 osolreader = NULL;
00769 unitTestResult << "TEST " << nOfTest << ": Solved problem p0201.osil with Cbc" << std::endl;
00770 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
00771 }
00772 catch(const ErrorClass& eclass){
00773 unitTestResultFailure << "Sorry Unit Test Failed Testing Cbc Solver:" + eclass.errormsg<< endl;
00774 }
00775
00776 cout << endl << "TEST " << ++nOfTest << ": Cbc solver on parincInteger.osil" << endl << endl;
00777 ok = true;
00778 osilFileName = dataDir + "osilFiles" + dirsep + "parincInteger.osil";
00779 osolFileName = dataDir + "osolFiles" + dirsep + "parincInteger_cbc.osol";
00780 osil = fileUtil->getFileAsString( osilFileName.c_str());
00781 osol = fileUtil->getFileAsString( osolFileName.c_str());
00782 osilreader = new OSiLReader();
00783 osolreader = new OSoLReader();
00784
00785 solver = new CoinSolver();
00786 solver->sSolverName ="cbc";
00787 cout << "parse OSiL file" << endl;
00788 solver->osinstance = osilreader->readOSiL( osil);
00789 solver->osol = osol;
00790 cout << "call the COIN - Cbc Solver for parincInteger" << endl;
00791
00792 solver->solve();
00793 check = 7668;
00794 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
00795 if (ok)
00796 {
00797 #ifdef DEBUG
00798 cout << solver->osrl << endl;
00799 #endif
00800 cout << "COIN cbc solver solution for parincInteger checks." << endl;
00801 }
00802 else
00803 { cout << "COIN cbc solver solution for parincInteger in error:" << endl;
00804 cout << solver->osrl << endl;
00805 }
00806 if(ok == false) throw ErrorClass(" Fail unit test with Cbc on parincInteger.osil");
00807 delete osilreader;
00808 osilreader = NULL;
00809 delete osolreader;
00810 osolreader = NULL;
00811 delete solver;
00812 solver = NULL;
00813 unitTestResult << "TEST " << nOfTest << ": Solved problem parincInteger.osil with Cbc" << std::endl;
00814 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
00815 }
00816
00817 #ifdef COIN_HAS_SYMPHONY
00818 try{
00819 cout << endl << "TEST " << ++nOfTest << ": SYMPHONY solver on p0033.osil" << endl << endl;
00820 ok = true;
00821 osilFileName = dataDir + "osilFiles" + dirsep + "p0033.osil";
00822 osolFileName = dataDir + "osolFiles" + dirsep + "p0033_sym.osol";
00823 osil = fileUtil->getFileAsString( osilFileName.c_str());
00824 osol = fileUtil->getFileAsString( osolFileName.c_str());
00825 osolreader = new OSoLReader();
00826 solver = new CoinSolver();
00827 solver->sSolverName = "symphony";
00828 solver->osil = osil;
00829 solver->osinstance = NULL;
00830 solver->osoption = osolreader->readOSoL( osol);
00831 cout << "build the solver instance for COIN - SYMPHONY" << endl;
00832 solver->buildSolverInstance();
00833
00834 solver->solve();
00835 check = 3089;
00836
00837 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
00838 if (ok)
00839 {
00840 #ifdef DEBUG
00841 cout << solver->osrl << endl;
00842 #endif
00843 cout << "COIN SYMPHONY solver solution for p0033 checks." << endl;
00844 }
00845 else
00846 { cout << "COIN SYMPHONY solver solution for p0033 in error:" << endl;
00847 cout << solver->osrl << endl;
00848 }
00849 if(ok == false) throw ErrorClass(" Fail unit test with SYMPHONY on p0033.osil");
00850 delete solver;
00851 solver = NULL;
00852 delete osolreader;
00853 osolreader = NULL;
00854 unitTestResult << "TEST " << nOfTest << ": Solved problem p0033.osil with SYMPHONY" << std::endl;
00855 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
00856 }
00857 catch(const ErrorClass& eclass){
00858 unitTestResultFailure << "Sorry Unit Test Failed Testing the SYMPHONY Solver:" + eclass.errormsg << endl;
00859 }
00860 #endif
00861
00862
00863
00864 #ifdef COIN_HAS_DYLP
00865 try{
00866 cout << endl << "TEST " << ++nOfTest << ": DyLP solver on parincLinear.osil" << endl << endl;
00867 ok = true;
00868 osilFileName = dataDir + "osilFiles" + dirsep + "parincLinear.osil";
00869 osolFileName = dataDir + "osolFiles" + dirsep + "parincLinear_dylp.osol";
00870 osil = fileUtil->getFileAsString( osilFileName.c_str());
00871 osol = fileUtil->getFileAsString( osolFileName.c_str());
00872 osilreader = new OSiLReader();
00873 solver = new CoinSolver();
00874 solver->sSolverName = "dylp";
00875 solver->osol = osol;
00876 solver->osinstance = osilreader->readOSiL( osil);
00877 cout << "call the COIN - DyLP solver for parincLinear" << endl;
00878 solver->buildSolverInstance();
00879 solver->solve();
00880 check = 7668;
00881
00882 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
00883 if (ok)
00884 {
00885 #ifdef DEBUG
00886 cout << solver->osrl << endl;
00887 #endif
00888 cout << "COIN DyLP solver solution for parincLinear checks." << endl;
00889 }
00890 else
00891 { cout << "COIN DyLP solver solution for parincLinear in error:" << endl;
00892 cout << solver->osrl << endl;
00893 }
00894 if(ok == false) throw ErrorClass(" Fail unit test with DyLP on parincLinear.osil");
00895 delete solver;
00896 solver = NULL;
00897 delete osilreader;
00898 osilreader = NULL;
00899 unitTestResult << "TEST " << nOfTest << ": Solved problem parincLinear.osil with DyLP" << std::endl;
00900 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
00901 }
00902 catch(const ErrorClass& eclass){
00903 cout << "OSrL = " << solver->osrl << endl;
00904 cout << endl << endl << endl;
00905 unitTestResultFailure <<"Sorry Unit Test Failed Testing the DyLP Solver:" + eclass.errormsg << endl;
00906 }
00907 #endif
00908
00909
00910 #ifdef COIN_HAS_VOL
00911 try{
00912 cout << endl << "TEST " << ++nOfTest << ": Vol solver on volumeTest.osil" << endl << endl;
00913 ok = true;
00914 osilFileName = dataDir + "osilFiles" + dirsep + "volumeTest.osil";
00915 osolFileName = dataDir + "osolFiles" + dirsep + "volumeTest_vol.osol";
00916 osil = fileUtil->getFileAsString( osilFileName.c_str());
00917 osol = fileUtil->getFileAsString( osolFileName.c_str());
00918 osolreader = new OSoLReader();
00919 solver = new CoinSolver();
00920 solver->sSolverName = "vol";
00921 solver->osil = osil;
00922 solver->osinstance = NULL;
00923 solver->osoption = osolreader->readOSoL( osol);
00924 cout << "call the COIN - Vol solver for volumeTest" << endl;
00925 solver->buildSolverInstance();
00926 solver->solve();
00927 check = 7;
00928
00929 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
00930 if (ok)
00931 {
00932 #ifdef DEBUG
00933 cout << solver->osrl << endl;
00934 #endif
00935 cout << "COIN Vol solver solution for parincLinear checks." << endl;
00936 }
00937 else
00938 { cout << "COIN Vol solver solution for parincLinear in error:" << endl;
00939 cout << solver->osrl << endl;
00940 }
00941 if(ok == false) throw ErrorClass(" Fail unit test with Vol on volumeTest.osil");
00942 delete solver;
00943 solver = NULL;
00944 delete osolreader;
00945 osolreader = NULL;
00946 unitTestResult << "TEST " << nOfTest << ": Solved problem volumeTest.osil with Vol" << std::endl;
00947 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
00948 }
00949 catch(const ErrorClass& eclass){
00950 cout << "OSrL = " << solver->osrl << endl;
00951 cout << endl << endl << endl;
00952 unitTestResultFailure <<"Sorry Unit Test Failed Testing the Vol Solver:" + eclass.errormsg << endl;
00953 }
00954 #endif
00955
00956 #ifdef COIN_HAS_GLPK
00957 try{
00958 cout << endl << "TEST " << ++nOfTest << ": GLPK solver on p0033.osil" << endl << endl;
00959 ok = true;
00960 osilFileName = dataDir + "osilFiles" + dirsep + "p0033.osil";
00961 osolFileName = dataDir + "osolFiles" + dirsep + "p0033_glpk.osol";
00962 osil = fileUtil->getFileAsString( osilFileName.c_str());
00963 osol = fileUtil->getFileAsString( osolFileName.c_str());
00964 osilreader = new OSiLReader();
00965 osolreader = new OSoLReader();
00966 solver = new CoinSolver();
00967 solver->sSolverName = "glpk";
00968 solver->osinstance = osilreader->readOSiL( osil);
00969 solver->osoption = osolreader->readOSoL( osol);
00970 cout << "call the GLPK Solver for p0033" << endl;
00971 solver->buildSolverInstance();
00972 solver->solve();
00973 check = 3089;
00974
00975 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
00976 if (ok)
00977 {
00978 #ifdef DEBUG
00979 cout << solver->osrl << endl;
00980 #endif
00981 cout << "GLPK solver solution for p0033 checks." << endl;
00982 }
00983 else
00984 { cout << "GLPK solver solution for p0033 in error:" << endl;
00985 cout << solver->osrl << endl;
00986 }
00987 if(ok == false) throw ErrorClass(" Fail unit test with GLPK on p0033.osil");
00988 delete solver;
00989 solver = NULL;
00990 delete osilreader;
00991 osilreader = NULL;
00992 delete osolreader;
00993 osolreader = NULL;
00994 unitTestResult << "TEST " << nOfTest << ": Solved problem p0033.osil with GLPK" << std::endl;
00995 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
00996 }
00997 catch(const ErrorClass& eclass){
00998 cout << "OSrL = " << solver->osrl << endl;
00999 cout << endl << endl << endl;
01000 unitTestResultFailure <<"Sorry Unit Test Failed Testing the Glpk Solver:" + eclass.errormsg << endl;
01001 }
01002 #endif
01003
01004
01005
01006 #ifdef COIN_HAS_CPX
01007 try{
01008 cout << endl << "TEST " << ++nOfTest << ": Cplex solver on p0033.osil" << endl << endl;
01009 ok = true;
01010 osilFileName = dataDir + "osilFiles" + dirsep + "p0033.osil";
01011 osolFileName = dataDir + "osolFiles" + dirsep + "p0033_cpx.osol";
01012 osil = fileUtil->getFileAsString( osilFileName.c_str());
01013 osol = fileUtil->getFileAsString( osolFileName.c_str());
01014 solver = new CoinSolver();
01015 solver->sSolverName = "cplex";
01016 solver->osil = osil;
01017 solver->osol = osol;
01018 solver->osinstance = NULL;
01019 cout << "call the CPLEX Solver for p0033" << endl;
01020 solver->buildSolverInstance();
01021 solver->solve();
01022 check = 3089;
01023
01024 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
01025 if (ok)
01026 {
01027 #ifdef DEBUG
01028 cout << solver->osrl << endl;
01029 #endif
01030 cout << "CPLEX solver solution for p0033 checks." << endl;
01031 }
01032 else
01033 { cout << "CPLEX solver solution for p0033 in error:" << endl;
01034 cout << solver->osrl << endl;
01035 }
01036 if(ok == false) throw ErrorClass(" Fail unit test with CPLEX on p0033.osil");
01037 delete solver;
01038 solver = NULL;
01039 unitTestResult << "TEST " << nOfTest << ": Solved problem p0033.osil with CPLEX" << std::endl;
01040 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
01041 }
01042 catch(const ErrorClass& eclass){
01043 cout << "OSrL = " << solver->osrl << endl;
01044 cout << endl << endl << endl;
01045 unitTestResultFailure <<"Sorry Unit Test Failed Testing the Cplex Solver:" + eclass.errormsg << endl;
01046 }
01047 #endif
01048
01049
01050
01051 #ifdef COIN_HAS_IPOPT
01052 IpoptSolver *ipoptSolver = NULL;
01053 try{
01054 cout << endl << "TEST " << ++nOfTest << ": Ipopt solver with avion2.osil" << endl << endl;
01055 ipoptSolver = new IpoptSolver();
01056 cout << "create a new IPOPT Solver for OSiL string solution" << endl;
01057 ok = true;
01058
01059
01060
01061 #ifndef XLC_
01062 osilFileName = dataDir + "osilFiles" + dirsep + "avion2.osil";
01063 osolFileName = dataDir + "osolFiles" + dirsep + "avion2_ipopt.osol";
01064 osil = fileUtil->getFileAsString( osilFileName.c_str());
01065 osol = fileUtil->getFileAsString( osolFileName.c_str());
01066 cout << "IPOPT Solver created for OSiL string solution" << endl;
01067 ipoptSolver->osol = osol;
01068 osilreader = new OSiLReader();
01069 osolreader = new OSoLReader();
01070 ipoptSolver->osinstance = osilreader->readOSiL( osil);
01071 ipoptSolver->osol = osol;
01072 cout << "call the IPOPT Solver" << endl;
01073 ipoptSolver->buildSolverInstance();
01074 ipoptSolver->solve();
01075 check = 9.46801e+07;
01076
01077 ok = ( fabs(check - getObjVal( ipoptSolver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
01078 if (ok)
01079 {
01080 #ifdef DEBUG
01081 cout << ipoptSolver->osrl << endl;
01082 #endif
01083 cout << "IPOPT solver solution for avion2 checks." << endl;
01084 }
01085 else
01086 { cout << "IPOPT solver solution for avion2 in error:" << endl;
01087 cout << ipoptSolver->osrl << endl;
01088 }
01089 if(ok == false) throw ErrorClass(" Fail unit test with Ipopt on avion2.osil");
01090 delete osilreader;
01091 osilreader = NULL;
01092 delete osolreader;
01093 osolreader = NULL;
01094 delete ipoptSolver;
01095 ipoptSolver = NULL;
01096 unitTestResult << "TEST " << nOfTest << ": Solved problem avion2.osil with Ipopt" << std::endl;
01097 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
01098 #endif
01099
01100 if(THOROUGH == true){
01101
01102 cout << endl << "TEST " << ++nOfTest << ": Ipopt solver with HS071_NLPMod.osil" << endl << endl;
01103 cout << "create a new IPOPT Solver for OSiL string solution" << endl;
01104 ipoptSolver = new IpoptSolver();
01105
01106 osilFileName = dataDir + "osilFiles" + dirsep + "HS071_NLPMod.osil";
01107 osolFileName = dataDir + "osolFiles" + dirsep + "HS071_NLPMod_ipopt.osol";
01108 osil = fileUtil->getFileAsString( osilFileName.c_str());
01109 osol = fileUtil->getFileAsString( osolFileName.c_str());
01110 cout << "IPOPT Solver created for OSiL string solution" << endl;
01111
01112 osilreader = new OSiLReader();
01113 osolreader = new OSoLReader();
01114 ipoptSolver->osinstance = osilreader->readOSiL( osil);
01115 ipoptSolver->osoption = osolreader->readOSoL( osol);
01116 ipoptSolver->osol = osol;
01117 ipoptSolver->buildSolverInstance();
01118 ipoptSolver->solve();
01119 cout << "Here is the IPOPT solver solution for HS071_NLP" << endl;
01120 check = 17.014;
01121
01122 ok = ( fabs(check - getObjVal( ipoptSolver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
01123 if (ok)
01124 {
01125 #ifdef DEBUG
01126 cout << ipoptSolver->osrl << endl;
01127 #endif
01128 cout << "IPOPT solver solution for HS071_NLP checks." << endl;
01129 }
01130 else
01131 { cout << "IPOPT solver solution for HS071_NLP in error:" << endl;
01132 cout << ipoptSolver->osrl << endl;
01133 }
01134 delete osilreader;
01135 osilreader = NULL;
01136 delete osolreader;
01137 osolreader = NULL;
01138 delete ipoptSolver;
01139 ipoptSolver = NULL;
01140 if(ok == false) throw ErrorClass(" Fail unit test with Ipopt on HS071_NLP.osil");
01141 unitTestResult << "TEST " << nOfTest << ": Solved problem HS071.osil with Ipopt" << std::endl;
01142 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
01143
01144 cout << endl << "TEST " << ++nOfTest << ": Ipopt solver on rosenbrockmod.osil" << endl << endl;
01145 cout << "create a new IPOPT Solver for OSiL string solution" << endl;
01146 ipoptSolver = new IpoptSolver();
01147
01148
01149 osilFileName = dataDir + "osilFiles" + dirsep + "rosenbrockmod.osil";
01150 osolFileName = dataDir + "osolFiles" + dirsep + "rosenbrockmod_ipopt.osol";
01151 osil = fileUtil->getFileAsString( osilFileName.c_str());
01152 osol = fileUtil->getFileAsString( osolFileName.c_str());
01153 cout << "IPOPT Solver created for OSiL string solution" << endl;
01154 osilreader = new OSiLReader();
01155 osolreader = new OSoLReader();
01156 ipoptSolver->osil = osil;
01157 ipoptSolver->osoption = osolreader->readOSoL( osol);
01158 cout << "call the IPOPT Solver" << endl;
01159 ipoptSolver->buildSolverInstance();
01160 ipoptSolver->solve();
01161 check = 6.7279;
01162
01163 ok = ( fabs(check - getObjVal( ipoptSolver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
01164 if (ok)
01165 {
01166 #ifdef DEBUG
01167 cout << ipoptSolver->osrl << endl;
01168 #endif
01169 cout << "Ipopt solver solution for rosenbrockmod checks." << endl;
01170 }
01171 else
01172 { cout << "Ipopt solver solution for rosenbrockmod in error:" << endl;
01173 cout << ipoptSolver->osrl << endl;
01174 }
01175 if(ok == false)
01176 throw ErrorClass(" Fail unit test with Ipopt on rosenbrockmod.osil");
01177 delete osilreader;
01178 osilreader = NULL;
01179 delete osolreader;
01180 osolreader = NULL;
01181 delete ipoptSolver;
01182 ipoptSolver = NULL;
01183 unitTestResult << "TEST " << nOfTest << ": Solved problem rosenbrockmod.osil with Ipopt" << std::endl;
01184 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
01185
01186
01187 cout << endl << "TEST " << ++nOfTest << ": Ipopt solver on parincQuadratic.osil" << endl << endl;
01188 cout << "create a new IPOPT Solver for OSiL string solution" << endl;
01189 ipoptSolver = new IpoptSolver();
01190
01191
01192 osilFileName = dataDir + "osilFiles" + dirsep + "parincQuadratic.osil";
01193 osolFileName = dataDir + "osolFiles" + dirsep + "parincQuadratic_ipopt.osol";
01194 osil = fileUtil->getFileAsString( osilFileName.c_str());
01195 osol = fileUtil->getFileAsString( osolFileName.c_str());
01196 cout << "IPOPT Solver created for OSiL string solution" << endl;
01197 osilreader = new OSiLReader();
01198 osolreader = new OSoLReader();
01199 ipoptSolver->osinstance = osilreader->readOSiL( osil);
01200 ipoptSolver->osil = osil;
01201 ipoptSolver->osol = osol;
01202 cout << "call the IPOPT Solver" << endl;
01203 ipoptSolver->buildSolverInstance();
01204 ipoptSolver->solve();
01205 check = 49920.5;
01206
01207 ok = ( fabs(check - getObjVal( ipoptSolver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
01208 if (ok)
01209 {
01210 #ifdef DEBUG
01211 cout << ipoptSolver->osrl << endl;
01212 #endif
01213 cout << "IPOPT solver solution for parincQuadratic checks." << endl;
01214 }
01215 else
01216 { cout << "IPOPT solver solution for parincQuadratic in error:" << endl;
01217 cout << ipoptSolver->osrl << endl;
01218 }
01219 if(ok == false) throw ErrorClass(" Fail unit test with Ipopt on parincQuadradic.osil");
01220 delete osilreader;
01221 osilreader = NULL;
01222 delete osolreader;
01223 osolreader = NULL;
01224 delete ipoptSolver;
01225 ipoptSolver = NULL;
01226 unitTestResult << "TEST " << nOfTest << ": Solved problem parincQuadratic.osil with Ipopt" << std::endl;
01227 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
01228
01229 cout << endl << "TEST " << ++nOfTest << ": Ipopt solver on parincLinear.osil" << endl << endl;
01230 cout << "create a new IPOPT Solver for OSiL string solution" << endl;
01231 ipoptSolver = new IpoptSolver();
01232
01233
01234 osilFileName = dataDir + "osilFiles" + dirsep + "parincLinear.osil";
01235 osolFileName = dataDir + "osolFiles" + dirsep + "parincLinear_ipopt.osol";
01236 osil = fileUtil->getFileAsString( osilFileName.c_str());
01237 osol = fileUtil->getFileAsString( osolFileName.c_str());
01238 cout << "IPOPT Solver created for OSiL string solution" << endl;
01239 osilreader = new OSiLReader();
01240 osolreader = new OSoLReader();
01241 ipoptSolver->osinstance = osilreader->readOSiL( osil);
01242 ipoptSolver->osoption = NULL;
01243 ipoptSolver->osol = "";
01244 cout << "call the IPOPT Solver" << endl;
01245 ipoptSolver->buildSolverInstance();
01246 ipoptSolver->solve();
01247 check = 7668;
01248
01249 ok = ( fabs(check - getObjVal( ipoptSolver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
01250 if (ok)
01251 {
01252 #ifdef DEBUG
01253 cout << ipoptSolver->osrl << endl;
01254 #endif
01255 cout << "IPOPT solver solution for parincLinear checks." << endl;
01256 }
01257 else
01258 { cout << "IPOPT solver solution for parincLinear in error:" << endl;
01259 cout << ipoptSolver->osrl << endl;
01260 }
01261 if(ok == false) throw ErrorClass(" Fail unit test with Ipopt on parincLinear.osil");
01262 delete osilreader;
01263 osilreader = NULL;
01264 delete osolreader;
01265 osolreader = NULL;
01266 delete ipoptSolver;
01267 ipoptSolver = NULL;
01268 unitTestResult << "TEST " << nOfTest << ": Solved problem parincLinear.osil with Ipopt" << std::endl;
01269 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
01270
01271 cout << endl << "TEST " << ++nOfTest << ": Ipopt solver on callBackTest.osil" << endl << endl;
01272 cout << "create a new IPOPT Solver for OSiL string solution" << endl;
01273 ipoptSolver = new IpoptSolver();
01274
01275
01276 osilFileName = dataDir + "osilFiles" + dirsep + "callBackTest.osil";
01277 osolFileName = dataDir + "osolFiles" + dirsep + "callBackTest_ipopt.osol";
01278 osil = fileUtil->getFileAsString( osilFileName.c_str());
01279 osol = fileUtil->getFileAsString( osolFileName.c_str());
01280 cout << "IPOPT Solver created for OSiL string solution" << endl;
01281 osilreader = new OSiLReader();
01282 osolreader = new OSoLReader();
01283 ipoptSolver->osinstance = osilreader->readOSiL( osil);
01284 ipoptSolver->osoption = osolreader->readOSoL( osol);
01285 ipoptSolver->osol = osol;
01286 cout << "call the IPOPT Solver" << endl;
01287 ipoptSolver->buildSolverInstance();
01288 ipoptSolver->solve();
01289 check = 1.00045e+06;
01290
01291 ok = ( fabs(check - getObjVal( ipoptSolver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
01292 if (ok)
01293 {
01294 #ifdef DEBUG
01295 cout << ipoptSolver->osrl << endl;
01296 #endif
01297 cout << "IPOPT solver solution for callBackTest checks." << endl;
01298 }
01299 else
01300 { cout << "IPOPT solver solution for callBackTest in error:" << endl;
01301 cout << ipoptSolver->osrl << endl;
01302 }
01303 if(ok == false) throw ErrorClass(" Fail unit test with Ipopt on callBackTest.osil");
01304 delete osilreader;
01305 osilreader = NULL;
01306 delete osolreader;
01307 osolreader = NULL;
01308 delete ipoptSolver;
01309 ipoptSolver = NULL;
01310 unitTestResult << "TEST " << nOfTest << ": Solved problem callBackTest.osil with Ipopt" << std::endl;
01311 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
01312
01313 cout << endl << "TEST " << ++nOfTest << ": Ipopt solver on callBackTestRowMajor.osil" << endl << endl;
01314 cout << "create a new IPOPT Solver for OSiL string solution" << endl;
01315 ipoptSolver = new IpoptSolver();
01316
01317
01318 osilFileName = dataDir + "osilFiles" + dirsep + "callBackTestRowMajor.osil";
01319 osolFileName = dataDir + "osolFiles" + dirsep + "callBackTestRowMajor_ipopt.osol";
01320 osil = fileUtil->getFileAsString( osilFileName.c_str());
01321 osol = fileUtil->getFileAsString( osolFileName.c_str());
01322 cout << "IPOPT Solver created for OSiL string solution" << endl;
01323 osilreader = new OSiLReader();
01324 osolreader = new OSoLReader();
01325 ipoptSolver->osinstance = NULL;
01326 ipoptSolver->osoption = NULL;
01327 ipoptSolver->osil = osil;
01328 ipoptSolver->osol = osol;
01329 cout << "call the IPOPT Solver" << endl;
01330
01331 ipoptSolver->solve();
01332 check = 1.00045e+06;
01333
01334 ok = ( fabs(check - getObjVal( ipoptSolver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
01335 if (ok)
01336 {
01337 #ifdef DEBUG
01338 cout << ipoptSolver->osrl << endl;
01339 #endif
01340 cout << "IPOPT solver solution for callBackTestRowMajor checks." << endl;
01341 }
01342 else
01343 { cout << "IPOPT solver solution for callBackTestRowMajor in error:" << endl;
01344 cout << ipoptSolver->osrl << endl;
01345 }
01346 if(ok == false) throw ErrorClass(" Fail unit test with Ipopt on callBackTestRowMajor.osil");
01347 delete osilreader;
01348 osilreader = NULL;
01349 delete osolreader;
01350 osolreader = NULL;
01351 delete ipoptSolver;
01352 ipoptSolver = NULL;
01353 unitTestResult << "TEST " << nOfTest << ": Solved problem callBackRowMajor.osil with Ipopt" << std::endl;
01354 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
01355
01356
01357
01358
01359
01360
01361
01362
01363
01364
01365
01366
01367
01368
01369
01370
01371
01372
01373
01374
01375
01376
01377
01378
01379
01380
01381
01382
01383
01384
01385
01386
01387
01388
01389
01390
01391
01392
01393
01394
01395
01396
01397
01398
01399
01400
01401
01402
01403
01404 cout << endl << "TEST " << ++nOfTest << ": Ipopt solver on rosenbrockorig.osil" << endl << endl;
01405
01406 osilreader = new OSiLReader();
01407 osolreader = new OSoLReader();
01408 ok = true;
01409 osilFileName = dataDir + "osilFiles" + dirsep + "rosenbrockorig.osil";
01410
01411 osil = fileUtil->getFileAsString( osilFileName.c_str());
01412
01413 osol = "";
01414 solver = new IpoptSolver();
01415 solver->sSolverName = "ipopt";
01416 solver->osil = osil;
01417 solver->osol = osol;
01418
01419
01420 cout << "call the COIN - Ipopt Solver for rosenbrockorig" << endl;
01421 solver->buildSolverInstance();
01422
01423 std::cout << " CALL SOLVE " << std::endl;
01424 solver->solve();
01425 check = 0;
01426 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
01427 if (ok)
01428 {
01429 #ifdef DEBUG
01430 cout << solver->osrl << endl;
01431 #endif
01432 cout << "Ipopt solver solution for rosenbrockorig checks." << endl;
01433 }
01434 else
01435 { cout << "Ipopt solver solution for rosenbrockorig in error:" << endl;
01436 cout << solver->osrl << endl;
01437 }
01438 if(ok == false) throw ErrorClass(" Fail unit test with Ipopt on rosenbrockorig.osil");
01439
01440 delete solver;
01441 solver = NULL;
01442
01443
01444 delete osilreader;
01445 osilreader = NULL;
01446 delete osolreader;
01447 osolreader = NULL;
01448 unitTestResult << "TEST " << nOfTest << ": Solved problem rosenbrockorig.osil with Ipopt" << std::endl;
01449 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
01450
01451 cout << endl << "TEST " << ++nOfTest << ": Ipopt solver on HS071_feas.osil" << endl << endl;
01452 try {
01453
01454
01455 ok = true;
01456 osilFileName = dataDir + "osilFiles" + dirsep + "HS071_feas.osil";
01457
01458 osil = fileUtil->getFileAsString( osilFileName.c_str());
01459
01460 osol = "";
01461 solver = new IpoptSolver();
01462 solver->sSolverName = "ipopt";
01463 solver->osil = osil;
01464 solver->osol = osol;
01465
01466
01467 solver->buildSolverInstance();
01468
01469 cout << "call the COIN - Ipopt Solver for HS071_feas.osil" << endl;
01470 solver->solve();
01471 }
01472 catch(const ErrorClass& eclass)
01473 {
01474 ok = (solver->osresult->getGeneralMessage() == "Ipopt NEEDS AN OBJECTIVE FUNCTION");
01475 if(ok == false)
01476 { cout << "Ipopt solver returns:" << endl;
01477 cout << solver->osrl << endl;
01478 throw ErrorClass(" Fail unit test with Ipopt on HS071_feas.osil");
01479 }
01480 }
01481
01482 cout << "Received error message from Ipopt: \"Ipopt NEEDS AN OBJECTIVE FUNCTION\"" << endl;
01483
01484 delete solver;
01485 solver = NULL;
01486
01487 osilreader = NULL;
01488
01489 osolreader = NULL;
01490
01491 unitTestResult << "TEST " << nOfTest << ": Correctly diagnosed problem HS071_feas with Ipopt" << std::endl;
01492 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
01493
01494 }
01495 }
01496 catch(const ErrorClass& eclass){
01497 unitTestResultFailure << "Sorry Unit Test Failed Testing the Ipopt Solver:" + eclass.errormsg<< endl;
01498 }
01499 #endif // end of #ifdef COIN_HAS_IPOPT
01500
01501
01502 #ifdef COIN_HAS_BONMIN
01503 try{
01504 cout << endl << "TEST " << ++nOfTest << ": Bonmin solver on bonminEx1.osil" << endl << endl;
01505
01506 osilreader = new OSiLReader();
01507 osolreader = new OSoLReader();
01508 ok = true;
01509 osilFileName = dataDir + "osilFiles" + dirsep + "bonminEx1.osil";
01510 osolFileName = dataDir + "osolFiles" + dirsep + "bonminEx1_Bonmin.osol";
01511 osil = fileUtil->getFileAsString( osilFileName.c_str());
01512 osol = fileUtil->getFileAsString( osolFileName.c_str());
01513 solver = new BonminSolver();
01514
01515
01516 solver->osil = osil;
01517 solver->osoption = osolreader->readOSoL( osol);
01518 cout << "call the COIN - Bonmin Solver for bonminEx1" << endl;
01519
01520 solver->solve();
01521 check = -17.07106795327683;
01522
01523 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
01524 if (ok)
01525 {
01526 #ifdef DEBUG
01527 cout << solver->osrl << endl;
01528 #endif
01529 cout << "Bonmin solver solution for bonminEx1 checks." << endl;
01530 }
01531 else
01532 { cout << "Bonmin solver solution for bonminEx1 in error:" << endl;
01533 cout << solver->osrl << endl;
01534 }
01535 if(ok == false) throw ErrorClass(" Fail unit test with Bonmin on bonminEx1.osil");
01536 delete solver;
01537 solver = NULL;
01538 delete osilreader;
01539 osilreader = NULL;
01540 delete osolreader;
01541 osolreader = NULL;
01542 unitTestResult << "TEST " << nOfTest << ": Solved problem bonminEx1.osil with Bonmin" << std::endl;
01543 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
01544
01545 if (THOROUGH == true){
01546 cout << endl << "TEST " << ++nOfTest << ": Bonmin solver on wayneQuadratic.osil" << endl << endl;
01547 ok = true;
01548 osilFileName = dataDir + "osilFiles" + dirsep + "wayneQuadratic.osil";
01549 osolFileName = dataDir + "osolFiles" + dirsep + "wayneQuadratic_Bonmin1.osol";
01550 osil = fileUtil->getFileAsString( osilFileName.c_str());
01551 osol = fileUtil->getFileAsString( osolFileName.c_str());
01552 osilreader = new OSiLReader();
01553 solver = new BonminSolver();
01554 solver->osol = osol;
01555 solver->osinstance = osilreader->readOSiL( osil);
01556 cout << "call the Bonmin Solver for wayneQuadratic" << endl;
01557 solver->buildSolverInstance();
01558
01559 solver->solve();
01560 check = 2.925;
01561
01562 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
01563 if (ok)
01564 {
01565 #ifdef DEBUG
01566 cout << solver->osrl << endl;
01567 #endif
01568 cout << "Bonmin solver solution for wayneQuadratic checks." << endl;
01569 }
01570 else
01571 { cout << "Bonmin solver solution for wayneQuadratic in error:" << endl;
01572 cout << solver->osrl << endl;
01573 }
01574 if(ok == false) throw ErrorClass(" Fail unit test with Bonmin on wayneQuadratic.osil");
01575 delete solver;
01576 solver = NULL;
01577 delete osilreader;
01578 osilreader = NULL;
01579 unitTestResult << "TEST " << nOfTest << ": Solved problem wayneQuadratic.osil with Bonmin" << std::endl;
01580 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
01581
01582 cout << endl << "TEST " << ++nOfTest << ": Bonmin solver on wayneQuadratic.osil" << endl << endl;
01583 ok = true;
01584 osilFileName = dataDir + "osilFiles" + dirsep + "wayneQuadratic.osil";
01585 osolFileName = dataDir + "osolFiles" + dirsep + "wayneQuadratic_Bonmin2.osol";
01586 osil = fileUtil->getFileAsString( osilFileName.c_str());
01587 osol = fileUtil->getFileAsString( osolFileName.c_str());
01588 osilreader = new OSiLReader();
01589 osolreader = new OSoLReader();
01590 solver = new BonminSolver();
01591 solver->osol = osol;
01592 solver->osinstance = osilreader->readOSiL( osil);
01593 solver->osoption = osolreader->readOSoL( osol);
01594 cout << "call the Bonmin Solver for wayneQuadratic" << endl;
01595 solver->buildSolverInstance();
01596
01597 solver->solve();
01598 check = 2.925;
01599
01600 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
01601 if (ok)
01602 {
01603 #ifdef DEBUG
01604 cout << solver->osrl << endl;
01605 #endif
01606 cout << "Bonmin solver solution for wayneQuadratic checks." << endl;
01607 }
01608 else
01609 { cout << "Bonmin solver solution for wayneQuadratic in error:" << endl;
01610 cout << solver->osrl << endl;
01611 }
01612 if(ok == false) throw ErrorClass(" Fail unit test with Bonmin on wayneQuadratic.osil");
01613 delete solver;
01614 solver = NULL;
01615 delete osilreader;
01616 osilreader = NULL;
01617 delete osolreader;
01618 osolreader = NULL;
01619 unitTestResult << "TEST " << nOfTest << ": Solved problem wayneQuadratic.osil with Bonmin" << std::endl;
01620 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
01621
01622
01623 cout << endl << "TEST " << ++nOfTest << ": Bonmin solver on rosenbrockorig.osil" << endl << endl;
01624 ok = true;
01625 osilFileName = dataDir + "osilFiles" + dirsep + "rosenbrockorig.osil";
01626
01627 osil = fileUtil->getFileAsString( osilFileName.c_str());
01628
01629 osilreader = new OSiLReader();
01630
01631 solver = new BonminSolver();
01632 solver->osol = "";
01633 solver->osinstance = osilreader->readOSiL( osil);
01634
01635 cout << "build solver instance" << endl;
01636 solver->buildSolverInstance();
01637 cout << "call the Bonmin Solver for rosenbrockorig" << endl;
01638 solver->solve();
01639 check = 0;
01640 cout << "Verify solution" <<endl;
01641
01642 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
01643 if (ok)
01644 {
01645 #ifdef DEBUG
01646 cout << solver->osrl << endl;
01647 #endif
01648 cout << "Bonmin solver solution for rosenbrockorig checks." << endl;
01649 }
01650 else
01651 { cout << "Bonmin solver solution for rosenbrockorig in error:" << endl;
01652 cout << solver->osrl << endl;
01653 }
01654 if(ok == false) throw ErrorClass(" Fail unit test with Bonmin on rosenbrockorig.osil");
01655 delete solver;
01656 solver = NULL;
01657 delete osilreader;
01658 osilreader = NULL;
01659 delete osolreader;
01660 osolreader = NULL;
01661 unitTestResult << "TEST " << nOfTest << ": Solved problem rosenbrockorig.osil with Bonmin" << std::endl;
01662 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
01663
01664 cout << endl << "TEST " << ++nOfTest << ": Bonmin solver on rosenbrockorigInt.osil" << endl << endl;
01665 ok = true;
01666 osilFileName = dataDir + "osilFiles" + dirsep + "rosenbrockorigInt.osil";
01667
01668 osil = fileUtil->getFileAsString( osilFileName.c_str());
01669
01670 osilreader = new OSiLReader();
01671
01672 solver = new BonminSolver();
01673 solver->osol = "";
01674 solver->osinstance = osilreader->readOSiL( osil);
01675
01676 cout << "call the Bonmin Solver for rosenbrockinteger" << endl;
01677 solver->buildSolverInstance();
01678 solver->solve();
01679 check = 0;
01680 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
01681 if (ok)
01682 {
01683 #ifdef DEBUG
01684 cout << solver->osrl << endl;
01685 #endif
01686 cout << "Bonmin solver solution for rosenbrockorigInt checks." << endl;
01687 }
01688 else
01689 { cout << "Bonmin solver solution for rosenbrockorigInt in error:" << endl;
01690 cout << solver->osrl << endl;
01691 }
01692 if(ok == false) throw ErrorClass(" Fail unit test with Bonmin on rosenbrockorigInt.osil");
01693 delete solver;
01694 solver = NULL;
01695 delete osilreader;
01696 osilreader = NULL;
01697 delete osolreader;
01698 osolreader = NULL;
01699 unitTestResult << "TEST " << nOfTest << ": Solved problem rosenbrockorigInt.osil with Bonmin" << std::endl;
01700 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
01701
01702
01703 }
01704 }
01705 catch(const ErrorClass& eclass){
01706 unitTestResultFailure << "Sorry Unit Test Failed Testing the Bonmin Solver:" + eclass.errormsg << endl;
01707 }
01708 #endif // end of #ifdef COIN_HAS_BONMIN
01709
01710
01711
01712 #ifdef COIN_HAS_COUENNE
01713 try{
01714 cout << endl << "TEST " << ++nOfTest << ": Couenne solver on bonminEx1.osil" << endl << endl;
01715 CouenneSolver *solver = NULL;
01716
01717
01718 osilreader = new OSiLReader();
01719 osolreader = new OSoLReader();
01720 ok = true;
01721 osilFileName = dataDir + "osilFiles" + dirsep + "bonminEx1.osil";
01722 osolFileName = dataDir + "osolFiles" + dirsep + "bonminEx1_Couenne.osol";
01723 osil = fileUtil->getFileAsString( osilFileName.c_str());
01724 osol = fileUtil->getFileAsString( osolFileName.c_str());
01725 solver = new CouenneSolver();
01726 solver->sSolverName = "bonmin";
01727 solver->osil = osil;
01728 solver->osol = osol;
01729
01730
01731 cout << "call the COIN - Couenne Solver for bonminEx1" << endl;
01732 solver->buildSolverInstance();
01733
01734 std::cout << " CALL SOLVE " << std::endl;
01735 solver->solve();
01736
01737 check = -17.07106795327683;
01738
01739 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
01740 if (ok)
01741 {
01742 #ifdef DEBUG
01743 cout << solver->osrl << endl;
01744 #endif
01745 cout << "Couenne solver solution for bonminEx1 checks." << endl;
01746 }
01747 else
01748 { cout << "Couenne solver solution for bonminEx1 in error:" << endl;
01749 cout << solver->osrl << endl;
01750 }
01751 if(ok == false) throw ErrorClass(" Fail unit test with Couenne on bonminEx1.osil");
01752
01753 delete solver;
01754 solver = NULL;
01755
01756
01757 delete osilreader;
01758 osilreader = NULL;
01759 delete osolreader;
01760 osolreader = NULL;
01761 unitTestResult << "TEST " << nOfTest << ": Solved problem bonminEx1.osil with Couenne" << std::endl;
01762 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
01763
01764 if( THOROUGH == true){
01765 cout << endl << "TEST " << ++nOfTest << ": Couenne solver on bonminEx1_Nonlinear.osil" << endl << endl;
01766
01767 osilreader = new OSiLReader();
01768 osolreader = new OSoLReader();
01769 ok = true;
01770 osilFileName = dataDir + "osilFiles" + dirsep + "bonminEx1_Nonlinear.osil";
01771
01772 osil = fileUtil->getFileAsString( osilFileName.c_str());
01773
01774 osol = "";
01775 solver = new CouenneSolver();
01776 solver->osil = osil;
01777 solver->osol = osol;
01778
01779
01780 cout << "call the COIN - Couenne Solver for bonminEx1_Nonlinear" << endl;
01781 solver->buildSolverInstance();
01782
01783 std::cout << " CALL SOLVE " << std::endl;
01784 solver->solve();
01785
01786 check = -1.707107;
01787
01788 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
01789 if (ok)
01790 {
01791 #ifdef DEBUG
01792 cout << solver->osrl << endl;
01793 #endif
01794 cout << "Couenne solver solution for bonminEx1_Nonlinear checks." << endl;
01795 }
01796 else
01797 { cout << "Couenne solver solution for bonminEx1_Nonlinear in error:" << endl;
01798 cout << solver->osrl << endl;
01799 }
01800 if(ok == false) throw ErrorClass(" Fail unit test with Couenne on bonminEx1_Nonlinear.osil");
01801
01802 delete solver;
01803 solver = NULL;
01804
01805
01806 delete osilreader;
01807 osilreader = NULL;
01808 delete osolreader;
01809 osolreader = NULL;
01810 unitTestResult << "TEST " << nOfTest << ": Solved problem bonminEx1_Nonlinear with Couenne" << std::endl;
01811 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
01812
01813
01814 cout << endl << "TEST " << ++nOfTest << ": Couenne solver on nonconvex.osil" << endl << endl;
01815
01816 osilreader = new OSiLReader();
01817 osolreader = new OSoLReader();
01818 ok = true;
01819 osilFileName = dataDir + "osilFiles" + dirsep + "nonconvex.osil";
01820
01821 osil = fileUtil->getFileAsString( osilFileName.c_str());
01822
01823 osol = "";
01824 solver = new CouenneSolver();
01825 solver->osil = osil;
01826 solver->osol = osol;
01827
01828
01829 cout << "call the COIN - Couenne Solver for nonconvex.osil" << endl;
01830 solver->buildSolverInstance();
01831
01832 std::cout << " CALL SOLVE " << std::endl;
01833 solver->solve();
01834
01835 check = -6.551133;
01836
01837 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
01838 if (ok)
01839 {
01840 #ifdef DEBUG
01841 cout << solver->osrl << endl;
01842 #endif
01843 cout << "Couenne solver solution for nonconvex.osil checks." << endl;
01844 }
01845 else
01846 { cout << "Couenne solver solution for nonconvex.osil in error:" << endl;
01847 cout << solver->osrl << endl;
01848 }
01849 if(ok == false) throw ErrorClass(" Fail unit test with Couenne on nonconvex.osil");
01850
01851 delete solver;
01852 solver = NULL;
01853
01854
01855 delete osilreader;
01856 osilreader = NULL;
01857 delete osolreader;
01858 osolreader = NULL;
01859 unitTestResult << "TEST " << nOfTest << ": Solved problem nonconvex.osil with Couenne" << std::endl;
01860 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
01861
01862 cout << endl << "TEST " << ++nOfTest << ": Couenne solver on rosenbrockorig.osil" << endl << endl;
01863
01864 osilreader = new OSiLReader();
01865 osolreader = new OSoLReader();
01866 ok = true;
01867 osilFileName = dataDir + "osilFiles" + dirsep + "rosenbrockorig.osil";
01868
01869 osil = fileUtil->getFileAsString( osilFileName.c_str());
01870
01871 osol = "";
01872 solver = new CouenneSolver();
01873 solver->osil = osil;
01874 solver->osol = osol;
01875
01876
01877 cout << "call the COIN - Couenne Solver for rosenbrockorig" << endl;
01878 solver->buildSolverInstance();
01879
01880 std::cout << " CALL SOLVE " << std::endl;
01881 solver->solve();
01882
01883 check = 0;
01884
01885 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
01886 if (ok)
01887 {
01888 #ifdef DEBUG
01889 cout << solver->osrl << endl;
01890 #endif
01891 cout << "Couenne solver solution for rosenbrockorig checks." << endl;
01892 }
01893 else
01894 { cout << "Couenne solver solution for rosenbrockorig in error:" << endl;
01895 cout << solver->osrl << endl;
01896 }
01897 if(ok == false) throw ErrorClass(" Fail unit test with Couenne on rosenbrockorig.osil");
01898
01899 delete solver;
01900 solver = NULL;
01901
01902
01903 delete osilreader;
01904 osilreader = NULL;
01905 delete osolreader;
01906 osolreader = NULL;
01907 unitTestResult << "TEST " << nOfTest << ": Solved problem rosenbrockorig.osil with Couenne" << std::endl;
01908 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
01909
01910
01911
01912 cout << endl << "TEST " << ++nOfTest << ": Couenne solver on wayneQuadratic.osil" << endl << endl;
01913
01914 osilreader = new OSiLReader();
01915 osolreader = new OSoLReader();
01916 ok = true;
01917 osilFileName = dataDir + "osilFiles" + dirsep + "wayneQuadratic.osil";
01918
01919
01920 osil = fileUtil->getFileAsString( osilFileName.c_str());
01921
01922 osol = "";
01923 solver = new CouenneSolver();
01924 solver->osinstance = NULL;
01925 solver->osil = osil;
01926 solver->osol = osol;
01927
01928
01929 cout << "call the COIN - Couenne Solver for wayneQuadraticr" << endl;
01930
01931 std::cout << " CALL SOLVE " << std::endl;
01932 solver->buildSolverInstance();
01933 solver->setSolverOptions();
01934 solver->solve();
01935 check = 2.925;
01936
01937 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
01938 if (ok)
01939 {
01940 #ifdef DEBUG
01941 cout << solver->osrl << endl;
01942 #endif
01943 cout << "Couenne solver solution for wayneQuadratic checks." << endl;
01944 }
01945 else
01946 { cout << "Couenne solver solution for wayneQuadratic in error:" << endl;
01947 cout << solver->osrl << endl;
01948 }
01949 if(ok == false) throw ErrorClass(" Fail unit test with Couenne on rosenbrockinteger.osil");
01950
01951 delete solver;
01952 solver = NULL;
01953
01954
01955 delete osilreader;
01956 osilreader = NULL;
01957 delete osolreader;
01958 osolreader = NULL;
01959 unitTestResult << "TEST " << nOfTest << ": Solved problem wayneQuadratic.osil with Couenne" << std::endl;
01960 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
01961
01962
01963
01964 cout << endl << "TEST " << ++nOfTest << ": Couenne solver on wayneQuadratic.osil" << endl << endl;
01965
01966 osilreader = new OSiLReader();
01967 osolreader = new OSoLReader();
01968 ok = true;
01969 osilFileName = dataDir + "osilFiles" + dirsep + "wayneQuadratic.osil";
01970 osolFileName = dataDir + "osolFiles" + dirsep + "wayneQuadratic_Couenne.osol";
01971 osil = fileUtil->getFileAsString( osilFileName.c_str());
01972 osol = fileUtil->getFileAsString( osolFileName.c_str());
01973 solver = new CouenneSolver();
01974 solver->osil = osil;
01975 solver->osol = osol;
01976 cout << "call the COIN - Couenne Solver for wayneQuadratic.osil" << endl;
01977 solver->buildSolverInstance();
01978
01979 std::cout << " CALL SOLVE " << std::endl;
01980 solver->solve();
01981
01982 cout << "Here is the Couenne solver solution for wayneQuadratic" << endl;
01983
01984
01985 tmp_writer = new OSrLWriter();
01986 solver->osrl = tmp_writer->writeOSrL(solver->osresult);
01987 delete tmp_writer;
01988 tmp_writer = NULL;
01989
01990 string::size_type pos;
01991 pos = solver->osrl.find( "LIMIT_EXCEEDED[COUENNE]");
01992 if(pos == std::string::npos)
01993 {
01994 cout << solver->osrl << endl << endl;
01995 throw ErrorClass(" Error with wayneQuadratic running on Couenne");
01996 }
01997 #ifdef DEBUG
01998 else
01999 {
02000 cout << solver->osrl << endl << endl;
02001 }
02002 #endif
02003 delete solver;
02004 solver = NULL;
02005 delete osilreader;
02006 osilreader = NULL;
02007 delete osolreader;
02008 osolreader = NULL;
02009 unitTestResult << "TEST " << nOfTest << ": Solved problem wayneQuadratic with Couenne" << std::endl;
02010 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
02011
02012
02013 }
02014
02015 }
02016 catch(const ErrorClass& eclass){
02017 cout << "OSrL = " << solver->osrl << endl;
02018 cout << endl << endl << endl;
02019 unitTestResultFailure << "Sorry Unit Test Failed Testing the Couenne Solver:" + eclass.errormsg << endl;
02020
02021 }
02022 #endif // end of #ifdef COIN_HAS_COUENNE
02023
02024
02025
02026 #ifdef COIN_HAS_LINDO
02027 try{
02028 cout << endl << "TEST " << ++nOfTest << ": Lindo solver on lindoapiaddins.osil" << endl << endl;
02029 ok = true;
02030 osilFileName = dataDir + "osilFiles" + dirsep + "lindoapiaddins.osil";
02031 osolFileName = dataDir + "osolFiles" + dirsep + "lindoapiaddins_lindo.osol";
02032 osil = fileUtil->getFileAsString( osilFileName.c_str());
02033 osol = fileUtil->getFileAsString( osolFileName.c_str());
02034 osilreader = new OSiLReader();
02035 cout << "create a new LINDO Solver for OSiL string solution" << endl;
02036 solver = new LindoSolver();
02037 solver->osinstance = osilreader->readOSiL( osil);
02038 solver->osol = osol;
02039 cout << "call the LINDO Solver" << endl;
02040 solver->buildSolverInstance();
02041 solver->solve();
02042 check = 99;
02043
02044 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
02045 if (ok)
02046 {
02047 #ifdef DEBUG
02048 cout << solver->osrl << endl;
02049 #endif
02050 cout << "LINDO solver solution for lindoapiaddins checks." << endl;
02051 }
02052 else
02053 { cout << "LINDO solver solution for lindoapiaddins in error:" << endl;
02054 cout << solver->osrl << endl;
02055 }
02056 if(ok == false) throw ErrorClass(" Fail unit test with LINDO on lindoapiaddins.osil");
02057 solver->osinstance = NULL;
02058 delete solver;
02059 solver = NULL;
02060 osilreader = NULL;
02061 delete osolreader;
02062 unitTestResult << "TEST " << nOfTest << ": Solved problem lindoapiaddins.osil with Lindo" << std::endl;
02063 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
02064
02065 #ifdef THOUROUGH
02066
02067 cout << endl << "TEST " << ++nOfTest << ": Lindo solver on rosenbrockmod.osil" << endl << endl;
02068 osilFileName = dataDir + "osilFiles" + dirsep + "rosenbrockmod.osil";
02069 osolFileName = dataDir + "osolFiles" + dirsep + "rosenbrockmod_lindo.osol";
02070 osil = fileUtil->getFileAsString( osilFileName.c_str());
02071 osol = fileUtil->getFileAsString( osolFileName.c_str());
02072 solver = new LindoSolver();
02073 solver->osil = osil;
02074 solver->osol = osol;
02075 solver->osinstance = NULL;
02076 cout << "call the LINDO Solver" << endl;
02077 solver->buildSolverInstance();
02078 solver->solve();
02079 check = 6.7279;
02080
02081 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
02082 if (ok)
02083 {
02084 #ifdef DEBUG
02085 cout << solver->osrl << endl;
02086 #endif
02087 cout << "LINDO solver solution for rosenbrockmod checks." << endl;
02088 }
02089 else
02090 { cout << "LINDO solver solution for rosenbrockmod in error:" << endl;
02091 cout << solver->osrl << endl;
02092 }
02093 if(ok == false) throw ErrorClass(" Fail unit test with LINDO on rosenbrockmod.osil");
02094 solver->osinstance = NULL;
02095 delete solver;
02096 solver = NULL;
02097 unitTestResult << "TEST " << nOfTest << ": Solved problem rosenbrockmod.osil with Lindo" << std::endl;
02098 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
02099
02100
02101 cout << endl << "TEST " << ++nOfTest << ": Lindo solver on parincQuadratic.osil" << endl << endl;
02102 osilFileName = dataDir + "osilFiles" + dirsep + "parincQuadratic.osil";
02103 osolFileName = dataDir + "osolFiles" + dirsep + "parincQuadratic_lindo.osol";
02104 osil = fileUtil->getFileAsString( osilFileName.c_str());
02105 osol = fileUtil->getFileAsString( osolFileName.c_str());
02106 osolreader = new OSoLReader();
02107 solver = new LindoSolver();
02108 solver->osil = osil;
02109 solver->osol = osol;
02110 solver->osinstance = NULL;
02111 solver->osoption = osolreader->readOSoL( osol);
02112 cout << "call the LINDO Solver" << endl;
02113 solver->buildSolverInstance();
02114 solver->solve();
02115 check = 49920.5;
02116
02117 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
02118 if (ok)
02119 {
02120 #ifdef DEBUG
02121 cout << solver->osrl << endl;
02122 #endif
02123 cout << "LINDO solver solution for parincQuadratic checks." << endl;
02124 }
02125 else
02126 { cout << "LINDO solver solution for parincQuadratic in error:" << endl;
02127 cout << solver->osrl << endl;
02128 }
02129 if(ok == false) throw ErrorClass(" Fail unit test with LINDO on parincQuadratic.osil");
02130 delete solver;
02131 solver = NULL;
02132 delete osolreader;
02133 osolreader = NULL;
02134 unitTestResult << "TEST " << nOfTest << ": Solved problem parincQuadratic.osil with Lindo" << std::endl;
02135 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
02136
02137
02138
02139
02140
02141
02142
02143
02144
02145
02146
02147
02148
02149
02150
02151
02152
02153
02154
02155
02156
02157
02158
02159
02160
02161
02162
02163
02164
02165
02166
02167
02168
02169
02170
02171
02172
02173
02174
02175 #endif
02176 }
02177 catch(const ErrorClass& eclass){
02178
02179 cout << endl << endl << endl;
02180 unitTestResultFailure <<"Sorry Unit Test Failed Testing the LINDO Solver:" + eclass.errormsg << endl << endl;
02181 }
02182 #endif
02183 }
02184
02185
02186
02187
02188 if (OTHER_TESTS){
02189 try{
02190 cout << endl << "TEST " << ++nOfTest << ": Cbc solver using MPS file" << endl << endl;
02191 ok = true;
02192
02193
02194 cout << "create a COIN Solver for MPS - OSInstance solution" << endl;
02195 solver = new CoinSolver();
02196 solver->sSolverName = "cbc";
02197 mps2osil = new OSmps2osil( mpsFileName);
02198 mps2osil->createOSInstance() ;
02199 solver->osinstance = mps2osil->osinstance;
02200 osol = "<osol></osol>";
02201 solver->osol = osol;
02202 cout << "call COIN Solve" << endl;
02203 solver->buildSolverInstance();
02204 solver->solve();
02205 check = -7668;
02206
02207 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
02208 if (ok)
02209 {
02210 #ifdef DEBUG
02211 cout << solver->osrl << endl;
02212 #endif
02213 cout << "COIN solver solution for parinc.mps checks." << endl;
02214 }
02215 else
02216 { cout << "COIN solver solution for parinc.mps in error:" << endl;
02217 cout << solver->osrl << endl;
02218 }
02219 if(ok == false) throw ErrorClass(" Fail unit test with COIN Solver on MPS test problem parincLinear.mps");
02220 delete solver;
02221 solver = NULL;
02222 delete mps2osil;
02223 mps2osil = NULL;
02224
02225
02226 unitTestResult << "TEST " << nOfTest << ": Test the MPS -> OSiL converter on parinc.mps using Cbc" << std::endl;
02227 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
02228 }
02229 catch(const ErrorClass& eclass){
02230 cout << "OSrL = " << solver->osrl << endl;
02231 cout << endl << endl << endl;
02232 unitTestResultFailure <<"Sorry Unit Test Failed Testing the MPS converter:" + eclass.errormsg << endl;
02233 }
02234
02235
02236
02237
02238 #if 0
02239 #ifdef COIN_HAS_GAMSUTILS
02240 std::cout << "Working with GAMSIO " << std::endl;
02241
02242 std::string gmsControlFile = "/home/kmartin/bin/gams/23.2/225a/gamscntr.dat";
02243
02244
02245 OSgams2osil *gams2osil;
02246 gams2osil = new OSgams2osil( gmsControlFile);
02247 gams2osil->createOSInstance();
02248 std::cout << gams2osil->osinstance->printModel() << std::endl;
02249 std::cout << "Done Working with GAMSIO " << std::endl;
02250 delete gams2osil;
02251 exit( 1);
02252 #endif
02253 #endif
02254
02255
02256 try{
02257 #ifdef COIN_HAS_ASL
02258 cout << endl << "TEST " << ++nOfTest << ": AMPL solver interface" << endl << endl;
02259 ok = true;
02260 cout << "create a cbc Solver for AMPL nl - OSInstance solution" << endl;
02261 solver = new CoinSolver();
02262 solver->sSolverName = "cbc";
02263 nl2osil = new OSnl2osil( nlFileName);
02264 nl2osil->createOSInstance() ;
02265 solver->osinstance = nl2osil->osinstance;
02266
02267 OSiLWriter tmp_osil_writer;
02268 tmp_osil_writer.m_bWhiteSpace = true;
02269 std::cout << tmp_osil_writer.writeOSiL( solver->osinstance) << std::endl;
02270
02271 osol = "";
02272 solver->osol = osol;
02273 cout << "call Cbc Solve" << endl;
02274 solver->buildSolverInstance();
02275 solver->solve();
02276 check = 7668;
02277
02278 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
02279 if (ok)
02280 {
02281 #ifdef DEBUG
02282 cout << solver->osrl << endl;
02283 #endif
02284 cout << "COIN cbc solver solution for parinc.nl checks." << endl;
02285 }
02286 else
02287 { cout << "COIN cbc solver solution for parinc.nl in error:" << endl;
02288 cout << solver->osrl << endl;
02289 }
02290 if(ok == false) throw ErrorClass(" Fail unit test with OSnl2osil on problem parinc.nl");
02291 solver->osinstance = NULL;
02292 delete solver;
02293 solver = NULL;
02294 cout << "call delete nl2osil" << endl;
02295 delete nl2osil;
02296 nl2osil = NULL;
02297 unitTestResult << "TEST " << nOfTest << ": Test the AMPL nl -> OSiL converter on parinc.nl using Cbc" << std::endl;
02298 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
02299 #endif
02300 }
02301 catch(const ErrorClass& eclass){
02302 cout << "OSrL = " << solver->osrl << endl;
02303 cout << endl << endl << endl;
02304 unitTestResultFailure <<"Sorry Unit Test Failed Testing AMPL:" + eclass.errormsg << endl;
02305 }
02306
02307
02308
02309
02310 try{
02311 cout << endl << "TEST " << ++nOfTest << ": b64 operations" << endl << endl;
02312 ok = true;
02313 OSiLWriter osilwriter;
02314 osilwriter.m_bWriteBase64 = true;
02315 solver = new CoinSolver();
02316 solver->sSolverName = "cbc";
02317 mps2osil = new OSmps2osil( mpsFileName);
02318 solver->osinstance = NULL;
02319 osol = "<osol></osol>";
02320 solver->osol = osol;
02321 mps2osil->createOSInstance() ;
02322 solver->osil = osilwriter.writeOSiL( mps2osil->osinstance) ;
02323 std::cout << solver->osil << std::endl;
02324 solver->buildSolverInstance();
02325 solver->solve();
02326 cout << endl << endl;
02327 check = -7668;
02328
02329 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
02330 if (ok)
02331 { cout << "COIN solution of a OSiL string in b64 format." << endl;
02332 #ifdef DEBUG
02333 cout << solver->osrl << endl;
02334 #endif
02335 }
02336 else
02337 { cout << "COIN solution of a OSiL string in b64 format:" << endl;
02338 cout << solver->osrl << endl;
02339 }
02340 if(ok == false) throw ErrorClass(" Fail unit test with COIN Cbc Solver on b64 test problem parincLinear.mps");
02341 solver->osinstance = NULL;
02342 delete solver;
02343 solver = NULL;
02344 delete mps2osil;
02345 mps2osil = NULL;
02346 unitTestResult << "TEST " << nOfTest << ": Test a problem written in b64 and then converted to OSInstance" << std::endl;
02347 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
02348 }
02349 catch(const ErrorClass& eclass){
02350 cout << endl << endl;
02351 cout << eclass.errormsg << endl << endl;
02352 cout << "OSrL = " << solver->osrl << endl;
02353 cout << endl << endl << endl;
02354 unitTestResultFailure << "Sorry Unit Test Failed Testing Use of Base 64" << endl;
02355
02356 }
02357
02358
02359
02360 try{
02361 cout << endl << "TEST " << ++nOfTest << ": postfix and prefix routines" << endl << endl;
02362 std::string expTreeTest = dataDir + "osilFiles" + dirsep + "rosenbrockmod.osil";
02363 osil = fileUtil->getFileAsString( expTreeTest.c_str() ) ;
02364 OSInstance *osinstance = NULL;
02365
02366 OSiLReader *osilreader = NULL;
02367 osilreader = new OSiLReader();
02368
02369 osinstance = osilreader->readOSiL( osil);
02370 OSExpressionTree* expTree = osinstance->getNonlinearExpressionTree( -1);
02371 if(expTree == NULL) throw ErrorClass(" Null expression tree when testing prefix and postfix routines");
02372 std::vector<OSnLNode*> postfixVec;
02373
02374 postfixVec = osinstance->getNonlinearExpressionTreeInPostfix( -1);
02375
02376 unsigned int n = postfixVec.size();
02377 unsigned int i;
02378 std::string *nodeNames1 = new std::string[ n];
02379 std::string *nodeNames2 = new std::string[ n];
02380 for (i = 0 ; i < n; i++){
02381 std::cout << postfixVec[i]->getTokenName() << std::endl;
02382 nodeNames1[i] = postfixVec[i]->getTokenName();
02383 }
02384
02385
02386 expTree->m_treeRoot = postfixVec[ n - 1]->createExpressionTreeFromPostfix( postfixVec);
02387
02388
02389 std::vector<OSnLNode*> prefixVec;
02390
02391 prefixVec = osinstance->getNonlinearExpressionTreeInPrefix( -1);
02392
02393
02394 expTree->m_treeRoot = prefixVec[ 0]->createExpressionTreeFromPrefix( prefixVec);
02395
02396
02397 postfixVec = expTree->m_treeRoot->getPostfixFromExpressionTree();
02398
02399 if(postfixVec.size() != n) throw ErrorClass(" Problem with creating expression trees");
02400 std::cout << std::endl << std::endl;
02401 for (i = 0 ; i < n; i++){
02402
02403 nodeNames2[i] = postfixVec[i]->getTokenName();
02404 if( nodeNames1[i] != nodeNames2[ i]) throw ErrorClass(" Problem with creating expression trees");
02405 }
02406
02407
02408 delete[] nodeNames1;
02409 delete[] nodeNames2;
02410
02411 delete osilreader;
02412 osilreader = NULL;
02413 osinstance = NULL;
02414 unitTestResult << "TEST " << nOfTest << ": Successful test of prefix and postfix conversion routines" << std::endl;
02415 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
02416
02417 }
02418 catch(const ErrorClass& eclass){
02419 cout << endl << endl << endl;
02420 unitTestResultFailure << eclass.errormsg << endl;
02421 }
02422
02423 try{
02424 cout << endl << "TEST " << ++nOfTest << ": nonlinear operators" << endl << endl;
02425 ok = true;
02426 std::string operatorTest = dataDir + "osilFiles" + dirsep + "testOperators.osil";
02427 osil = fileUtil->getFileAsString( operatorTest.c_str() );
02428 OSInstance *osinstance = NULL;
02429
02430 OSiLReader *osilreader = NULL;
02431 osilreader = new OSiLReader();
02432 OSiLWriter *osilwriter = NULL;
02433 osilwriter = new OSiLWriter();
02434
02435 osinstance = osilreader->readOSiL( osil);
02436
02437 cout << "Done" << endl;
02438 OSExpressionTree* expTree = osinstance->getNonlinearExpressionTree( -1);
02439 std::vector<OSnLNode*> postfixVec;
02440 postfixVec = expTree->m_treeRoot->getPostfixFromExpressionTree();
02441 int n = postfixVec.size();
02442 std::string *nodeNames1 = new std::string[ n];
02443 for (int i = 0 ; i < n; i++){
02444 std::cout << postfixVec[i]->getTokenName() << std::endl;
02445 nodeNames1[i] = postfixVec[i]->getTokenName();
02446 }
02447 std::cout << std::endl << std::endl;
02448 std::cout << osilwriter->writeOSiL( osinstance) << std::endl;
02449
02450 double *x = NULL;
02451 x = new double[2];
02452 x[0] = 1;
02453 x[1] = 2;
02454 double parserTestVal = expTree->m_treeRoot->calculateFunction( x);
02455 std::cout << "ParserTest Val = " << parserTestVal << std::endl;
02456 check = 11;
02457
02458 ok = ( fabs(check - expTree->m_treeRoot->calculateFunction( x))/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
02459 if(ok == false) throw ErrorClass(" Problem evaluating expression tree");
02460 delete[] x;
02461 delete[] nodeNames1;
02462 delete osilreader;
02463 osilreader = NULL;
02464 delete osilwriter;
02465 osilwriter = NULL;
02466 osinstance = NULL;
02467
02468 unitTestResult << "TEST " << nOfTest << ": Successful test of nonlinear operators using file testOperators.osil" << std::endl;
02469 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
02470 }
02471 catch(const ErrorClass& eclass){
02472 cout << endl << endl << endl;
02473 unitTestResultFailure << eclass.errormsg << endl;
02474 }
02475
02476 try{
02477 cout << endl << "TEST " << ++nOfTest << ": Automatic differentiation" << endl << endl;
02478
02479
02480 std::string expTreeTest = dataDir + "osilFiles" + dirsep + "CppADTestLag.osil";
02481
02482
02483
02484
02485
02486
02487
02488
02489 osil = fileUtil->getFileAsString( expTreeTest.c_str() );
02490 OSInstance *osinstance = NULL;
02491
02492 OSiLReader *osilreader = NULL;
02493 osilreader = new OSiLReader();
02494
02495 osinstance = osilreader->readOSiL( osil);
02496 double *x;
02497 x = new double[ 4];
02498 x[0] = 1;
02499 x[1] = 5;
02500 x[2] = 10;
02501 x[3] = 5;
02502 SparseVector *sp;
02503
02504 osinstance->getJacobianSparsityPattern();
02505 sp = osinstance->calculateConstraintFunctionGradient(x, 1, true);
02506 for(int i = 0; i < sp->number; i++){
02507 std::cout << "gradient value " << sp->values[i] << std::endl;
02508 }
02509 ok = true;
02510
02511 double checkPartial2Con1 = 7.0 ;
02512
02513 ok = ( fabs(checkPartial2Con1 - sp->values[ 0] )/(fabs( checkPartial2Con1) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
02514 if(ok == false) throw ErrorClass(" Fail testing gradient calculation");
02515 double checkPartial0Con1 = (1./x[0]) ;
02516
02517 ok = ( fabs(checkPartial0Con1 - sp->values[ 1] )/(fabs( checkPartial0Con1) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
02518 if(ok == false) throw ErrorClass(" Fail testing gradient calculation");
02519 double checkPartial3Con1 = (1./x[3]) ;
02520
02521 ok = ( fabs(checkPartial3Con1 - sp->values[ 2] )/(fabs( checkPartial3Con1) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
02522 if(ok == false) throw ErrorClass(" Fail testing gradient calculation");
02523 delete sp;
02524 SparseHessianMatrix *sh;
02525
02526 osinstance->getLagrangianHessianSparsityPattern( );
02527 sh = osinstance->calculateHessian(x, -1, true);
02528 for(int i = 0; i < sh->hessDimension; i++){
02529 std::cout << "Hessian value " << sh->hessValues[i] << std::endl;
02530 }
02531
02532 ok = ( fabs(2. - sh->hessValues[0] )/(2. + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
02533 if(ok == false) throw ErrorClass(" Fail testing Hessian calculation");
02534
02535 ok = ( fabs(0. - sh->hessValues[ 1] )/(0. + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
02536 if(ok == false) throw ErrorClass(" Fail testing Hessian calculation");
02537
02538 ok = ( fabs(0. - sh->hessValues[2] )/(0. + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
02539 if(ok == false) throw ErrorClass(" Fail testing Hessian calculation");
02540 delete[] x;
02541 delete osilreader;
02542 osilreader = NULL;
02543 unitTestResult << "TEST " << nOfTest << ": Successful test of AD gradient and Hessian calculations" << std::endl;
02544 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
02545 }
02546 catch(const ErrorClass& eclass){
02547 cout << endl << endl << endl;
02548 unitTestResultFailure << eclass.errormsg << endl;
02549 }
02550 }
02551
02552
02553
02554 if (PARSER_TESTS){
02555
02556
02557 try{
02558 cout << endl << "TEST " << ++nOfTest << ": OSiL parser" << endl << endl;
02559 clock_t start, finish;
02560 double duration;
02561 OSiLWriter *osilwriter = NULL;
02562 osilwriter = new OSiLWriter();
02563
02564
02565
02566 cout << "Test parsing a model" << endl;
02567 cout << "First read the file into a string" << endl;
02568 start = clock();
02569 osilFileName = dataDir + "osilFiles" + dirsep + "parincLinear.osil";
02570 osil = fileUtil->getFileAsString( osilFileName.c_str());
02571 finish = clock();
02572 duration = (double) (finish - start) / CLOCKS_PER_SEC;
02573 cout << "Reading the file into a string took (seconds): "<< duration << endl;
02574 OSiLReader *osilreader = NULL;
02575 osilreader = new OSiLReader();
02576 start = clock();
02577 cout << "PARSE THE OSIL STRING INTO AN OSINSTANCE OBJECT" << endl;
02578 osilreader->readOSiL( osil);
02579
02580 delete osilreader;
02581 osilreader = 0;
02582 delete osilwriter;
02583 osilwriter = NULL;
02584 finish = clock();
02585 duration = (double) (finish - start) / CLOCKS_PER_SEC;
02586 cout << "Parsing took (seconds): "<< duration << endl;
02587 unitTestResult << "TEST " << nOfTest << ": Successful test of OSiL parser on problem parincLinear.osil" << std::endl;
02588 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
02589 }
02590 catch(const ErrorClass& eclass){
02591 cout << endl << endl << endl;
02592 cout << eclass.errormsg << endl;
02593 unitTestResultFailure << "Sorry Unit Test Failed Testing An OSiL Parser" << endl;
02594
02595 }
02596
02597
02598
02599
02600 try{
02601 cout << endl << "TEST " << ++nOfTest << ": Stochastic extensions to OSiL" << endl << endl;
02602 clock_t start, finish;
02603 double duration;
02604 OSiLWriter *osilwriter = NULL;
02605 osilwriter = new OSiLWriter();
02606
02607
02608
02609 cout << "\nTest parsing a stochastic model" << endl;
02610 cout << "First read the file into a string" << endl;
02611 start = clock();
02612 osilFileName = dataDir + "osilFiles" + dirsep + "finplan1.osil";
02613 osil = fileUtil->getFileAsString( &osilFileName[0]);
02614 finish = clock();
02615 duration = (double) (finish - start) / CLOCKS_PER_SEC;
02616 cout << "Reading the file into a string took (seconds): "<< duration << endl;
02617 OSiLReader *osilreader = NULL;
02618 osilreader = new OSiLReader();
02619 start = clock();
02620 cout << "PARSE THE OSIL STRING INTO AN OSINSTANCE OBJECT" << endl;
02621 osilreader->readOSiL( osil);
02622
02623 delete osilreader;
02624 osilreader = 0;
02625 delete osilwriter;
02626 osilwriter = NULL;
02627 finish = clock();
02628 duration = (double) (finish - start) / CLOCKS_PER_SEC;
02629 cout << "Parsing took (seconds): "<< duration << endl;
02630 unitTestResult << "TEST " << nOfTest << ": Successful test of OSiL parser on problem finplan1.osil" << std::endl;
02631 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
02632 }
02633 catch(const ErrorClass& eclass){
02634 cout << endl << endl << endl;
02635 cout << eclass.errormsg << endl;
02636 unitTestResultFailure << "Error parsing an osil file with time domain information" << endl;
02637 }
02641 try{
02642 cout << endl << "TEST " << ++nOfTest << ": GET() AND SET() METHODS FOR TimeDomain OBJECT" << endl << endl;
02643 OSInstance *osinstance = NULL;
02644
02645
02646 osilreader = new OSiLReader();
02647
02648 osinstance = osilreader->readOSiL( osil);
02649 std::string f = osinstance->getTimeDomainFormat();
02650 ok = (f == "stages");
02651 int n = osinstance->getTimeDomainStageNumber();
02652 ok &= (n == 6);
02653
02654 std::string* sncheck = new std::string[6];
02655 sncheck[0] = "";
02656 sncheck[1] = "";
02657 sncheck[2] = "";
02658 sncheck[3] = "test";
02659 sncheck[4] = "Wha'zzup?";
02660 sncheck[5] = "";
02661
02662 std::string* sn = osinstance->getTimeDomainStageNames();
02663
02664 for (int i = 0; i < 6; i++)
02665 ok &= (sn[i] == sncheck[i]);
02666
02667 int* nv = osinstance->getTimeDomainStageNumberOfVariables();
02668
02669 int* nvcheck = new int[6];
02670 nvcheck[0] = 2;
02671 nvcheck[1] = 2;
02672 nvcheck[2] = 0;
02673 nvcheck[3] = 0;
02674 nvcheck[4] = 2;
02675 nvcheck[5] = 2;
02676
02677 for (int i = 0; i < 6; i++)
02678 ok &= (nv[i] == nvcheck[i]);
02679
02680 int* nc = osinstance->getTimeDomainStageNumberOfConstraints();
02681
02682 int* nccheck = new int[6];
02683 nccheck[0] = 1;
02684 nccheck[1] = 1;
02685 nccheck[2] = 0;
02686 nccheck[3] = 0;
02687 nccheck[4] = 1;
02688 nccheck[5] = 1;
02689
02690 for (int i = 0; i < 6; i++)
02691 ok &= (nc[i] == nccheck[i]);
02692
02693 int* no = osinstance->getTimeDomainStageNumberOfObjectives();
02694
02695 int* nocheck = new int[6];
02696 nocheck[0] = 1;
02697 nocheck[1] = 1;
02698 nocheck[2] = 1;
02699 nocheck[3] = 0;
02700 nocheck[4] = 1;
02701 nocheck[5] = 1;
02702
02703 for (int i = 0; i < 6; i++)
02704 ok &= (no[i] == nocheck[i]);
02705
02706 int** lv = osinstance->getTimeDomainStageVarList();
02707 int** lc = osinstance->getTimeDomainStageConList();
02708 int** lo = osinstance->getTimeDomainStageObjList();
02709
02710 int** lvcheck = new int*[6];
02711 int** lccheck = new int*[6];
02712 int** locheck = new int*[6];
02713 for (int i = 0; i < 6; i++) {
02714 lvcheck[i] = new int[2];
02715 lccheck[i] = new int[2];
02716 locheck[i] = new int[2];
02717 };
02718 lvcheck[0][0] = 0;
02719 lvcheck[0][1] = 1;
02720 lvcheck[1][0] = 2;
02721 lvcheck[1][1] = 3;
02722 lvcheck[4][0] = 4;
02723 lvcheck[4][1] = 5;
02724 lvcheck[5][0] = 6;
02725 lvcheck[5][1] = 7;
02726 lccheck[0][0] = 0;
02727 lccheck[1][0] = 1;
02728 lccheck[4][0] = 2;
02729 lccheck[5][0] = 3;
02730 locheck[0][0] = -1;
02731 locheck[1][0] = -1;
02732 locheck[2][0] = -1;
02733 locheck[4][0] = -1;
02734 locheck[5][0] = -1;
02735
02736 for (int i = 0; i < 6; i++) {
02737 for (int j = 0; j < nv[i]; j++)
02738 ok &= (lvcheck[i][j] == lv[i][j]);
02739 for (int j = 0; j < nc[i]; j++)
02740 ok &= (lccheck[i][j] == lc[i][j]);
02741 for (int j = 0; j < no[i]; j++)
02742 ok &= (locheck[i][j] == lo[i][j]);
02743 };
02744
02745 std::string* sn1 = new std::string[6];
02746 int* nv1 = new int[6];
02747 int* nc1 = new int[6];
02748 int* no1 = new int[6];
02749 int** lv1 = new int*[6];
02750 int** lc1 = new int*[6];
02751 int** lo1 = new int*[6];
02752 for (int i = 0; i < 6; i++) {
02753 lv1[i] = new int[2];
02754 lc1[i] = new int[2];
02755 lo1[i] = new int[2];
02756 };
02757 for (int i = 0; i < 6; i++) {
02758 sn1[i] = sn[i];
02759 nv1[i] = nv[i];
02760 nc1[i] = nc[i];
02761 no1[i] = no[i];
02762 for (int j = 0; j < nv[i]; j++) {
02763 lv1[i][j] = lv[i][j];
02764 };
02765 for (int j = 0; j < nc[i]; j++) {
02766 lc1[i][j] = lc[i][j];
02767 };
02768 for (int j = 0; j < no[i]; j++) {
02769 lo1[i][j] = lo[i][j];
02770 };
02771 };
02772
02773 ok &= osinstance->setTimeDomain("none");
02774 n = 0;
02775 ok &= osinstance->setTimeDomainStages(n,NULL);
02776 ok &= osinstance->setTimeDomainStages(4,NULL);
02777
02778 n = osinstance->getTimeDomainStageNumber();
02779 ok &= (n == 4);
02780
02781 int *nelem, *startIdx, **VI;
02782 nelem = new int[4];
02783 startIdx = new int[4];
02784 VI = new int*[4];
02785 for (int i = 0; i < 4; i++)
02786 { nelem[i] = 2;
02787 startIdx[i] = 2*i;
02788 VI[i] = new int[2];
02789 VI[i][0] = 2*i;
02790 VI[i][1] = 2*i + 1;
02791 };
02792 ok &= osinstance->setTimeDomainStageVariablesUnordered(4,nelem,VI);
02793
02794 for (int i = 0; i < 4; i++)
02795 { nelem[i] = 1;
02796 startIdx[i] = i;
02797 };
02798 ok &= osinstance->setTimeDomainStageConstraintsOrdered(4,nelem,startIdx);
02799
02800 for (int i = 0; i < 4; i++)
02801 { nelem[i] = 1;
02802 startIdx[i] = -1;
02803 };
02804 ok &= osinstance->setTimeDomainStageObjectivesOrdered(4,nelem,startIdx);
02805
02806 ok &= osinstance->setTimeDomain("none");
02807
02808 ok &= osinstance->setTimeDomain("interval");
02809
02810 ok &= osinstance->setTimeDomainInterval(0.0, 1.0);
02811 double lower = osinstance->getTimeDomainIntervalStart();
02812 ok &= (lower == 0.0);
02813 double upper = osinstance->getTimeDomainIntervalHorizon();
02814 ok &= (upper == 1.0);
02815
02816 ok &= osinstance->setTimeDomain("none");
02817
02818 ok &= osinstance->setTimeDomainStages(6,sncheck);
02819 ok &= osinstance->setTimeDomainStageVariablesUnordered(6,nvcheck,lvcheck);
02820 ok &= osinstance->setTimeDomainStageObjectivesUnordered(6,nocheck,locheck);
02821 ok &= osinstance->setTimeDomainStageConstraintsUnordered(6,nccheck,lccheck);
02822 int n2 = osinstance->getTimeDomainStageNumber();
02823 ok &= (n2 == 6);
02824 std::string* sn2 = osinstance->getTimeDomainStageNames();
02825 int* nv2 = osinstance->getTimeDomainStageNumberOfVariables();
02826 int* nc2 = osinstance->getTimeDomainStageNumberOfConstraints();
02827 int* no2 = osinstance->getTimeDomainStageNumberOfObjectives();
02828 int** lv2 = osinstance->getTimeDomainStageVarList();
02829 int** lc2 = osinstance->getTimeDomainStageConList();
02830 int** lo2 = osinstance->getTimeDomainStageObjList();
02831 for (int i = 0; i < n2; i++)
02832 { ok &= (sn2[i] == sncheck[i]);
02833 ok &= (nv2[i] == nvcheck[i]);
02834 ok &= (nc2[i] == nccheck[i]);
02835 ok &= (no2[i] == nocheck[i]);
02836 for (int j = 0; j < nv2[i]; j++)
02837 ok &= (lv2[i][j] == lvcheck[i][j]);
02838 for (int j = 0; j < nc2[i]; j++)
02839 ok &= (lc2[i][j] == lccheck[i][j]);
02840 for (int j = 0; j < no2[i]; j++)
02841 ok &= (lo2[i][j] == locheck[i][j]);
02842 };
02843 delete [] sncheck;
02844 sncheck = NULL;
02845 delete [] nvcheck;
02846 nvcheck = NULL;
02847 delete [] nccheck;
02848 nccheck = NULL;
02849 delete [] nocheck;
02850 nocheck = NULL;
02851 for (int i = 0; i < 6; i++) {
02852 delete [] lvcheck[i];
02853 delete [] lccheck[i];
02854 delete [] locheck[i];
02855 delete [] lv1[i];
02856 delete [] lc1[i];
02857 delete [] lo1[i];
02858 };
02859 delete [] lvcheck;
02860 lvcheck = NULL;
02861 delete [] lccheck;
02862 lccheck = NULL;
02863 delete [] locheck;
02864 locheck = NULL;
02865 delete [] lv1;
02866 lv1 = NULL;
02867 delete [] lc1;
02868 lc1 = NULL;
02869 delete [] lo1;
02870 lo1 = NULL;
02871 delete [] sn1;
02872 sn1 = NULL;
02873 delete[] nv1;
02874 nv1 = NULL;
02875 delete[] nc1;
02876 nc1 = NULL;
02877 delete[] no1;
02878 no1 = NULL;
02879 delete [] nelem;
02880 nelem = NULL;
02881 delete [] startIdx;
02882 startIdx = NULL;
02883 for (int i = 0; i < 4; i++) {
02884 delete [] VI[i];
02885 };
02886 delete [] VI;
02887 VI = NULL;
02888 delete osilreader;
02889 unitTestResult << "TEST " << nOfTest << ": Successful test of osinstance get() and set() methods" << std::endl;
02890 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
02891 }
02892 catch(const ErrorClass& eclass){
02893 cout << endl << endl << endl;
02894 cout << eclass.errormsg << endl;
02895 unitTestResultFailure << "Sorry Unit Test Failed osinstance get() and set() Methods" << endl;
02896 }
02897
02898
02899
02900 OSoLWriter *osolwriter = NULL;
02901
02902
02903
02904
02905 try{
02919 cout << endl << "TEST " << ++nOfTest << ": OSoL parser" << endl << endl;
02920 std::string tmpOSoL;
02921 clock_t start, finish;
02922 double duration;
02923 osolwriter = new OSoLWriter();
02924 osolreader = new OSoLReader();
02925 OSOption *osoption = NULL;
02926
02927 cout << "Test parsing an OSoL file" << endl;
02928 cout << "First read the OSoL file into a string" << endl;
02929 osolFileName = dataDir + "osolFiles" + dirsep + "parsertest.osol";
02930 cout << osolFileName << endl;
02931 start = clock();
02932 std::string osol = fileUtil->getFileAsString( osolFileName.c_str() );
02933 finish = clock();
02934 duration = (double) (finish - start) / CLOCKS_PER_SEC;
02935 cout << "Reading the file into a string took (seconds): "<< duration << endl;
02936 start = clock();
02937 cout << "PARSE THE OSOL STRING INTO AN OSOPTION OBJECT" << endl;
02938 osoption = osolreader->readOSoL( osol);
02939
02940
02941 cout << endl << "Test the add() methods" << endl;
02942
02943 ok = osoption->setAnOtherGeneralOption("testing","one","two three");
02944 ok = osoption->setOtherSystemOptions(0,NULL) && ok;
02945 ok = osoption->setAnOtherSystemOption("Ho Ho Ho","","") && ok;
02946 ok = osoption->setAnOtherServiceOption("OneMore","Option","To Go") && ok;
02947 ok = osoption->setAnotherJobDependency("DoReMi") && ok;
02948 ok = osoption->setAnotherRequiredDirectory("C:\\MSYS") && ok;
02949 ok = osoption->setAnotherRequiredFile("C:\\MSYS\\junk.tmp") && ok;
02950 ok = osoption->setAnotherDirectoryToMake("C:\\tempdir") && ok;
02951 ok = osoption->setAnotherFileToMake("C:\\tempdir\\temp.tmp") && ok;
02952 ok = osoption->setAnotherInputDirectoryToMove("C:\\tempdir","C:\\OS\\calc",true) && ok;
02953 ok = osoption->setAnotherInputFileToMove("C:\\OS\\parinc.osil","C:\\OS\\calc\\input.osil",true) && ok;
02954 ok = osoption->setAnotherOutputFileToMove("C:\\OS\\calc\\putput.osrl","C:\\OS\\parinc.osol",false) && ok;
02955 ok = osoption->setAnotherOutputDirectoryToMove("C:\\OS\\calc","C:\\OS\\save",false) && ok;
02956 ok = osoption->setAnotherFileToDelete("C:\\OS\\calc\\input.osil") && ok;
02957 ok = osoption->setAnotherDirectoryToDelete("C:\\tempdir") && ok;
02958 ok = osoption->setAnotherProcessToKill("ABC123") && ok;
02959 ok = osoption->setAnOtherJobOption("DoReMi","ABC","One Two Three") && ok;
02960 ok = osoption->setAnotherInitVarValue(5,12.3) && ok;
02961 ok = osoption->setAnotherInitVarValueString(6,"BLUE") && ok;
02962 ok = osoption->setAnotherInitBasisStatus(6,"unknown") && ok;
02963 ok = osoption->setAnotherIntegerVariableBranchingWeight(5,100.) && ok;
02964
02965 int SOS3idx[2];
02966 double SOS3val[2];
02967 SOS3idx[0] = 3;
02968 SOS3idx[1] = 6;
02969 SOS3val[0] = 1.0;
02970 SOS3val[1] = 2.0;
02971 int tnvar;
02972 tnvar = osoption->getNumberOfSOS();
02973 ok = osoption->setAnotherSOSVariableBranchingWeight(3,2,1.0,SOS3idx,SOS3val) && ok;
02974 assert (osoption->getNumberOfSOS() == (tnvar + 1));
02975 assert (osoption->optimization->variables->sosVariableBranchingWeights->sos[tnvar]->var[0]->idx == 3);
02976 assert (osoption->optimization->variables->sosVariableBranchingWeights->sos[tnvar]->var[1]->idx == 6);
02977 assert (osoption->optimization->variables->sosVariableBranchingWeights->sos[tnvar]->var[0]->value == 1.0);
02978 assert (osoption->optimization->variables->sosVariableBranchingWeights->sos[tnvar]->var[1]->value == 2.0);
02979 #ifdef DEBUG
02980 cout << endl << "another SOS has been added" << endl << endl;
02981 #endif
02982
02983 OtherVariableOption *varopt;
02984 varopt = new OtherVariableOption();
02985 varopt->name = "testVarOpt";
02986 varopt->numberOfVar = 0;
02987 ok = osoption->setAnOtherVariableOption(varopt) && ok;
02988 delete varopt;
02989 varopt = NULL;
02990
02991 OtherObjectiveOption *objopt;
02992 objopt = new OtherObjectiveOption();
02993 objopt->name = "testObjOpt";
02994 objopt->numberOfObj = 0;
02995 ok = osoption->setAnOtherObjectiveOption(objopt) && ok;
02996 delete objopt;
02997 objopt = NULL;
02998
02999 ok = osoption->setAnotherInitConValue(2,17.0) && ok;
03000 ok = osoption->setAnotherInitDualVarValue(2,0.0,DBL_MAX) && ok;
03001
03002 OtherConstraintOption *conopt;
03003 conopt = new OtherConstraintOption();
03004 conopt->name = "testObjOpt";
03005 conopt->numberOfCon = 2;
03006 conopt->con = new OtherConOption*[2];
03007 conopt->con[0] = new OtherConOption();
03008 conopt->con[0]->idx = 0;
03009 conopt->con[0]->value = "3.0";
03010 conopt->con[1] = new OtherConOption();
03011 conopt->con[1]->idx = 1;
03012 conopt->con[1]->lbValue = "0.0";
03013 conopt->con[1]->ubValue = "10.0";
03014 ok = osoption->setAnOtherConstraintOption(conopt) && ok;
03015 delete conopt;
03016 conopt = NULL;
03017
03018 ok = osoption->setAnotherSolverOption("HoHum","gus","PhoNY","","test","") && ok;
03019
03020 if (!ok)
03021 throw ErrorClass(" Could not add to osoption data structure");
03022
03023
03024 std::string optionstring;
03025 int option_i;
03026 double option_d;
03027 OSOption* osoption2 = new OSOption();
03028
03029 cout << endl << "transfer osoption to another OSOption object" << endl;
03030
03031 optionstring = osoption->getServiceURI();
03032 ok = osoption2->setServiceURI(optionstring);
03033 #ifdef DEBUG
03034 if (!ok)
03035 throw ErrorClass(" error in get/set ServiceURI");
03036 #endif
03037
03038 optionstring = osoption->getServiceName();
03039 ok = osoption2->setServiceName(optionstring) && ok;
03040 #ifdef DEBUG
03041 if (!ok)
03042 throw ErrorClass(" error in get/set ServiceName");
03043 #endif
03044
03045 optionstring = osoption->getInstanceName();
03046 ok = osoption2->setInstanceName(optionstring) && ok;
03047 #ifdef DEBUG
03048 if (!ok)
03049 throw ErrorClass(" error in get/set InstanceName");
03050 #endif
03051
03052 optionstring = osoption->getInstanceLocation();
03053 ok = osoption2->setInstanceLocation(optionstring) && ok;
03054 #ifdef DEBUG
03055 if (!ok)
03056 throw ErrorClass(" error in get/set InstanceLocation");
03057 #endif
03058
03059 optionstring = osoption->getInstanceLocationType();
03060 ok = osoption2->setInstanceLocationType(optionstring) && ok;
03061 #ifdef DEBUG
03062 if (!ok)
03063 throw ErrorClass(" error in get/set InstanceLocationtype");
03064 #endif
03065
03066 optionstring = osoption->getJobID();
03067 ok = osoption2->setJobID(optionstring) && ok;
03068 #ifdef DEBUG
03069 if (!ok)
03070 throw ErrorClass(" error in get/set JobID");
03071 #endif
03072
03073 optionstring = osoption->getSolverToInvoke();
03074 ok = osoption2->setSolverToInvoke(optionstring) && ok;
03075 #ifdef DEBUG
03076 if (!ok)
03077 throw ErrorClass(" error in get/set SolverToInvoke");
03078 #endif
03079
03080 optionstring = osoption->getInstanceLocationType();
03081 ok = osoption2->setInstanceLocationType(optionstring) && ok;
03082 #ifdef DEBUG
03083 if (!ok)
03084 throw ErrorClass(" error in get/set InstanceLocationType");
03085 #endif
03086
03087 optionstring = osoption->getUserName();
03088 ok = osoption2->setUserName(optionstring) && ok;
03089 #ifdef DEBUG
03090 if (!ok)
03091 throw ErrorClass(" error in get/set UserName");
03092 #endif
03093
03094 optionstring = osoption->getPassword();
03095 #ifdef DEBUG
03096 if (!ok)
03097 throw ErrorClass(" error in get/set Password");
03098 #endif
03099 ok = osoption2->setPassword(optionstring) && ok;
03100
03101 optionstring = osoption->getContact();
03102 ok = osoption2->setContact(optionstring) && ok;
03103 #ifdef DEBUG
03104 if (!ok)
03105 throw ErrorClass(" error in get/set Contact");
03106 #endif
03107
03108 optionstring = osoption->getContactTransportType();
03109 ok = osoption2->setContactTransportType(optionstring) && ok;
03110 #ifdef DEBUG
03111 if (!ok)
03112 throw ErrorClass(" error in get/set TransportType");
03113 #endif
03114
03115 int nopt;
03116 OtherOption** otherOpt;
03117 nopt = osoption->getNumberOfOtherGeneralOptions();
03118 otherOpt = osoption->getOtherGeneralOptions();
03119 ok = osoption2->setOtherGeneralOptions(nopt, otherOpt) && ok;
03120 #ifdef DEBUG
03121 if (!ok)
03122 throw ErrorClass(" error in get/set OtherGeneralOption");
03123 #endif
03124
03125 option_d = osoption->getMinDiskSpace();
03126 ok = osoption2->setMinDiskSpace(option_d) && ok;
03127 #ifdef DEBUG
03128 if (!ok)
03129 throw ErrorClass(" error in get/set MinDiskSpace");
03130 #endif
03131
03132 optionstring = osoption->getMinDiskSpaceUnit();
03133 ok = osoption2->setMinDiskSpaceUnit(optionstring) && ok;
03134 #ifdef DEBUG
03135 if (!ok)
03136 throw ErrorClass(" error in get/set MinDiskSpaceUnit");
03137 #endif
03138
03139 option_d = osoption->getMinMemorySize();
03140 ok = osoption2->setMinMemorySize(option_d) && ok;
03141 #ifdef DEBUG
03142 if (!ok)
03143 throw ErrorClass(" error in get/set MinMemorySize");
03144 #endif
03145
03146 optionstring = osoption->getMinMemoryUnit();
03147 ok = osoption2->setMinMemoryUnit(optionstring) && ok;
03148 #ifdef DEBUG
03149 if (!ok)
03150 throw ErrorClass(" error in get/set MinMemoryUnit");
03151 #endif
03152
03153 option_d = osoption->getMinCPUSpeed();
03154 ok = osoption2->setMinCPUSpeed(option_d) && ok;
03155 #ifdef DEBUG
03156 if (!ok)
03157 throw ErrorClass(" error in get/set MinCPUSpeed");
03158 #endif
03159
03160 optionstring = osoption->getMinCPUSpeedUnit();
03161 ok = osoption2->setMinCPUSpeedUnit(optionstring) && ok;
03162 #ifdef DEBUG
03163 if (!ok)
03164 throw ErrorClass(" error in get/set MinCPUSpeedUnit");
03165 #endif
03166
03167 option_i = osoption->getMinCPUNumber();
03168 ok = osoption2->setMinCPUNumber(option_i) && ok;
03169 #ifdef DEBUG
03170 if (!ok)
03171 throw ErrorClass(" error in get/set MinCPUNumber");
03172 #endif
03173
03174 OtherOption** otherOpt2;
03175 nopt = osoption->getNumberOfOtherSystemOptions();
03176 otherOpt2 = osoption->getOtherSystemOptions();
03177 ok = osoption2->setOtherSystemOptions(nopt, otherOpt2) && ok;
03178 #ifdef DEBUG
03179 if (!ok)
03180 throw ErrorClass(" error in get/set OtherSystemOptions");
03181 #endif
03182
03183
03184 optionstring = osoption->getServiceType();
03185 ok = osoption2->setServiceType(optionstring) && ok;
03186 #ifdef DEBUG
03187 if (!ok)
03188 throw ErrorClass(" error in get/set ServiceType");
03189 #endif
03190
03191 OtherOption** otherOpt3;
03192 nopt = osoption->getNumberOfOtherServiceOptions();
03193 otherOpt3 = osoption->getOtherServiceOptions();
03194 ok = osoption2->setOtherServiceOptions(nopt, otherOpt3) && ok;
03195 #ifdef DEBUG
03196 if (!ok)
03197 throw ErrorClass(" error in get/set OtherServiceOptions");
03198 #endif
03199
03200
03201 option_d = osoption->getMaxTime();
03202 ok = osoption2->setMaxTime(option_d) && ok;
03203 #ifdef DEBUG
03204 if (!ok)
03205 throw ErrorClass(" error in get/set MaxTime");
03206 #endif
03207
03208 optionstring = osoption->getMaxTimeUnit();
03209 ok = osoption2->setMaxTimeUnit(optionstring) && ok;
03210 #ifdef DEBUG
03211 if (!ok)
03212 throw ErrorClass(" error in get/set MaxTimeUnit");
03213 #endif
03214
03215 optionstring = osoption->getRequestedStartTime();
03216 ok = osoption2->setRequestedStartTime(optionstring) && ok;
03217 #ifdef DEBUG
03218 if (!ok)
03219 throw ErrorClass(" error in get/set RequestedStartTime");
03220 #endif
03221
03222 nopt = osoption->getNumberOfJobDependencies();
03223 std::string* tJobID = osoption->getJobDependencies();
03224 ok = osoption2->setJobDependencies(nopt, tJobID) && ok;
03225 #ifdef DEBUG
03226 if (!ok)
03227 throw ErrorClass(" error in get/set JobDependencies");
03228 #endif
03229
03230 nopt = osoption->getNumberOfRequiredDirectories();
03231 std::string* reqDir = osoption->getRequiredDirectories();
03232 ok = osoption2->setRequiredDirectories(nopt, reqDir) && ok;
03233 #ifdef DEBUG
03234 if (!ok)
03235 throw ErrorClass(" error in get/set RequiredDirectories");
03236 #endif
03237
03238 nopt = osoption->getNumberOfRequiredFiles();
03239 std::string* reqFil = osoption->getRequiredFiles();
03240 ok = osoption2->setRequiredFiles(nopt, reqFil) && ok;
03241 #ifdef DEBUG
03242 if (!ok)
03243 throw ErrorClass(" error in get/set RequiredFiles");
03244 #endif
03245
03246 nopt = osoption->getNumberOfDirectoriesToMake();
03247 std::string* mkDir = osoption->getDirectoriesToMake();
03248 ok = osoption2->setDirectoriesToMake(nopt, mkDir) && ok;
03249 #ifdef DEBUG
03250 if (!ok)
03251 throw ErrorClass(" error in get/set DirectoriesToMake");
03252 #endif
03253
03254 nopt = osoption->getNumberOfFilesToMake();
03255 std::string* mkFil = osoption->getFilesToMake();
03256 ok = osoption2->setFilesToMake(nopt, mkFil) && ok;
03257 #ifdef DEBUG
03258 if (!ok)
03259 throw ErrorClass(" error in get/set FilesToMake");
03260 #endif
03261
03262 nopt = osoption->getNumberOfInputDirectoriesToMove();
03263 PathPair** inDMv = osoption->getInputDirectoriesToMove();
03264 ok = osoption2->setInputDirectoriesToMove(nopt, inDMv) && ok;
03265 #ifdef DEBUG
03266 if (!ok)
03267 throw ErrorClass(" error in get/set InputDirectoriesToMove");
03268 #endif
03269
03270 nopt = osoption->getNumberOfInputFilesToMove();
03271 PathPair** inFMv = osoption->getInputFilesToMove();
03272 ok = osoption2->setInputFilesToMove(nopt, inFMv) && ok;
03273 #ifdef DEBUG
03274 if (!ok)
03275 throw ErrorClass(" error in get/set InputFilesToMove");
03276 #endif
03277
03278 nopt = osoption->getNumberOfOutputFilesToMove();
03279 PathPair** outFMv = osoption->getOutputFilesToMove();
03280 ok = osoption2->setOutputFilesToMove(nopt, outFMv) && ok;
03281 #ifdef DEBUG
03282 if (!ok)
03283 throw ErrorClass(" error in get/set OutputFilesToMove");
03284 #endif
03285
03286 nopt = osoption->getNumberOfOutputDirectoriesToMove();
03287 PathPair** outDMv = osoption->getOutputDirectoriesToMove();
03288 ok = osoption2->setOutputDirectoriesToMove(nopt, outDMv) && ok;
03289 #ifdef DEBUG
03290 if (!ok)
03291 throw ErrorClass(" error in get/set OutputDirectoriesToMove");
03292 #endif
03293
03294 nopt = osoption->getNumberOfFilesToDelete();
03295 std::string* rmFil = osoption->getFilesToDelete();
03296 ok = osoption2->setFilesToDelete(nopt, rmFil) && ok;
03297 #ifdef DEBUG
03298 if (!ok)
03299 throw ErrorClass(" error in get/set FilesToDelete");
03300 #endif
03301
03302 nopt = osoption->getNumberOfDirectoriesToDelete();
03303 std::string* rmDir = osoption->getDirectoriesToDelete();
03304 ok = osoption2->setDirectoriesToDelete(nopt, rmDir) && ok;
03305 #ifdef DEBUG
03306 if (!ok)
03307 throw ErrorClass(" error in get/set DirectoriesToDelete");
03308 #endif
03309
03310 nopt = osoption->getNumberOfProcessesToKill();
03311 std::string* rmProc = osoption->getProcessesToKill();
03312 ok = osoption2->setProcessesToKill(nopt, rmProc) && ok;
03313 #ifdef DEBUG
03314 if (!ok)
03315 throw ErrorClass(" error in get/set ProcessesToKill");
03316 #endif
03317
03318 OtherOption** otherOpt4;
03319 nopt = osoption->getNumberOfOtherJobOptions();
03320 otherOpt4 = osoption->getOtherJobOptions();
03321 ok = osoption2->setOtherJobOptions(nopt, otherOpt4) && ok;
03322 #ifdef DEBUG
03323 if (!ok)
03324 throw ErrorClass(" error in get/set OtherJobOptions");
03325 #endif
03326
03327 int nvar, nobj, ncon;
03328
03329
03330
03331
03332
03333
03334
03335 nvar = 10;
03336 nobj = 1;
03337 ncon = 4;
03338 #ifdef DEBUG
03339 if (!ok)
03340 throw ErrorClass(" error in get/set problem dimensions");
03341 #endif
03342
03343
03344 double* IVV;
03345 IVV = osoption->getInitVarValuesDense(nvar);
03346 ok = osoption2->setInitVarValuesDense(nvar, IVV) && ok;
03347 #ifdef DEBUG
03348 if (!ok)
03349 throw ErrorClass(" error in get/set InitVarValues");
03350 #endif
03351
03352 nopt = osoption->getNumberOfInitVarValuesString();
03353 InitVarValueString** IVV2;
03354 IVV2 = osoption->getInitVarValuesStringSparse();
03355 ok = osoption2->setInitVarValuesStringSparse(nopt, IVV2) && ok;
03356 #ifdef DEBUG
03357 if (!ok)
03358 throw ErrorClass(" error in get/set InitVarValuesString");
03359 #endif
03360
03361 std::string* IBS;
03362 IBS = osoption->getInitBasisStatusDense(nvar);
03363 ok = osoption2->setInitBasisStatusDense(nvar, IBS) && ok;
03364 #ifdef DEBUG
03365 if (!ok)
03366 throw ErrorClass(" error in get/set InitBasisStatus");
03367 #endif
03368
03369 double* IVBW;
03370 IVBW = osoption->getIntegerVariableBranchingWeightsDense(nvar);
03371 ok = osoption2->setIntegerVariableBranchingWeightsDense(nvar, IVBW) && ok;
03372 #ifdef DEBUG
03373 if (!ok)
03374 throw ErrorClass(" error in get/set IntegerVariableBranchingWeights");
03375 #endif
03376
03377 SOSWeights** sos;
03378 sos = osoption->getSOSVariableBranchingWeightsSparse();
03379 nopt = osoption->getNumberOfSOS();
03380 ok = osoption2->setSOSVariableBranchingWeights(nopt, sos) && ok;
03381 #ifdef DEBUG
03382 if (!ok)
03383 throw ErrorClass(" error in get/set SOSVariableBranchingWeights");
03384 #endif
03385
03386 OtherVariableOption** otherV;
03387 otherV = osoption->getAllOtherVariableOptions();
03388 nopt = osoption->getNumberOfOtherVariableOptions();
03389 ok = osoption2->setOtherVariableOptions(nopt, otherV) && ok;
03390 #ifdef DEBUG
03391 if (!ok)
03392 throw ErrorClass(" error in get/set OtherVariableOptions");
03393 #endif
03394
03395 double* IOV;
03396 IOV = osoption->getInitObjValuesDense(nobj);
03397 ok = osoption2->setInitObjValuesDense(nobj, IOV) && ok;
03398 #ifdef DEBUG
03399 if (!ok)
03400 throw ErrorClass(" error in get/set InitObjValues");
03401 #endif
03402
03403 nopt = osoption->getNumberOfInitObjBounds();
03404 InitObjBound** IOB;
03405 IOB = osoption->getInitObjBoundsSparse();
03406 ok = osoption2->setInitObjBoundsSparse(nopt, IOB) && ok;
03407 #ifdef DEBUG
03408 if (!ok)
03409 throw ErrorClass(" error in get/set InitObjBounds");
03410 #endif
03411
03412 OtherObjectiveOption** otherO;
03413 otherO = osoption->getAllOtherObjectiveOptions();
03414 nopt = osoption->getNumberOfOtherObjectiveOptions();
03415 ok = osoption2->setOtherObjectiveOptions(nopt, otherO) && ok;
03416 #ifdef DEBUG
03417 if (!ok)
03418 throw ErrorClass(" error in get/set OtherObjectiveOptions");
03419 #endif
03420
03421
03422 double* ICV;
03423 ICV = osoption->getInitConValuesDense(ncon);
03424 ok = osoption2->setInitConValuesDense(ncon, ICV) && ok;
03425 #ifdef DEBUG
03426 if (!ok)
03427 throw ErrorClass(" error in get/set InitConValues");
03428 #endif
03429
03430 nopt = osoption->getNumberOfInitDualVarValues();
03431 InitDualVarValue** IDV;
03432 IDV = osoption->getInitDualVarValuesSparse();
03433 ok = osoption2->setInitDualVarValuesSparse(nopt, IDV) && ok;
03434 #ifdef DEBUG
03435 if (!ok)
03436 throw ErrorClass(" error in get/set InitDualVarValues");
03437 #endif
03438
03439 OtherConstraintOption** otherC;
03440 otherC = osoption->getAllOtherConstraintOptions();
03441 nopt = osoption->getNumberOfOtherConstraintOptions();
03442 ok = osoption2->setOtherConstraintOptions(nopt, otherC) && ok;
03443 #ifdef DEBUG
03444 if (!ok)
03445 throw ErrorClass(" error in get/set OtherConstraintOptions");
03446 #endif
03447
03448 SolverOption** SO;
03449 SO = osoption->getAllSolverOptions();
03450 nopt = osoption->getNumberOfSolverOptions();
03451 ok = osoption2->setSolverOptions(nopt, SO) && ok;
03452 #ifdef DEBUG
03453 if (!ok)
03454 throw ErrorClass(" error in get/set SolverOptions");
03455 #endif
03456
03457 ok = osoption->IsEqual(osoption2) && ok;
03458 if (!ok)
03459 throw ErrorClass(" OSOption get() and set() methods do not work correctly");
03460
03461 delete osoption2;
03462 osoption2 = NULL;
03463
03464 cout << "Write the content to a new file" << endl;
03465 tmpOSoL = osolwriter->writeOSoL( osoption);
03466 cout << endl << "Here is tmpOSoL:" <<endl;
03467 cout << endl << endl << tmpOSoL << endl;
03468 cout << "-----------------------------------------" << endl << endl;
03469
03470
03471
03472
03473 OSoLReader *osolreader2;
03474 osolreader2 = new OSoLReader();
03475 cout << "Read the string back" << endl;
03476
03477 OSOption *osoption3 = NULL;
03478 osoption3 = osolreader2->readOSoL( tmpOSoL);
03479
03480 ok = osoption->IsEqual(osoption3);
03481 if (!ok)
03482 throw ErrorClass(" Loss of information in OSoL write/read");
03483 delete osolreader2;
03484 osolreader2 = NULL;
03485
03486
03487 delete osolwriter;
03488 osolwriter = NULL;
03489 delete osolreader;
03490 osolreader = NULL;
03491 unitTestResult <<
03492 "TEST " << nOfTest << ": Successful test of OSoL parser on file parsertest.osol"
03493 << std::endl;
03494 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
03495
03496
03497
03498 cout << endl << "TEST " << ++nOfTest << ": Parse another .osol file" << endl << endl;
03499 osolwriter = new OSoLWriter();
03500 osolreader = new OSoLReader();
03501 cout << "First read the OSoL file into a string" << endl;
03502 osolFileName = dataDir + "osolFiles" + dirsep + "parsertest2.osol";
03503 osol = fileUtil->getFileAsString( osolFileName.c_str() );
03504 finish = clock();
03505 duration = (double) (finish - start) / CLOCKS_PER_SEC;
03506 cout << "Reading the file into a string took (seconds): "<< duration << endl;
03507 cout << "Parse the OSoL string into an OSOption object" << endl;
03508 osoption = osolreader->readOSoL( osol);
03509 tmpOSoL = osolwriter->writeOSoL( osoption) ;
03510 delete osolreader;
03511 osolreader = NULL;
03512 osolreader = new OSoLReader();
03513 osolreader->readOSoL( tmpOSoL);
03514 delete osolwriter;
03515 osolwriter = NULL;
03516 delete osolreader;
03517 osolreader = NULL;
03518
03519
03520 cout << "Test parsing another OSoL file" << endl;
03521 osolwriter = new OSoLWriter();
03522 osolreader = new OSoLReader();
03523 cout << "First read the OSoL file into a string" << endl;
03524 osolFileName = dataDir + "osolFiles" + dirsep + "parsertest3.osol";
03525 osol = fileUtil->getFileAsString( osolFileName.c_str() );
03526 finish = clock();
03527 duration = (double) (finish - start) / CLOCKS_PER_SEC;
03528 cout << "Reading the file into a string took (seconds): "<< duration << endl;
03529 cout << "Parse the OSoL string into an OSOption object" << endl;
03530 osoption = osolreader->readOSoL( osol);
03531 tmpOSoL = osolwriter->writeOSoL( osoption) ;
03532 delete osolreader;
03533 osolreader = NULL;
03534 osolreader = new OSoLReader();
03535 osolreader->readOSoL( tmpOSoL);
03536 delete osolwriter;
03537 osolwriter = NULL;
03538 delete osolreader;
03539 osolreader = NULL;
03540
03541
03542
03543 cout << "Test parsing a trivial string" << endl;
03544 osolreader = new OSoLReader();
03545 osol = "<osol></osol>";
03546 cout << "Parse the OSoL string into an OSOption object" << endl;
03547 osoption = osolreader->readOSoL( osol);
03548 delete osolreader;
03549 osolreader = NULL;
03550
03551
03552 unitTestResult << "TEST " << nOfTest << ": Successful test of OSoL parser" << std::endl;
03553 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
03554
03555
03556 }
03557
03558 catch(const ErrorClass& eclass){
03559 cout << endl << endl << endl;
03560 if(osolwriter != NULL) delete osolwriter;
03561 if(osolreader != NULL) delete osolreader;
03562
03563 unitTestResultFailure << eclass.errormsg << endl;
03564 unitTestResultFailure << "There was a failure in the test for reading OSoL" << endl;
03565 }
03566
03567
03568
03576 OSResult *osresult1 = new OSResult();
03577 OSResult *osresult2 = new OSResult();
03578 OSResult *osresult3 = NULL;
03579 try{
03580 cout << endl << "TEST " << ++nOfTest << ": OSrL set() tools" << endl << endl;
03581
03582 ok = true;
03583 ok &= (osresult1->IsEqual(osresult2));
03584 if (!ok)
03585 throw ErrorClass("Empty osresult objects do not compare equal!");
03586
03587
03588 ok &= osresult1->setGeneralStatusType("warning");
03589 if (!ok)
03590 throw ErrorClass("Error during setGeneralStatusType!");
03591 ok &= (!osresult1->IsEqual(osresult2));
03592 if (!ok)
03593 throw ErrorClass("setGeneralStatusType: osresult objects falsely compare equal!");
03594 ok &= osresult2->setGeneralStatusType("warning");
03595 if (!ok)
03596 throw ErrorClass("Error during setGeneralStatusType!");
03597 ok &= (osresult1->IsEqual(osresult2));
03598 if (!ok)
03599 throw ErrorClass("setGeneralStatusType: osresult objects falsely compare unequal!");
03600
03601 ok &= osresult1->setGeneralStatusDescription("some nonempty string");
03602 if (!ok)
03603 throw ErrorClass("Error during setGeneralStatusDescription!");
03604 ok &= (!osresult1->IsEqual(osresult2));
03605 if (!ok)
03606 throw ErrorClass("setGeneralStatusDescription: osresult objects falsely compare equal!");
03607 ok &= osresult2->setGeneralStatusDescription("some nonempty string");
03608 if (!ok)
03609 throw ErrorClass("Error during setGeneralStatusDescription!");
03610 ok &= (osresult1->IsEqual(osresult2));
03611 if (!ok)
03612 throw ErrorClass("setGeneralStatusDescription: osresult objects falsely compare unequal!");
03613
03614 ok &= osresult1->setNumberOfGeneralSubstatuses(3);
03615 if (!ok)
03616 throw ErrorClass("Error during setNumberOfGeneralSubstatuses!");
03617 ok &= (!osresult1->IsEqual(osresult2));
03618 if (!ok)
03619 throw ErrorClass("setNumberOfGeneralSubstatuses: osresult objects falsely compare equal!");
03620 ok &= osresult2->setNumberOfGeneralSubstatuses(3);
03621 if (!ok)
03622 throw ErrorClass("Error during setNumberOfGeneralSubstatuses!");
03623 ok &= (osresult1->IsEqual(osresult2));
03624 if (!ok)
03625 throw ErrorClass("setNumberOfGeneralSubstatuses: osresult objects falsely compare unequal!");
03626
03627 for (int i=0; i < 3; ++i)
03628 {
03629 ok &= osresult1->setGeneralSubstatusName(i,"some name");
03630 if (!ok)
03631 throw ErrorClass("Error during setGeneralSubstatusName!");
03632 ok &= (!osresult1->IsEqual(osresult2));
03633 if (!ok)
03634 throw ErrorClass("setGeneralSubstatusName: osresult objects falsely compare equal!");
03635 ok &= osresult2->setGeneralSubstatusName(i,"some name");
03636 if (!ok)
03637 throw ErrorClass("Error during setGeneralSubstatusName!");
03638 ok &= (osresult1->IsEqual(osresult2));
03639 if (!ok)
03640 throw ErrorClass("setGeneralSubstatusName: osresult objects falsely compare unequal!");
03641
03642 ok &= osresult1->setGeneralSubstatusDescription(i,"ABC 123");
03643 if (!ok)
03644 throw ErrorClass("Error during setGeneralSubstatusDescription!");
03645 ok &= (!osresult1->IsEqual(osresult2));
03646 if (!ok)
03647 throw ErrorClass("setGeneralSubstatusDescription: osresult objects falsely compare equal!");
03648 ok &= osresult2->setGeneralSubstatusDescription(i,"ABC 123");
03649 if (!ok)
03650 throw ErrorClass("Error during setGeneralSubstatusDescription!");
03651 ok &= (osresult1->IsEqual(osresult2));
03652 if (!ok)
03653 throw ErrorClass("setGeneralSubstatusDescription: osresult objects falsely compare unequal!");
03654 }
03655
03656 ok &= osresult1->setGeneralMessage("testing 123");
03657 if (!ok)
03658 throw ErrorClass("Error during setGeneralMessage!");
03659 ok &= (!osresult1->IsEqual(osresult2));
03660 if (!ok)
03661 throw ErrorClass("setGeneralMessage: osresult objects falsely compare equal!");
03662 ok &= osresult2->setGeneralMessage("testing 123");
03663 if (!ok)
03664 throw ErrorClass("Error during setGeneralMessage!");
03665 ok &= (osresult1->IsEqual(osresult2));
03666 if (!ok)
03667 throw ErrorClass("setGeneralMessage: osresult objects falsely compare unequal!");
03668
03669 ok &= osresult1->setServiceName("testing 123");
03670 if (!ok)
03671 throw ErrorClass("Error during setServiceName!");
03672 ok &= (!osresult1->IsEqual(osresult2));
03673 if (!ok)
03674 throw ErrorClass("setServiceName: osresult objects falsely compare equal!");
03675 ok &= osresult2->setServiceName("testing 123");
03676 if (!ok)
03677 throw ErrorClass("Error during setServiceName!");
03678 ok &= (osresult1->IsEqual(osresult2));
03679 if (!ok)
03680 throw ErrorClass("setServiceName: osresult objects falsely compare unequal!");
03681
03682 ok &= osresult1->setServiceURI("testing 123");
03683 if (!ok)
03684 throw ErrorClass("Error during setServiceURI!");
03685 ok &= (!osresult1->IsEqual(osresult2));
03686 if (!ok)
03687 throw ErrorClass("setServiceURI: osresult objects falsely compare equal!");
03688 ok &= osresult2->setServiceURI("testing 123");
03689 if (!ok)
03690 throw ErrorClass("Error during setServiceURI!");
03691 ok &= (osresult1->IsEqual(osresult2));
03692 if (!ok)
03693 throw ErrorClass("setServiceURI: osresult objects falsely compare unequal!");
03694
03695 ok &= osresult1->setInstanceName("testing 123");
03696 if (!ok)
03697 throw ErrorClass("Error during setInstanceName!");
03698 ok &= (!osresult1->IsEqual(osresult2));
03699 if (!ok)
03700 throw ErrorClass("setInstanceName: osresult objects falsely compare equal!");
03701 ok &= osresult2->setInstanceName("testing 123");
03702 if (!ok)
03703 throw ErrorClass("Error during setInstanceName!");
03704 ok &= (osresult1->IsEqual(osresult2));
03705 if (!ok)
03706 throw ErrorClass("setInstanceName: osresult objects falsely compare unequal!");
03707
03708 ok &= osresult1->setJobID("testing 123");
03709 if (!ok)
03710 throw ErrorClass("Error during setJobID!");
03711 ok &= (!osresult1->IsEqual(osresult2));
03712 if (!ok)
03713 throw ErrorClass("setJobID: osresult objects falsely compare equal!");
03714 ok &= osresult2->setJobID("testing 123");
03715 if (!ok)
03716 throw ErrorClass("Error during setJobID!");
03717 ok &= (osresult1->IsEqual(osresult2));
03718 if (!ok)
03719 throw ErrorClass("setJobID: osresult objects falsely compare unequal!");
03720
03721 ok &= osresult1->setSolverInvoked("testing 123");
03722 if (!ok)
03723 throw ErrorClass("Error during setSolverInvoked!");
03724 ok &= (!osresult1->IsEqual(osresult2));
03725 if (!ok)
03726 throw ErrorClass("setSolverInvoked: osresult objects falsely compare equal!");
03727 ok &= osresult2->setSolverInvoked("testing 123");
03728 if (!ok)
03729 throw ErrorClass("Error during setSolverInvoked!");
03730 ok &= (osresult1->IsEqual(osresult2));
03731 if (!ok)
03732 throw ErrorClass("setSolverInvoked: osresult objects falsely compare unequal!");
03733
03734 ok &= osresult1->setTimeStamp("2001-12-17T09:30:47.0Z");
03735 if (!ok)
03736 throw ErrorClass("Error during setTimeStamp!");
03737 ok &= (!osresult1->IsEqual(osresult2));
03738 if (!ok)
03739 throw ErrorClass("setTimeStamp: osresult objects falsely compare equal!");
03740 ok &= osresult2->setTimeStamp("2001-12-17T09:30:47.0Z");
03741 if (!ok)
03742 throw ErrorClass("Error during setTimeStamp!");
03743 ok &= (osresult1->IsEqual(osresult2));
03744 if (!ok)
03745 throw ErrorClass("setTimeStamp: osresult objects falsely compare unequal!");
03746
03747 ok &= osresult1->setNumberOfOtherGeneralResults(3);
03748 if (!ok)
03749 throw ErrorClass("Error during setNumberOfOtherGeneralResults!");
03750 ok &= (!osresult1->IsEqual(osresult2));
03751 if (!ok)
03752 throw ErrorClass("setNumberOfOtherGeneralResults: osresult objects falsely compare equal!");
03753 ok &= osresult2->setNumberOfOtherGeneralResults(3);
03754 if (!ok)
03755 throw ErrorClass("Error during setNumberOfOtherGeneralResults!");
03756 ok &= (osresult1->IsEqual(osresult2));
03757 if (!ok)
03758 throw ErrorClass("setNumberOfOtherGeneralResults: osresult objects falsely compare unequal!");
03759
03760 for (int i=0; i < 3; ++i)
03761 {
03762 ok &= osresult1->setOtherGeneralResultName(i,"some name");
03763 if (!ok)
03764 throw ErrorClass("Error during setOtherGeneralResultName!");
03765 ok &= (!osresult1->IsEqual(osresult2));
03766 if (!ok)
03767 throw ErrorClass("setOtherGeneralResultName: osresult objects falsely compare equal!");
03768 ok &= osresult2->setOtherGeneralResultName(i,"some name");
03769 if (!ok)
03770 throw ErrorClass("Error during setOtherGeneralResultName!");
03771 ok &= (osresult1->IsEqual(osresult2));
03772 if (!ok)
03773 throw ErrorClass("setOtherGeneralResultName: osresult objects falsely compare unequal!");
03774
03775 ok &= osresult1->setOtherGeneralResultValue(i,"some value");
03776 if (!ok)
03777 throw ErrorClass("Error during setOtherGeneralResultValue!");
03778 ok &= (!osresult1->IsEqual(osresult2));
03779 if (!ok)
03780 throw ErrorClass("setOtherGeneralResultValue: osresult objects falsely compare equal!");
03781 ok &= osresult2->setOtherGeneralResultValue(i,"some value");
03782 if (!ok)
03783 throw ErrorClass("Error during setOtherGeneralResultValue!");
03784 ok &= (osresult1->IsEqual(osresult2));
03785 if (!ok)
03786 throw ErrorClass("setOtherGeneralResultValue: osresult objects falsely compare unequal!");
03787
03788 ok &= osresult1->setOtherGeneralResultDescription(i,"ABC 123");
03789 if (!ok)
03790 throw ErrorClass("Error during setOtherGeneralResultDescription!");
03791 ok &= (!osresult1->IsEqual(osresult2));
03792 if (!ok)
03793 throw ErrorClass("setOtherGeneralResultDescription: osresult objects falsely compare equal!");
03794 ok &= osresult2->setOtherGeneralResultDescription(i,"ABC 123");
03795 if (!ok)
03796 throw ErrorClass("Error during setOtherGeneralResultDescription!");
03797 ok &= (osresult1->IsEqual(osresult2));
03798 if (!ok)
03799 throw ErrorClass("setOtherGeneralResultDescription: osresult objects falsely compare unequal!");
03800 }
03801
03802
03803 ok &= osresult1->setSystemInformation("testing 123");
03804 if (!ok)
03805 throw ErrorClass("Error during setSystemInformation!");
03806 ok &= (!osresult1->IsEqual(osresult2));
03807 if (!ok)
03808 throw ErrorClass("setSystemInformation: osresult objects falsely compare equal!");
03809 ok &= osresult2->setSystemInformation("testing 123");
03810 if (!ok)
03811 throw ErrorClass("Error during setSystemInformation!");
03812 ok &= (osresult1->IsEqual(osresult2));
03813 if (!ok)
03814 throw ErrorClass("setSystemInformation: osresult objects falsely compare unequal!");
03815
03816 ok &= osresult1->setAvailableDiskSpaceUnit("megabyte");
03817 if (!ok)
03818 throw ErrorClass("Error during setAvailableDiskSpaceUnit!");
03819 ok &= (!osresult1->IsEqual(osresult2));
03820 if (!ok)
03821 throw ErrorClass("setAvailableDiskSpaceUnit: osresult objects falsely compare equal!");
03822 ok &= osresult2->setAvailableDiskSpaceUnit("megabyte");
03823 if (!ok)
03824 throw ErrorClass("Error during setAvailableDiskSpaceUnit!");
03825 ok &= (osresult1->IsEqual(osresult2));
03826 if (!ok)
03827 throw ErrorClass("setAvailableDiskSpaceUnit: osresult objects falsely compare unequal!");
03828
03829 ok &= osresult1->setAvailableDiskSpaceDescription("testing 123");
03830 if (!ok)
03831 throw ErrorClass("Error during setAvailableDiskSpaceDescription!");
03832 ok &= (!osresult1->IsEqual(osresult2));
03833 if (!ok)
03834 throw ErrorClass("setAvailableDiskSpaceDescription: osresult objects falsely compare equal!");
03835 ok &= osresult2->setAvailableDiskSpaceDescription("testing 123");
03836 if (!ok)
03837 throw ErrorClass("Error during setAvailableDiskSpaceDescription!");
03838 ok &= (osresult1->IsEqual(osresult2));
03839 if (!ok)
03840 throw ErrorClass("setAvailableDiskSpaceDescription: osresult objects falsely compare unequal!");
03841
03842 ok &= osresult1->setAvailableDiskSpaceValue(100.0);
03843 if (!ok)
03844 throw ErrorClass("Error during setAvailableDiskSpaceValue!");
03845 ok &= (!osresult1->IsEqual(osresult2));
03846 if (!ok)
03847 throw ErrorClass("setAvailableDiskSpaceValue: osresult objects falsely compare equal!");
03848 ok &= osresult2->setAvailableDiskSpaceValue(100.0);
03849 if (!ok)
03850 throw ErrorClass("Error during setAvailableDiskSpaceValue!");
03851 ok &= (osresult1->IsEqual(osresult2));
03852 if (!ok)
03853 throw ErrorClass("setAvailableDiskSpaceValue: osresult objects falsely compare unequal!");
03854
03855 ok &= osresult1->setAvailableMemoryUnit("megabyte");
03856 if (!ok)
03857 throw ErrorClass("Error during setAvailableMemoryUnit!");
03858 ok &= (!osresult1->IsEqual(osresult2));
03859 if (!ok)
03860 throw ErrorClass("setAvailableMemoryUnit: osresult objects falsely compare equal!");
03861 ok &= osresult2->setAvailableMemoryUnit("megabyte");
03862 if (!ok)
03863 throw ErrorClass("Error during setAvailableMemoryUnit!");
03864 ok &= (osresult1->IsEqual(osresult2));
03865 if (!ok)
03866 throw ErrorClass("setAvailableMemoryUnit: osresult objects falsely compare unequal!");
03867
03868 ok &= osresult1->setAvailableMemoryDescription("testing 123");
03869 if (!ok)
03870 throw ErrorClass("Error during setAvailableMemoryDescription!");
03871 ok &= (!osresult1->IsEqual(osresult2));
03872 if (!ok)
03873 throw ErrorClass("setAvailableMemoryDescription: osresult objects falsely compare equal!");
03874 ok &= osresult2->setAvailableMemoryDescription("testing 123");
03875 if (!ok)
03876 throw ErrorClass("Error during setAvailableMemoryDescription!");
03877 ok &= (osresult1->IsEqual(osresult2));
03878 if (!ok)
03879 throw ErrorClass("setAvailableMemoryDescription: osresult objects falsely compare unequal!");
03880
03881 ok &= osresult1->setAvailableMemoryValue(100.0);
03882 if (!ok)
03883 throw ErrorClass("Error during setAvailableMemoryValue!");
03884 ok &= (!osresult1->IsEqual(osresult2));
03885 if (!ok)
03886 throw ErrorClass("setAvailableMemoryValue: osresult objects falsely compare equal!");
03887 ok &= osresult2->setAvailableMemoryValue(100.0);
03888 if (!ok)
03889 throw ErrorClass("Error during setAvailableMemoryValue!");
03890 ok &= (osresult1->IsEqual(osresult2));
03891 if (!ok)
03892 throw ErrorClass("setAvailableMemoryValue: osresult objects falsely compare unequal!");
03893
03894 ok &= osresult1->setAvailableCPUSpeedUnit("megahertz");
03895 if (!ok)
03896 throw ErrorClass("Error during setAvailableCPUSpeedUnit!");
03897 ok &= (!osresult1->IsEqual(osresult2));
03898 if (!ok)
03899 throw ErrorClass("setAvailableCPUSpeedUnit: osresult objects falsely compare equal!");
03900 ok &= osresult2->setAvailableCPUSpeedUnit("megahertz");
03901 if (!ok)
03902 throw ErrorClass("Error during setAvailableCPUSpeedUnit!");
03903 ok &= (osresult1->IsEqual(osresult2));
03904 if (!ok)
03905 throw ErrorClass("setAvailableCPUSpeedUnit: osresult objects falsely compare unequal!");
03906
03907 ok &= osresult1->setAvailableCPUSpeedDescription("testing 123");
03908 if (!ok)
03909 throw ErrorClass("Error during setAvailableCPUSpeedDescription!");
03910 ok &= (!osresult1->IsEqual(osresult2));
03911 if (!ok)
03912 throw ErrorClass("setAvailableCPUSpeedDescription: osresult objects falsely compare equal!");
03913 ok &= osresult2->setAvailableCPUSpeedDescription("testing 123");
03914 if (!ok)
03915 throw ErrorClass("Error during setAvailableCPUSpeedDescription!");
03916 ok &= (osresult1->IsEqual(osresult2));
03917 if (!ok)
03918 throw ErrorClass("setAvailableCPUSpeedDescription: osresult objects falsely compare unequal!");
03919
03920 ok &= osresult1->setAvailableCPUSpeedValue(100.0);
03921 if (!ok)
03922 throw ErrorClass("Error during setAvailableCPUSpeedValue!");
03923 ok &= (!osresult1->IsEqual(osresult2));
03924 if (!ok)
03925 throw ErrorClass("setAvailableCPUSpeedValue: osresult objects falsely compare equal!");
03926 ok &= osresult2->setAvailableCPUSpeedValue(100.0);
03927 if (!ok)
03928 throw ErrorClass("Error during setAvailableCPUSpeedValue!");
03929 ok &= (osresult1->IsEqual(osresult2));
03930 if (!ok)
03931 throw ErrorClass("setAvailableCPUSpeedValue: osresult objects falsely compare unequal!");
03932
03933 ok &= osresult1->setAvailableCPUNumberDescription("testing 123");
03934 if (!ok)
03935 throw ErrorClass("Error during setAvailableCPUNumberDescription!");
03936 ok &= (!osresult1->IsEqual(osresult2));
03937 if (!ok)
03938 throw ErrorClass("setAvailableCPUNumberDescription: osresult objects falsely compare equal!");
03939 ok &= osresult2->setAvailableCPUNumberDescription("testing 123");
03940 if (!ok)
03941 throw ErrorClass("Error during setAvailableCPUNumberDescription!");
03942 ok &= (osresult1->IsEqual(osresult2));
03943 if (!ok)
03944 throw ErrorClass("setAvailableCPUNumberDescription: osresult objects falsely compare unequal!");
03945
03946 ok &= osresult1->setAvailableCPUNumberValue(100);
03947 if (!ok)
03948 throw ErrorClass("Error during setAvailableCPUNumberValue!");
03949 ok &= (!osresult1->IsEqual(osresult2));
03950 if (!ok)
03951 throw ErrorClass("setAvailableCPUNumberValue: osresult objects falsely compare equal!");
03952 ok &= osresult2->setAvailableCPUNumberValue(100);
03953 if (!ok)
03954 throw ErrorClass("Error during setAvailableCPUNumberValue!");
03955 ok &= (osresult1->IsEqual(osresult2));
03956 if (!ok)
03957 throw ErrorClass("setAvailableCPUNumberValue: osresult objects falsely compare unequal!");
03958
03959 ok &= osresult1->setNumberOfOtherSystemResults(3);
03960 if (!ok)
03961 throw ErrorClass("Error during setNumberOfOtherSystemResults!");
03962 ok &= (!osresult1->IsEqual(osresult2));
03963 if (!ok)
03964 throw ErrorClass("setNumberOfOtherSystemResults: osresult objects falsely compare equal!");
03965 ok &= osresult2->setNumberOfOtherSystemResults(3);
03966 if (!ok)
03967 throw ErrorClass("Error during setNumberOfOtherSystemResults!");
03968 ok &= (osresult1->IsEqual(osresult2));
03969 if (!ok)
03970 throw ErrorClass("setNumberOfOtherSystemResults: osresult objects falsely compare unequal!");
03971
03972 for (int i=0; i < 3; ++i)
03973 {
03974 ok &= osresult1->setOtherSystemResultName(i,"some name");
03975 if (!ok)
03976 throw ErrorClass("Error during setOtherSystemResultName!");
03977 ok &= (!osresult1->IsEqual(osresult2));
03978 if (!ok)
03979 throw ErrorClass("setOtherSystemResultName: osresult objects falsely compare equal!");
03980 ok &= osresult2->setOtherSystemResultName(i,"some name");
03981 if (!ok)
03982 throw ErrorClass("Error during setOtherSystemResultName!");
03983 ok &= (osresult1->IsEqual(osresult2));
03984 if (!ok)
03985 throw ErrorClass("setOtherSystemResultName: osresult objects falsely compare unequal!");
03986
03987 ok &= osresult1->setOtherSystemResultValue(i,"some value");
03988 if (!ok)
03989 throw ErrorClass("Error during setOtherSystemResultValue!");
03990 ok &= (!osresult1->IsEqual(osresult2));
03991 if (!ok)
03992 throw ErrorClass("setOtherSystemResultValue: osresult objects falsely compare equal!");
03993 ok &= osresult2->setOtherSystemResultValue(i,"some value");
03994 if (!ok)
03995 throw ErrorClass("Error during setOtherSystemResultValue!");
03996 ok &= (osresult1->IsEqual(osresult2));
03997 if (!ok)
03998 throw ErrorClass("setOtherSystemResultValue: osresult objects falsely compare unequal!");
03999
04000 ok &= osresult1->setOtherSystemResultDescription(i,"ABC 123");
04001 if (!ok)
04002 throw ErrorClass("Error during setSOtherSystemResultDescription!");
04003 ok &= (!osresult1->IsEqual(osresult2));
04004 if (!ok)
04005 throw ErrorClass("setOtherSystemResultDescription: osresult objects falsely compare equal!");
04006 ok &= osresult2->setOtherSystemResultDescription(i,"ABC 123");
04007 if (!ok)
04008 throw ErrorClass("Error during setOtherSystemResultDescription!");
04009 ok &= (osresult1->IsEqual(osresult2));
04010 if (!ok)
04011 throw ErrorClass("setOtherSystemResultDescription: osresult objects falsely compare unequal!");
04012 }
04013
04014
04015 ok &= osresult1->setCurrentState("busy");
04016 if (!ok)
04017 throw ErrorClass("Error during setCurrentState!");
04018 ok &= (!osresult1->IsEqual(osresult2));
04019 if (!ok)
04020 throw ErrorClass("setCurrentState: osresult objects falsely compare equal!");
04021 ok &= osresult2->setCurrentState("busy");
04022 if (!ok)
04023 throw ErrorClass("Error during setCurrentState!");
04024 ok &= (osresult1->IsEqual(osresult2));
04025 if (!ok)
04026 throw ErrorClass("setCurrentState: osresult objects falsely compare unequal!");
04027
04028 ok &= osresult1->setCurrentJobCount(123);
04029 if (!ok)
04030 throw ErrorClass("Error during setCurrentJobCount!");
04031 ok &= (!osresult1->IsEqual(osresult2));
04032 if (!ok)
04033 throw ErrorClass("setCurrentJobCount: osresult objects falsely compare equal!");
04034 ok &= osresult2->setCurrentJobCount(123);
04035 if (!ok)
04036 throw ErrorClass("Error during setCurrentJobCount!");
04037 ok &= (osresult1->IsEqual(osresult2));
04038 if (!ok)
04039 throw ErrorClass("setCurrentJobCount: osresult objects falsely compare unequal!");
04040
04041 ok &= osresult1->setTotalJobsSoFar(123);
04042 if (!ok)
04043 throw ErrorClass("Error during setTotalJobsSoFar!");
04044 ok &= (!osresult1->IsEqual(osresult2));
04045 if (!ok)
04046 throw ErrorClass("setTotalJobsSoFar: osresult objects falsely compare equal!");
04047 ok &= osresult2->setTotalJobsSoFar(123);
04048 if (!ok)
04049 throw ErrorClass("Error during setTotalJobsSoFar!");
04050 ok &= (osresult1->IsEqual(osresult2));
04051 if (!ok)
04052 throw ErrorClass("setTotalJobsSoFar: osresult objects falsely compare unequal!");
04053
04054 ok &= osresult1->setTimeServiceStarted("2001-12-17T09:30:47.0Z");
04055 if (!ok)
04056 throw ErrorClass("Error during setTimeServiceStarted!");
04057 ok &= (!osresult1->IsEqual(osresult2));
04058 if (!ok)
04059 throw ErrorClass("setTimeServiceStarted: osresult objects falsely compare equal!");
04060 ok &= osresult2->setTimeServiceStarted("2001-12-17T09:30:47.0Z");
04061 if (!ok)
04062 throw ErrorClass("Error during setTimeServiceStarted!");
04063 ok &= (osresult1->IsEqual(osresult2));
04064 if (!ok)
04065 throw ErrorClass("setTimeServiceStarted: osresult objects falsely compare unequal!");
04066
04067 ok &= osresult1->setServiceUtilization(0.8);
04068 if (!ok)
04069 throw ErrorClass("Error during setServiceUtilization!");
04070 ok &= (!osresult1->IsEqual(osresult2));
04071 if (!ok)
04072 throw ErrorClass("setServiceUtilization: osresult objects falsely compare equal!");
04073 ok &= osresult2->setServiceUtilization(0.8);
04074 if (!ok)
04075 throw ErrorClass("Error during setServiceUtilization!");
04076 ok &= (osresult1->IsEqual(osresult2));
04077 if (!ok)
04078 throw ErrorClass("setServiceUtilization: osresult objects falsely compare unequal!");
04079
04080 ok &= osresult1->setNumberOfOtherServiceResults(3);
04081 if (!ok)
04082 throw ErrorClass("Error during setNumberOfOtherServiceResults!");
04083 ok &= (!osresult1->IsEqual(osresult2));
04084 if (!ok)
04085 throw ErrorClass("setNumberOfOtherServiceResults: osresult objects falsely compare equal!");
04086 ok &= osresult2->setNumberOfOtherServiceResults(3);
04087 if (!ok)
04088 throw ErrorClass("Error during setNumberOfOtherServiceResults!");
04089 ok &= (osresult1->IsEqual(osresult2));
04090 if (!ok)
04091 throw ErrorClass("setNumberOfOtherServiceResults: osresult objects falsely compare unequal!");
04092
04093 for (int i=0; i < 3; ++i)
04094 {
04095 ok &= osresult1->setOtherServiceResultName(i,"some name");
04096 if (!ok)
04097 throw ErrorClass("Error during setOtherServiceResultName!");
04098 ok &= (!osresult1->IsEqual(osresult2));
04099 if (!ok)
04100 throw ErrorClass("setOtherServiceResultName: osresult objects falsely compare equal!");
04101 ok &= osresult2->setOtherServiceResultName(i,"some name");
04102 if (!ok)
04103 throw ErrorClass("Error during setOtherServiceResultName!");
04104 ok &= (osresult1->IsEqual(osresult2));
04105 if (!ok)
04106 throw ErrorClass("setOtherServiceResultName: osresult objects falsely compare unequal!");
04107
04108 ok &= osresult1->setOtherServiceResultValue(i,"some value");
04109 if (!ok)
04110 throw ErrorClass("Error during setOtherServiceResultValue!");
04111 ok &= (!osresult1->IsEqual(osresult2));
04112 if (!ok)
04113 throw ErrorClass("setOtherServiceResultValue: osresult objects falsely compare equal!");
04114 ok &= osresult2->setOtherServiceResultValue(i,"some value");
04115 if (!ok)
04116 throw ErrorClass("Error during setOtherServiceResultValue!");
04117 ok &= (osresult1->IsEqual(osresult2));
04118 if (!ok)
04119 throw ErrorClass("setOtherServiceResultValue: osresult objects falsely compare unequal!");
04120
04121 ok &= osresult1->setOtherServiceResultDescription(i,"ABC 123");
04122 if (!ok)
04123 throw ErrorClass("Error during setOtherServiceResultDescription!");
04124 ok &= (!osresult1->IsEqual(osresult2));
04125 if (!ok)
04126 throw ErrorClass("setOtherServiceResultDescription: osresult objects falsely compare equal!");
04127 ok &= osresult2->setOtherServiceResultDescription(i,"ABC 123");
04128 if (!ok)
04129 throw ErrorClass("Error during setOtherServiceResultDescription!");
04130 ok &= (osresult1->IsEqual(osresult2));
04131 if (!ok)
04132 throw ErrorClass("setOtherServiceResultDescription: osresult objects falsely compare unequal!");
04133 }
04134
04135
04136 ok &= osresult1->setJobStatus("waiting");
04137 if (!ok)
04138 throw ErrorClass("Error during setJobStatus!");
04139 ok &= (!osresult1->IsEqual(osresult2));
04140 if (!ok)
04141 throw ErrorClass("setJobStatus: osresult objects falsely compare equal!");
04142 ok &= osresult2->setJobStatus("waiting");
04143 if (!ok)
04144 throw ErrorClass("Error during setJobStatus!");
04145 ok &= (osresult1->IsEqual(osresult2));
04146 if (!ok)
04147 throw ErrorClass("setJobStatus: osresult objects falsely compare unequal!");
04148
04149 ok &= osresult1->setJobSubmitTime("2001-12-17T09:30:47.0Z");
04150 if (!ok)
04151 throw ErrorClass("Error during setJobSubmitTime!");
04152 ok &= (!osresult1->IsEqual(osresult2));
04153 if (!ok)
04154 throw ErrorClass("setJobSubmitTime: osresult objects falsely compare equal!");
04155 ok &= osresult2->setJobSubmitTime("2001-12-17T09:30:47.0Z");
04156 if (!ok)
04157 throw ErrorClass("Error during setJobSubmitTime!");
04158 ok &= (osresult1->IsEqual(osresult2));
04159 if (!ok)
04160 throw ErrorClass("setJobSubmitTime: osresult objects falsely compare unequal!");
04161
04162 ok &= osresult1->setScheduledStartTime("2001-12-17T09:30:47.0Z");
04163 if (!ok)
04164 throw ErrorClass("Error during setScheduledStartTime!");
04165 ok &= (!osresult1->IsEqual(osresult2));
04166 if (!ok)
04167 throw ErrorClass("setScheduledStartTime: osresult objects falsely compare equal!");
04168 ok &= osresult2->setScheduledStartTime("2001-12-17T09:30:47.0Z");
04169 if (!ok)
04170 throw ErrorClass("Error during setScheduledStartTime!");
04171 ok &= (osresult1->IsEqual(osresult2));
04172 if (!ok)
04173 throw ErrorClass("setScheduledStartTime: osresult objects falsely compare unequal!");
04174
04175 ok &= osresult1->setActualStartTime("2001-12-17T09:30:47.0Z");
04176 if (!ok)
04177 throw ErrorClass("Error during setActualStartTime!");
04178 ok &= (!osresult1->IsEqual(osresult2));
04179 if (!ok)
04180 throw ErrorClass("setActualStartTime: osresult objects falsely compare equal!");
04181 ok &= osresult2->setActualStartTime("2001-12-17T09:30:47.0Z");
04182 if (!ok)
04183 throw ErrorClass("Error during setActualStartTime!");
04184 ok &= (osresult1->IsEqual(osresult2));
04185 if (!ok)
04186 throw ErrorClass("setActualStartTime: osresult objects falsely compare unequal!");
04187
04188 ok &= osresult1->setJobEndTime("2001-12-17T09:30:47.0Z");
04189 if (!ok)
04190 throw ErrorClass("Error during setJobEndTime!");
04191 ok &= (!osresult1->IsEqual(osresult2));
04192 if (!ok)
04193 throw ErrorClass("setJobEndTime: osresult objects falsely compare equal!");
04194 ok &= osresult2->setJobEndTime("2001-12-17T09:30:47.0Z");
04195 if (!ok)
04196 throw ErrorClass("Error during setJobEndTime!");
04197 ok &= (osresult1->IsEqual(osresult2));
04198 if (!ok)
04199 throw ErrorClass("setJobEndTime: osresult objects falsely compare unequal!");
04200
04201 ok &= osresult1->setNumberOfTimes(3);
04202 if (!ok)
04203 throw ErrorClass("Error during setNumberOfTimes!");
04204 ok &= (!osresult1->IsEqual(osresult2));
04205 if (!ok)
04206 throw ErrorClass("setNumberOfTimes: osresult objects falsely compare equal!");
04207 ok &= osresult2->setNumberOfTimes(3);
04208 if (!ok)
04209 throw ErrorClass("Error during setNumberOfTimes!");
04210 ok &= (osresult1->IsEqual(osresult2));
04211 if (!ok)
04212 throw ErrorClass("setNumberOfTimes: osresult objects falsely compare unequal!");
04213
04214 for (int i=0; i < 3; ++i)
04215 {
04216 ok &= osresult1->setTimingInformation(i,"cpuTime","other","second","blabla",3.14);
04217 if (!ok)
04218 throw ErrorClass("Error during setTimingInformation!");
04219 ok &= (!osresult1->IsEqual(osresult2));
04220 if (!ok)
04221 throw ErrorClass("setTimingInformation: osresult objects falsely compare equal!");
04222 ok &= osresult2->setTimingInformation(i,"cpuTime","other","second","blabla",3.14);
04223 if (!ok)
04224 throw ErrorClass("Error during setTimingInformation!");
04225 ok &= (osresult1->IsEqual(osresult2));
04226 if (!ok)
04227 throw ErrorClass("setTimingInformation: osresult objects falsely compare unequal!");
04228
04229 }
04230
04231 ok &= osresult1->setUsedDiskSpaceUnit("megabyte");
04232 if (!ok)
04233 throw ErrorClass("Error during setUsedDiskSpaceUnit!");
04234 ok &= (!osresult1->IsEqual(osresult2));
04235 if (!ok)
04236 throw ErrorClass("setUsedDiskSpaceUnit: osresult objects falsely compare equal!");
04237 ok &= osresult2->setUsedDiskSpaceUnit("megabyte");
04238 if (!ok)
04239 throw ErrorClass("Error during setUsedDiskSpaceUnit!");
04240 ok &= (osresult1->IsEqual(osresult2));
04241 if (!ok)
04242 throw ErrorClass("setUsedDiskSpaceUnit: osresult objects falsely compare unequal!");
04243
04244 ok &= osresult1->setUsedDiskSpaceDescription("testing 123");
04245 if (!ok)
04246 throw ErrorClass("Error during setUsedDiskSpaceDescription!");
04247 ok &= (!osresult1->IsEqual(osresult2));
04248 if (!ok)
04249 throw ErrorClass("setUsedDiskSpaceDescription: osresult objects falsely compare equal!");
04250 ok &= osresult2->setUsedDiskSpaceDescription("testing 123");
04251 if (!ok)
04252 throw ErrorClass("Error during setUsedDiskSpaceDescription!");
04253 ok &= (osresult1->IsEqual(osresult2));
04254 if (!ok)
04255 throw ErrorClass("setUsedDiskSpaceDescription: osresult objects falsely compare unequal!");
04256
04257 ok &= osresult1->setUsedDiskSpaceValue(100.0);
04258 if (!ok)
04259 throw ErrorClass("Error during setUsedDiskSpaceValue!");
04260 ok &= (!osresult1->IsEqual(osresult2));
04261 if (!ok)
04262 throw ErrorClass("setUsedDiskSpaceValue: osresult objects falsely compare equal!");
04263 ok &= osresult2->setUsedDiskSpaceValue(100.0);
04264 if (!ok)
04265 throw ErrorClass("Error during setUsedDiskSpaceValue!");
04266 ok &= (osresult1->IsEqual(osresult2));
04267 if (!ok)
04268 throw ErrorClass("setUsedDiskSpaceValue: osresult objects falsely compare unequal!");
04269
04270 ok &= osresult1->setUsedMemoryUnit("megabyte");
04271 if (!ok)
04272 throw ErrorClass("Error during setUsedMemoryUnit!");
04273 ok &= (!osresult1->IsEqual(osresult2));
04274 if (!ok)
04275 throw ErrorClass("setUsedMemoryUnit: osresult objects falsely compare equal!");
04276 ok &= osresult2->setUsedMemoryUnit("megabyte");
04277 if (!ok)
04278 throw ErrorClass("Error during setUsedMemoryUnit!");
04279 ok &= (osresult1->IsEqual(osresult2));
04280 if (!ok)
04281 throw ErrorClass("setUsedMemoryUnit: osresult objects falsely compare unequal!");
04282
04283 ok &= osresult1->setUsedMemoryDescription("testing 123");
04284 if (!ok)
04285 throw ErrorClass("Error during setUsedMemoryDescription!");
04286 ok &= (!osresult1->IsEqual(osresult2));
04287 if (!ok)
04288 throw ErrorClass("setUsedMemoryDescription: osresult objects falsely compare equal!");
04289 ok &= osresult2->setUsedMemoryDescription("testing 123");
04290 if (!ok)
04291 throw ErrorClass("Error during setUsedMemoryDescription!");
04292 ok &= (osresult1->IsEqual(osresult2));
04293 if (!ok)
04294 throw ErrorClass("setUsedMemoryDescription: osresult objects falsely compare unequal!");
04295
04296 ok &= osresult1->setUsedMemoryValue(100.0);
04297 if (!ok)
04298 throw ErrorClass("Error during setUsedMemoryValue!");
04299 ok &= (!osresult1->IsEqual(osresult2));
04300 if (!ok)
04301 throw ErrorClass("setUsedMemoryValue: osresult objects falsely compare equal!");
04302 ok &= osresult2->setUsedMemoryValue(100.0);
04303 if (!ok)
04304 throw ErrorClass("Error during setUsedMemoryValue!");
04305 ok &= (osresult1->IsEqual(osresult2));
04306 if (!ok)
04307 throw ErrorClass("setUsedMemoryValue: osresult objects falsely compare unequal!");
04308
04309 ok &= osresult1->setUsedCPUSpeedUnit("megahertz");
04310 if (!ok)
04311 throw ErrorClass("Error during setUsedCPUSpeedUnit!");
04312 ok &= (!osresult1->IsEqual(osresult2));
04313 if (!ok)
04314 throw ErrorClass("setUsedCPUSpeedUnit: osresult objects falsely compare equal!");
04315 ok &= osresult2->setUsedCPUSpeedUnit("megahertz");
04316 if (!ok)
04317 throw ErrorClass("Error during setUsedCPUSpeedUnit!");
04318 ok &= (osresult1->IsEqual(osresult2));
04319 if (!ok)
04320 throw ErrorClass("setUsedCPUSpeedUnit: osresult objects falsely compare unequal!");
04321
04322 ok &= osresult1->setUsedCPUSpeedDescription("testing 123");
04323 if (!ok)
04324 throw ErrorClass("Error during setUsedCPUSpeedDescription!");
04325 ok &= (!osresult1->IsEqual(osresult2));
04326 if (!ok)
04327 throw ErrorClass("setUsedCPUSpeedDescription: osresult objects falsely compare equal!");
04328 ok &= osresult2->setUsedCPUSpeedDescription("testing 123");
04329 if (!ok)
04330 throw ErrorClass("Error during setUsedCPUSpeedDescription!");
04331 ok &= (osresult1->IsEqual(osresult2));
04332 if (!ok)
04333 throw ErrorClass("setUsedCPUSpeedDescription: osresult objects falsely compare unequal!");
04334
04335 ok &= osresult1->setUsedCPUSpeedValue(100.0);
04336 if (!ok)
04337 throw ErrorClass("Error during setUsedCPUSpeedValue!");
04338 ok &= (!osresult1->IsEqual(osresult2));
04339 if (!ok)
04340 throw ErrorClass("setUsedCPUSpeedValue: osresult objects falsely compare equal!");
04341 ok &= osresult2->setUsedCPUSpeedValue(100.0);
04342 if (!ok)
04343 throw ErrorClass("Error during setUsedCPUSpeedValue!");
04344 ok &= (osresult1->IsEqual(osresult2));
04345 if (!ok)
04346 throw ErrorClass("setUsedCPUSpeedValue: osresult objects falsely compare unequal!");
04347
04348 ok &= osresult1->setUsedCPUNumberDescription("testing 123");
04349 if (!ok)
04350 throw ErrorClass("Error during setUsedCPUNumberDescription!");
04351 ok &= (!osresult1->IsEqual(osresult2));
04352 if (!ok)
04353 throw ErrorClass("setUsedCPUNumberDescription: osresult objects falsely compare equal!");
04354 ok &= osresult2->setUsedCPUNumberDescription("testing 123");
04355 if (!ok)
04356 throw ErrorClass("Error during setUsedCPUNumberDescription!");
04357 ok &= (osresult1->IsEqual(osresult2));
04358 if (!ok)
04359 throw ErrorClass("setUsedCPUNumberDescription: osresult objects falsely compare unequal!");
04360
04361 ok &= osresult1->setUsedCPUNumberValue(100);
04362 if (!ok)
04363 throw ErrorClass("Error during setUsedCPUNumberValue!");
04364 ok &= (!osresult1->IsEqual(osresult2));
04365 if (!ok)
04366 throw ErrorClass("setUsedCPUNumberValue: osresult objects falsely compare equal!");
04367 ok &= osresult2->setUsedCPUNumberValue(100);
04368 if (!ok)
04369 throw ErrorClass("Error during setUsedCPUNumberValue!");
04370 ok &= (osresult1->IsEqual(osresult2));
04371 if (!ok)
04372 throw ErrorClass("setUsedCPUNumberValue: osresult objects falsely compare unequal!");
04373
04374 ok &= osresult1->setNumberOfOtherJobResults(3);
04375 if (!ok)
04376 throw ErrorClass("Error during setNumberOfOtherJobResults!");
04377 ok &= (!osresult1->IsEqual(osresult2));
04378 if (!ok)
04379 throw ErrorClass("setNumberOfOtherJobResults: osresult objects falsely compare equal!");
04380 ok &= osresult2->setNumberOfOtherJobResults(3);
04381 if (!ok)
04382 throw ErrorClass("Error during setNumberOfOtherJobResults!");
04383 ok &= (osresult1->IsEqual(osresult2));
04384 if (!ok)
04385 throw ErrorClass("setNumberOfOtherJobResults: osresult objects falsely compare unequal!");
04386
04387 for (int i=0; i < 3; ++i)
04388 {
04389 ok &= osresult1->setOtherJobResultName(i,"some name");
04390 if (!ok)
04391 throw ErrorClass("Error during setOtherJobResultName!");
04392 ok &= (!osresult1->IsEqual(osresult2));
04393 if (!ok)
04394 throw ErrorClass("setOtherJobResultName: osresult objects falsely compare equal!");
04395 ok &= osresult2->setOtherJobResultName(i,"some name");
04396 if (!ok)
04397 throw ErrorClass("Error during setOtherJobResultName!");
04398 ok &= (osresult1->IsEqual(osresult2));
04399 if (!ok)
04400 throw ErrorClass("setOtherJobResultName: osresult objects falsely compare unequal!");
04401
04402 ok &= osresult1->setOtherJobResultValue(i,"some value");
04403 if (!ok)
04404 throw ErrorClass("Error during setOtherJobResultValue!");
04405 ok &= (!osresult1->IsEqual(osresult2));
04406 if (!ok)
04407 throw ErrorClass("setOtherJobResultValue: osresult objects falsely compare equal!");
04408 ok &= osresult2->setOtherJobResultValue(i,"some value");
04409 if (!ok)
04410 throw ErrorClass("Error during setOtherJobResultValue!");
04411 ok &= (osresult1->IsEqual(osresult2));
04412 if (!ok)
04413 throw ErrorClass("setOtherJobResultValue: osresult objects falsely compare unequal!");
04414
04415 ok &= osresult1->setOtherJobResultDescription(i,"ABC 123");
04416 if (!ok)
04417 throw ErrorClass("Error during setOtherJobResultDescription!");
04418 ok &= (!osresult1->IsEqual(osresult2));
04419 if (!ok)
04420 throw ErrorClass("setOtherJobResultDescription: osresult objects falsely compare equal!");
04421 ok &= osresult2->setOtherJobResultDescription(i,"ABC 123");
04422 if (!ok)
04423 throw ErrorClass("Error during setOtherJobResultDescription!");
04424 ok &= (osresult1->IsEqual(osresult2));
04425 if (!ok)
04426 throw ErrorClass("setOtherJobResultDescription: osresult objects falsely compare unequal!");
04427 }
04428
04429 ok &= osresult1->setSolutionNumber(2);
04430 if (!ok)
04431 throw ErrorClass("Error during setSolutionNumber!");
04432 ok &= (!osresult1->IsEqual(osresult2));
04433 if (!ok)
04434 throw ErrorClass("setSolutionNumber: osresult objects falsely compare equal!");
04435 ok &= osresult2->setSolutionNumber(2);
04436 if (!ok)
04437 throw ErrorClass("Error during setSolutionNumber!");
04438 ok &= (osresult1->IsEqual(osresult2));
04439 if (!ok)
04440 throw ErrorClass("setSolutionNumber: osresult objects falsely compare unequal!");
04441
04442 ok &= osresult1->setVariableNumber(4);
04443 if (!ok)
04444 throw ErrorClass("Error during setVariableNumber!");
04445 ok &= (!osresult1->IsEqual(osresult2));
04446 if (!ok)
04447 throw ErrorClass("setVariableNumber: osresult objects falsely compare equal!");
04448 ok &= osresult2->setVariableNumber(4);
04449 if (!ok)
04450 throw ErrorClass("Error during setVariableNumber!");
04451 ok &= (osresult1->IsEqual(osresult2));
04452 if (!ok)
04453 throw ErrorClass("setVariableNumber: osresult objects falsely compare unequal!");
04454
04455 ok &= osresult1->setObjectiveNumber(2);
04456 if (!ok)
04457 throw ErrorClass("Error during setObjectiveNumber!");
04458 ok &= (!osresult1->IsEqual(osresult2));
04459 if (!ok)
04460 throw ErrorClass("setObjectiveNumber: osresult objects falsely compare equal!");
04461 ok &= osresult2->setObjectiveNumber(2);
04462 if (!ok)
04463 throw ErrorClass("Error during setObjectiveNumber!");
04464 ok &= (osresult1->IsEqual(osresult2));
04465 if (!ok)
04466 throw ErrorClass("setObjectiveNumber: osresult objects falsely compare unequal!");
04467
04468 ok &= osresult1->setConstraintNumber(3);
04469 if (!ok)
04470 throw ErrorClass("Error during setConstraintNumber!");
04471 ok &= (!osresult1->IsEqual(osresult2));
04472 if (!ok)
04473 throw ErrorClass("setConstraintNumber: osresult objects falsely compare equal!");
04474 ok &= osresult2->setConstraintNumber(3);
04475 if (!ok)
04476 throw ErrorClass("Error during setConstraintNumber!");
04477 ok &= (osresult1->IsEqual(osresult2));
04478 if (!ok)
04479 throw ErrorClass("setConstraintNumber: osresult objects falsely compare unequal!");
04480
04481 for (int i=0; i < 2; ++i)
04482 {
04483 ok &= osresult1->setSolutionTargetObjectiveIdx(i,-2);
04484 if (!ok)
04485 throw ErrorClass("Error during setSolutionTargetObjectiveIdx!");
04486 ok &= (!osresult1->IsEqual(osresult2));
04487 if (!ok)
04488 throw ErrorClass("setSolutionTargetObjectiveIdx: osresult objects falsely compare equal!");
04489 ok &= osresult2->setSolutionTargetObjectiveIdx(i,-2);
04490 if (!ok)
04491 throw ErrorClass("Error during setSolutionTargetObjectiveIdx!");
04492 ok &= (osresult1->IsEqual(osresult2));
04493 if (!ok)
04494 throw ErrorClass("setSolutionTargetObjectiveIdx: osresult objects falsely compare unequal!");
04495
04496 ok &= osresult1->setSolutionWeightedObjectives(i,"true");
04497 if (!ok)
04498 throw ErrorClass("Error during setSolutionWeightedObjectives!");
04499 ok &= (!osresult1->IsEqual(osresult2));
04500 if (!ok)
04501 throw ErrorClass("setSolutionWeightedObjectives: osresult objects falsely compare equal!");
04502 ok &= osresult2->setSolutionWeightedObjectives(i,"true");
04503 if (!ok)
04504 throw ErrorClass("Error during setSolutionWeightedObjectives!");
04505 ok &= (osresult1->IsEqual(osresult2));
04506 if (!ok)
04507 throw ErrorClass("setSolutionWeightedObjectives: osresult objects falsely compare unequal!");
04508
04509 ok &= osresult1->setSolutionStatusType(i,"locallyOptimal");
04510 if (!ok)
04511 throw ErrorClass("Error during setSolutionStatusType!");
04512 ok &= (!osresult1->IsEqual(osresult2));
04513 if (!ok)
04514 throw ErrorClass("setSolutionStatusType: osresult objects falsely compare equal!");
04515 ok &= osresult2->setSolutionStatusType(i,"locallyOptimal");
04516 if (!ok)
04517 throw ErrorClass("Error during setSolutionStatusType!");
04518 ok &= (osresult1->IsEqual(osresult2));
04519 if (!ok)
04520 throw ErrorClass("setSolutionStatusType: osresult objects falsely compare unequal!");
04521
04522 ok &= osresult1->setSolutionStatusDescription(i,"ABC 123");
04523 if (!ok)
04524 throw ErrorClass("Error during setSolutionStatusDescription!");
04525 ok &= (!osresult1->IsEqual(osresult2));
04526 if (!ok)
04527 throw ErrorClass("setSolutionStatusDescription: osresult objects falsely compare equal!");
04528 ok &= osresult2->setSolutionStatusDescription(i,"ABC 123");
04529 if (!ok)
04530 throw ErrorClass("Error during setSolutionStatusDescription!");
04531 ok &= (osresult1->IsEqual(osresult2));
04532 if (!ok)
04533 throw ErrorClass("setSolutionStatusDescription: osresult objects falsely compare unequal!");
04534
04535 ok &= osresult1->setNumberOfSolutionSubstatuses(i,3);
04536 if (!ok)
04537 throw ErrorClass("Error during setNumberOfSolutionSubstatuses!");
04538 ok &= (!osresult1->IsEqual(osresult2));
04539 if (!ok)
04540 throw ErrorClass("setNumberOfSolutionSubstatuses: osresult objects falsely compare equal!");
04541 ok &= osresult2->setNumberOfSolutionSubstatuses(i,3);
04542 if (!ok)
04543 throw ErrorClass("Error during setNumberOfSolutionSubstatuses!");
04544 ok &= (osresult1->IsEqual(osresult2));
04545 if (!ok)
04546 throw ErrorClass("setNumberOfSolutionSubstatuses: osresult objects falsely compare unequal!");
04547
04548 for (int j=0; j < 3; ++j)
04549 {
04550 ok &= osresult1->setSolutionSubstatusType(i,j,"other");
04551 if (!ok)
04552 throw ErrorClass("Error during setSolutionSubstatusType!");
04553 ok &= (!osresult1->IsEqual(osresult2));
04554 if (!ok)
04555 throw ErrorClass("setSolutionSubstatusType: osresult objects falsely compare equal!");
04556 ok &= osresult2->setSolutionSubstatusType(i,j,"other");
04557 if (!ok)
04558 throw ErrorClass("Error during setSolutionSubstatusType!");
04559 ok &= (osresult1->IsEqual(osresult2));
04560 if (!ok)
04561 throw ErrorClass("setSolutionSubstatusType: osresult objects falsely compare unequal!");
04562
04563 ok &= osresult1->setSolutionSubstatusDescription(i,j,"whatever");
04564 if (!ok)
04565 throw ErrorClass("Error during setSolutionSubstatusDescription!");
04566 ok &= (!osresult1->IsEqual(osresult2));
04567 if (!ok)
04568 throw ErrorClass("setSolutionSubstatusDescription: osresult objects falsely compare equal!");
04569 ok &= osresult2->setSolutionSubstatusDescription(i,j,"whatever");
04570 if (!ok)
04571 throw ErrorClass("Error during setSolutionSubstatusDescription!");
04572 ok &= (osresult1->IsEqual(osresult2));
04573 if (!ok)
04574 throw ErrorClass("setSolutionSubstatusDescription: osresult objects falsely compare unequal!");
04575 }
04576
04577 ok &= osresult1->setSolutionMessage(i,"ABC 123");
04578 if (!ok)
04579 throw ErrorClass("Error during setSolutionMessage!");
04580 ok &= (!osresult1->IsEqual(osresult2));
04581 if (!ok)
04582 throw ErrorClass("setSolutionMessage: osresult objects falsely compare equal!");
04583 ok &= osresult2->setSolutionMessage(i,"ABC 123");
04584 if (!ok)
04585 throw ErrorClass("Error during setSolutionMessage!");
04586 ok &= (osresult1->IsEqual(osresult2));
04587 if (!ok)
04588 throw ErrorClass("setSolutionMessage: osresult objects falsely compare unequal!");
04589
04590 ok &= osresult1->setNumberOfVarValues(i,3);
04591 if (!ok)
04592 throw ErrorClass("Error during setNumberOfVarValues!");
04593 ok &= (!osresult1->IsEqual(osresult2));
04594 if (!ok)
04595 throw ErrorClass("setNumberOfVarValues: osresult objects falsely compare equal!");
04596 ok &= osresult2->setNumberOfVarValues(i,3);
04597 if (!ok)
04598 throw ErrorClass("Error during setNumberOfVarValues!");
04599 ok &= (osresult1->IsEqual(osresult2));
04600 if (!ok)
04601 throw ErrorClass("setNumberOfVarValues: osresult objects falsely compare unequal!");
04602
04603 for (int j=0; j < 3; ++j)
04604 {
04605 ok &= osresult1->setVarValue(i,j,j,3.14);
04606 if (!ok)
04607 throw ErrorClass("Error during setVarValue!");
04608 ok &= (!osresult1->IsEqual(osresult2));
04609 if (!ok)
04610 throw ErrorClass("setVarValue: osresult objects falsely compare equal!");
04611 ok &= osresult2->setVarValue(i,j,j,3.14);
04612 if (!ok)
04613 throw ErrorClass("Error during setVarValue!");
04614 ok &= (osresult1->IsEqual(osresult2));
04615 if (!ok)
04616 throw ErrorClass("setVarValue: osresult objects falsely compare unequal!");
04617 }
04618
04619 ok &= osresult1->setNumberOfVarValuesString(i,3);
04620 if (!ok)
04621 throw ErrorClass("Error during setNumberOfVarValuesString!");
04622 ok &= (!osresult1->IsEqual(osresult2));
04623 if (!ok)
04624 throw ErrorClass("setNumberOfVarValuesString: osresult objects falsely compare equal!");
04625 ok &= osresult2->setNumberOfVarValuesString(i,3);
04626 if (!ok)
04627 throw ErrorClass("Error during setNumberOfVarValuesString!");
04628 ok &= (osresult1->IsEqual(osresult2));
04629 if (!ok)
04630 throw ErrorClass("setNumberOfVarValuesString: osresult objects falsely compare unequal!");
04631
04632 for (int j=0; j < 3; ++j)
04633 {
04634 ok &= osresult1->setVarValueString(i,j,j,"one");
04635 if (!ok)
04636 throw ErrorClass("Error during setVarValueString!");
04637 ok &= (!osresult1->IsEqual(osresult2));
04638 if (!ok)
04639 throw ErrorClass("setVarValueString: osresult objects falsely compare equal!");
04640 ok &= osresult2->setVarValueString(i,j,j,"one");
04641 if (!ok)
04642 throw ErrorClass("Error during setVarValueString!");
04643 ok &= (osresult1->IsEqual(osresult2));
04644 if (!ok)
04645 throw ErrorClass("setVarValueString: osresult objects falsely compare unequal!");
04646 }
04647
04648
04649
04650
04651
04652
04653
04654
04655
04656
04657
04658
04659
04660
04661
04662
04663
04664
04665
04666
04667
04668
04669
04670
04671
04672
04673
04674
04675
04676
04677
04678
04679 ok &= osresult1->setNumberOfOtherVariableResults(i,3);
04680 if (!ok)
04681 throw ErrorClass("Error during setNumberOfOtherVariableResults!");
04682 ok &= (!osresult1->IsEqual(osresult2));
04683 if (!ok)
04684 throw ErrorClass("setNumberOfOtherVariableResults: osresult objects falsely compare equal!");
04685 ok &= osresult2->setNumberOfOtherVariableResults(i,3);
04686 if (!ok)
04687 throw ErrorClass("Error during setNumberOfOtherVariableResults!");
04688 ok &= (osresult1->IsEqual(osresult2));
04689 if (!ok)
04690 throw ErrorClass("setNumberOfOtherVariableResults: osresult objects falsely compare unequal!");
04691
04692 for (int j=0; j < 3; ++j)
04693 {
04694 ok &= osresult1->setOtherVariableResultName(i,j,"other");
04695 if (!ok)
04696 throw ErrorClass("Error during setOtherVariableResultName!");
04697 ok &= (!osresult1->IsEqual(osresult2));
04698 if (!ok)
04699 throw ErrorClass("setOtherVariableResultName: osresult objects falsely compare equal!");
04700 ok &= osresult2->setOtherVariableResultName(i,j,"other");
04701 if (!ok)
04702 throw ErrorClass("Error during setOtherVariableResultName!");
04703 ok &= (osresult1->IsEqual(osresult2));
04704 if (!ok)
04705 throw ErrorClass("setOtherVariableResultName: osresult objects falsely compare unequal!");
04706
04707 ok &= osresult1->setOtherVariableResultDescription(i,j,"other");
04708 if (!ok)
04709 throw ErrorClass("Error during setOtherVariableResultDescription!");
04710 ok &= (!osresult1->IsEqual(osresult2));
04711 if (!ok)
04712 throw ErrorClass("setOtherVariableResultDescription: osresult objects falsely compare equal!");
04713 ok &= osresult2->setOtherVariableResultDescription(i,j,"other");
04714 if (!ok)
04715 throw ErrorClass("Error during setOtherVariableResultDescription!");
04716 ok &= (osresult1->IsEqual(osresult2));
04717 if (!ok)
04718 throw ErrorClass("setOtherVariableResultDescription: osresult objects falsely compare unequal!");
04719
04720 ok &= osresult1->setOtherVariableResultValue(i,j,"other");
04721 if (!ok)
04722 throw ErrorClass("Error during setOtherVariableResultValue!");
04723 ok &= (!osresult1->IsEqual(osresult2));
04724 if (!ok)
04725 throw ErrorClass("setOtherVariableResultValue: osresult objects falsely compare equal!");
04726 ok &= osresult2->setOtherVariableResultValue(i,j,"other");
04727 if (!ok)
04728 throw ErrorClass("Error during setOtherVariableResultValue!");
04729 ok &= (osresult1->IsEqual(osresult2));
04730 if (!ok)
04731 throw ErrorClass("setOtherVariableResultValue: osresult objects falsely compare unequal!");
04732
04733 ok &= osresult1->setOtherVariableResultNumberOfVar(i,j,3);
04734 if (!ok)
04735 throw ErrorClass("Error during setOtherVariableResultNumberOfVar!");
04736 ok &= (!osresult1->IsEqual(osresult2));
04737 if (!ok)
04738 throw ErrorClass("setOtherVariableResultNumberOfVar: osresult objects falsely compare equal!");
04739 ok &= osresult2->setOtherVariableResultNumberOfVar(i,j,3);
04740 if (!ok)
04741 throw ErrorClass("Error during setOtherVariableResultNumberOfVar!");
04742 ok &= (osresult1->IsEqual(osresult2));
04743 if (!ok)
04744 throw ErrorClass("setOtherVariableResultNumberOfVar: osresult objects falsely compare unequal!");
04745
04746 for (int k=0; k < 3; ++k)
04747 {
04748 ok &= osresult1->setOtherVariableResultVarIdx(i,j,k,k);
04749 if (!ok)
04750 throw ErrorClass("Error during setOtherVariableResultVarIdx!");
04751 ok &= (!osresult1->IsEqual(osresult2));
04752 if (!ok)
04753 throw ErrorClass("setOtherVariableResultVarIdx: osresult objects falsely compare equal!");
04754 ok &= osresult2->setOtherVariableResultVarIdx(i,j,k,k);
04755 if (!ok)
04756 throw ErrorClass("Error during setOtherVariableResultVarIdx!");
04757 ok &= (osresult1->IsEqual(osresult2));
04758 if (!ok)
04759 throw ErrorClass("setOtherVariableResultVarIdx: osresult objects falsely compare unequal!");
04760
04761 ok &= osresult1->setOtherVariableResultVar(i,j,k,"value");
04762 if (!ok)
04763 throw ErrorClass("Error during setOtherVariableResultVar!");
04764 ok &= (!osresult1->IsEqual(osresult2));
04765 if (!ok)
04766 throw ErrorClass("setOtherVariableResultVar: osresult objects falsely compare equal!");
04767 ok &= osresult2->setOtherVariableResultVar(i,j,k,"value");
04768 if (!ok)
04769 throw ErrorClass("Error during setOtherVariableResultVar!");
04770 ok &= (osresult1->IsEqual(osresult2));
04771 if (!ok)
04772 throw ErrorClass("setOtherVariableResultVar: osresult objects falsely compare unequal!");
04773 }
04774 }
04775
04776 ok &= osresult1->setNumberOfObjValues(i,2);
04777 if (!ok)
04778 throw ErrorClass("Error during setNumberOfObjValues!");
04779 ok &= (!osresult1->IsEqual(osresult2));
04780 if (!ok)
04781 throw ErrorClass("setNumberOfObjValues: osresult objects falsely compare equal!");
04782 ok &= osresult2->setNumberOfObjValues(i,2);
04783 if (!ok)
04784 throw ErrorClass("Error during setNumberOfObjValues!");
04785 ok &= (osresult1->IsEqual(osresult2));
04786 if (!ok)
04787 throw ErrorClass("setNumberOfObjValues: osresult objects falsely compare unequal!");
04788
04789 for (int j=0; j < 2; ++j)
04790 {
04791 ok &= osresult1->setObjValue(i,j,-2,3.14);
04792 if (!ok)
04793 throw ErrorClass("Error during setObjValue!");
04794 ok &= (!osresult1->IsEqual(osresult2));
04795 if (!ok)
04796 throw ErrorClass("setObjValue: osresult objects falsely compare equal!");
04797 ok &= osresult2->setObjValue(i,j,-2,3.14);
04798 if (!ok)
04799 throw ErrorClass("Error during setObjValue!");
04800 ok &= (osresult1->IsEqual(osresult2));
04801 if (!ok)
04802 throw ErrorClass("setObjValue: osresult objects falsely compare unequal!");
04803 }
04804
04805 ok &= osresult1->setNumberOfOtherObjectiveResults(i,3);
04806 if (!ok)
04807 throw ErrorClass("Error during setNumberOfOtherObjectiveResults!");
04808 ok &= (!osresult1->IsEqual(osresult2));
04809 if (!ok)
04810 throw ErrorClass("setNumberOfOtherObjectiveResults: osresult objects falsely compare equal!");
04811 ok &= osresult2->setNumberOfOtherObjectiveResults(i,3);
04812 if (!ok)
04813 throw ErrorClass("Error during setNumberOfOtherObjectiveResults!");
04814 ok &= (osresult1->IsEqual(osresult2));
04815 if (!ok)
04816 throw ErrorClass("setNumberOfOtherObjectiveResults: osresult objects falsely compare unequal!");
04817
04818 for (int j=0; j < 3; ++j)
04819 {
04820 ok &= osresult1->setOtherObjectiveResultName(i,j,"other");
04821 if (!ok)
04822 throw ErrorClass("Error during setOtherObjectiveResultName!");
04823 ok &= (!osresult1->IsEqual(osresult2));
04824 if (!ok)
04825 throw ErrorClass("setOtherObjectiveResultName: osresult objects falsely compare equal!");
04826 ok &= osresult2->setOtherObjectiveResultName(i,j,"other");
04827 if (!ok)
04828 throw ErrorClass("Error during setOtherObjectiveResultName!");
04829 ok &= (osresult1->IsEqual(osresult2));
04830 if (!ok)
04831 throw ErrorClass("setOtherObjectiveResultName: osresult objects falsely compare unequal!");
04832
04833 ok &= osresult1->setOtherObjectiveResultDescription(i,j,"other");
04834 if (!ok)
04835 throw ErrorClass("Error during setOtherObjectiveResultDescription!");
04836 ok &= (!osresult1->IsEqual(osresult2));
04837 if (!ok)
04838 throw ErrorClass("setOtherObjectiveResultDescription: osresult objects falsely compare equal!");
04839 ok &= osresult2->setOtherObjectiveResultDescription(i,j,"other");
04840 if (!ok)
04841 throw ErrorClass("Error during setOtherObjectiveResultDescription!");
04842 ok &= (osresult1->IsEqual(osresult2));
04843 if (!ok)
04844 throw ErrorClass("setOtherObjectiveResultDescription: osresult objects falsely compare unequal!");
04845
04846 ok &= osresult1->setOtherObjectiveResultValue(i,j,"other");
04847 if (!ok)
04848 throw ErrorClass("Error during setOtherObjectiveResultValue!");
04849 ok &= (!osresult1->IsEqual(osresult2));
04850 if (!ok)
04851 throw ErrorClass("setOtherObjectiveResultValue: osresult objects falsely compare equal!");
04852 ok &= osresult2->setOtherObjectiveResultValue(i,j,"other");
04853 if (!ok)
04854 throw ErrorClass("Error during setOtherObjectiveResultValue!");
04855 ok &= (osresult1->IsEqual(osresult2));
04856 if (!ok)
04857 throw ErrorClass("setOtherObjectiveResultValue: osresult objects falsely compare unequal!");
04858
04859 ok &= osresult1->setOtherObjectiveResultNumberOfObj(i,j,2);
04860 if (!ok)
04861 throw ErrorClass("Error during setOtherObjectiveResultNumberOfObj!");
04862 ok &= (!osresult1->IsEqual(osresult2));
04863 if (!ok)
04864 throw ErrorClass("setOtherObjectiveResultNumberOfObj: osresult objects falsely compare equal!");
04865 ok &= osresult2->setOtherObjectiveResultNumberOfObj(i,j,2);
04866 if (!ok)
04867 throw ErrorClass("Error during setOtherObjectiveResultNumberOfObj!");
04868 ok &= (osresult1->IsEqual(osresult2));
04869 if (!ok)
04870 throw ErrorClass("setOtherObjectiveResultNumberOfObj: osresult objects falsely compare unequal!");
04871
04872 for (int k=0; k < 2; ++k)
04873 {
04874 ok &= osresult1->setOtherObjectiveResultObjIdx(i,j,k,-2);
04875 if (!ok)
04876 throw ErrorClass("Error during setOtherObjectiveResultObjIdx!");
04877 ok &= (!osresult1->IsEqual(osresult2));
04878 if (!ok)
04879 throw ErrorClass("setOtherObjectiveResultObjIdx: osresult objects falsely compare equal!");
04880 ok &= osresult2->setOtherObjectiveResultObjIdx(i,j,k,-2);
04881 if (!ok)
04882 throw ErrorClass("Error during setOtherObjectiveResultObjIdx!");
04883 ok &= (osresult1->IsEqual(osresult2));
04884 if (!ok)
04885 throw ErrorClass("setOtherObjectiveResultObjIdx: osresult objects falsely compare unequal!");
04886
04887 ok &= osresult1->setOtherObjectiveResultObj(i,j,k,"value");
04888 if (!ok)
04889 throw ErrorClass("Error during setOtherObjectiveResultObj!");
04890 ok &= (!osresult1->IsEqual(osresult2));
04891 if (!ok)
04892 throw ErrorClass("setOtherObjectiveResultObj: osresult objects falsely compare equal!");
04893 ok &= osresult2->setOtherObjectiveResultObj(i,j,k,"value");
04894 if (!ok)
04895 throw ErrorClass("Error during setOtherObjectiveResultObj!");
04896 ok &= (osresult1->IsEqual(osresult2));
04897 if (!ok)
04898 throw ErrorClass("setOtherObjectiveResultObj: osresult objects falsely compare unequal!");
04899 }
04900 }
04901
04902 ok &= osresult1->setNumberOfDualValues(i,3);
04903 if (!ok)
04904 throw ErrorClass("Error during setNumberOfDualValues!");
04905 ok &= (!osresult1->IsEqual(osresult2));
04906 if (!ok)
04907 throw ErrorClass("setNumberOfDualValues: osresult objects falsely compare equal!");
04908 ok &= osresult2->setNumberOfDualValues(i,3);
04909 if (!ok)
04910 throw ErrorClass("Error during setNumberOfDualValues!");
04911 ok &= (osresult1->IsEqual(osresult2));
04912 if (!ok)
04913 throw ErrorClass("setNumberOfDualValues: osresult objects falsely compare unequal!");
04914
04915 for (int j=0; j < 3; ++j)
04916 {
04917 ok &= osresult1->setDualValue(i,j,j,3.14);
04918 if (!ok)
04919 throw ErrorClass("Error during setDualValue!");
04920 ok &= (!osresult1->IsEqual(osresult2));
04921 if (!ok)
04922 throw ErrorClass("setDualValue: osresult objects falsely compare equal!");
04923 ok &= osresult2->setDualValue(i,j,j,3.14);
04924 if (!ok)
04925 throw ErrorClass("Error during setDualValue!");
04926 ok &= (osresult1->IsEqual(osresult2));
04927 if (!ok)
04928 throw ErrorClass("setDualValue: osresult objects falsely compare unequal!");
04929 }
04930
04931 ok &= osresult1->setNumberOfOtherConstraintResults(i,3);
04932 if (!ok)
04933 throw ErrorClass("Error during setNumberOfOtherConstraintResults!");
04934 ok &= (!osresult1->IsEqual(osresult2));
04935 if (!ok)
04936 throw ErrorClass("setNumberOfOtherConstraintResults: osresult objects falsely compare equal!");
04937 ok &= osresult2->setNumberOfOtherConstraintResults(i,3);
04938 if (!ok)
04939 throw ErrorClass("Error during setNumberOfOtherConstraintResults!");
04940 ok &= (osresult1->IsEqual(osresult2));
04941 if (!ok)
04942 throw ErrorClass("setNumberOfOtherConstraintResults: osresult objects falsely compare unequal!");
04943
04944 for (int j=0; j < 3; ++j)
04945 {
04946 ok &= osresult1->setOtherConstraintResultName(i,j,"other");
04947 if (!ok)
04948 throw ErrorClass("Error during setOtherConstraintResultName!");
04949 ok &= (!osresult1->IsEqual(osresult2));
04950 if (!ok)
04951 throw ErrorClass("setOtherConstraintResultName: osresult objects falsely compare equal!");
04952 ok &= osresult2->setOtherConstraintResultName(i,j,"other");
04953 if (!ok)
04954 throw ErrorClass("Error during setOtherConstraintResultName!");
04955 ok &= (osresult1->IsEqual(osresult2));
04956 if (!ok)
04957 throw ErrorClass("setOtherConstraintResultName: osresult objects falsely compare unequal!");
04958
04959 ok &= osresult1->setOtherConstraintResultDescription(i,j,"other");
04960 if (!ok)
04961 throw ErrorClass("Error during setOtherConstraintResultDescription!");
04962 ok &= (!osresult1->IsEqual(osresult2));
04963 if (!ok)
04964 throw ErrorClass("setOtherConstraintResultDescription: osresult objects falsely compare equal!");
04965 ok &= osresult2->setOtherConstraintResultDescription(i,j,"other");
04966 if (!ok)
04967 throw ErrorClass("Error during setOtherConstraintResultDescription!");
04968 ok &= (osresult1->IsEqual(osresult2));
04969 if (!ok)
04970 throw ErrorClass("setOtherConstraintResultDescription: osresult objects falsely compare unequal!");
04971
04972 ok &= osresult1->setOtherConstraintResultValue(i,j,"other");
04973 if (!ok)
04974 throw ErrorClass("Error during setOtherConstraintResultValue!");
04975 ok &= (!osresult1->IsEqual(osresult2));
04976 if (!ok)
04977 throw ErrorClass("setOtherConstraintResultValue: osresult objects falsely compare equal!");
04978 ok &= osresult2->setOtherConstraintResultValue(i,j,"other");
04979 if (!ok)
04980 throw ErrorClass("Error during setOtherConstraintResultValue!");
04981 ok &= (osresult1->IsEqual(osresult2));
04982 if (!ok)
04983 throw ErrorClass("setOtherConstraintResultValue: osresult objects falsely compare unequal!");
04984
04985 ok &= osresult1->setOtherConstraintResultNumberOfCon(i,j,3);
04986 if (!ok)
04987 throw ErrorClass("Error during setOtherConstraintResultNumberOfCon!");
04988 ok &= (!osresult1->IsEqual(osresult2));
04989 if (!ok)
04990 throw ErrorClass("setOtherConstraintResultNumberOfCon: osresult objects falsely compare equal!");
04991 ok &= osresult2->setOtherConstraintResultNumberOfCon(i,j,3);
04992 if (!ok)
04993 throw ErrorClass("Error during setOtherConstraintResultNumberOfCon!");
04994 ok &= (osresult1->IsEqual(osresult2));
04995 if (!ok)
04996 throw ErrorClass("setOtherConstraintResultNumberOfCon: osresult objects falsely compare unequal!");
04997
04998 for (int k=0; k < 3; ++k)
04999 {
05000 ok &= osresult1->setOtherConstraintResultConIdx(i,j,k,k);
05001 if (!ok)
05002 throw ErrorClass("Error during setOtherConstraintResultConIdx!");
05003 ok &= (!osresult1->IsEqual(osresult2));
05004 if (!ok)
05005 throw ErrorClass("setOtherConstraintResultConIdx: osresult objects falsely compare equal!");
05006 ok &= osresult2->setOtherConstraintResultConIdx(i,j,k,k);
05007 if (!ok)
05008 throw ErrorClass("Error during setOtherConstraintResultConIdx!");
05009 ok &= (osresult1->IsEqual(osresult2));
05010 if (!ok)
05011 throw ErrorClass("setOtherConstraintResultConIdx: osresult objects falsely compare unequal!");
05012
05013 ok &= osresult1->setOtherConstraintResultCon(i,j,k,"value");
05014 if (!ok)
05015 throw ErrorClass("Error during setOtherConstraintResultCon!");
05016 ok &= (!osresult1->IsEqual(osresult2));
05017 if (!ok)
05018 throw ErrorClass("setOtherConstraintResultCon: osresult objects falsely compare equal!");
05019 ok &= osresult2->setOtherConstraintResultCon(i,j,k,"value");
05020 if (!ok)
05021 throw ErrorClass("Error during setOtherConstraintResultCon!");
05022 ok &= (osresult1->IsEqual(osresult2));
05023 if (!ok)
05024 throw ErrorClass("setOtherConstraintResultCon: osresult objects falsely compare unequal!");
05025 }
05026 }
05027
05028 ok &= osresult1->setNumberOfOtherSolutionResults(i,3);
05029 if (!ok)
05030 throw ErrorClass("Error during setNumberOfOtherSolutionResults!");
05031 ok &= (!osresult1->IsEqual(osresult2));
05032 if (!ok)
05033 throw ErrorClass("setNumberOfOtherSolutionResults: osresult objects falsely compare equal!");
05034 ok &= osresult2->setNumberOfOtherSolutionResults(i,3);
05035 if (!ok)
05036 throw ErrorClass("Error during setNumberOfOtherSolutionResults!");
05037 ok &= (osresult1->IsEqual(osresult2));
05038 if (!ok)
05039 throw ErrorClass("setNumberOfOtherSolutionResults: osresult objects falsely compare unequal!");
05040
05041 for (int j=0; j < 3; ++j)
05042 {
05043 ok &= osresult1->setOtherSolutionResultName(i,j,"other");
05044 if (!ok)
05045 throw ErrorClass("Error during setOtherSolutionResultName!");
05046 ok &= (!osresult1->IsEqual(osresult2));
05047 if (!ok)
05048 throw ErrorClass("setOtherSolutionResultName: osresult objects falsely compare equal!");
05049 ok &= osresult2->setOtherSolutionResultName(i,j,"other");
05050 if (!ok)
05051 throw ErrorClass("Error during setOtherSolutionResultName!");
05052 ok &= (osresult1->IsEqual(osresult2));
05053 if (!ok)
05054 throw ErrorClass("setOtherSolutionResultName: osresult objects falsely compare unequal!");
05055
05056 ok &= osresult1->setOtherSolutionResultCategory(i,j,"other");
05057 if (!ok)
05058 throw ErrorClass("Error during setOtherSolutionResultCategory!");
05059 ok &= (!osresult1->IsEqual(osresult2));
05060 if (!ok)
05061 throw ErrorClass("setOtherSolutionResultCategory: osresult objects falsely compare equal!");
05062 ok &= osresult2->setOtherSolutionResultCategory(i,j,"other");
05063 if (!ok)
05064 throw ErrorClass("Error during setOtherSolutionResultCategory!");
05065 ok &= (osresult1->IsEqual(osresult2));
05066 if (!ok)
05067 throw ErrorClass("setOtherSolutionResultCategory: osresult objects falsely compare unequal!");
05068
05069 ok &= osresult1->setOtherSolutionResultDescription(i,j,"other");
05070 if (!ok)
05071 throw ErrorClass("Error during setOtherSolutionResultDescription!");
05072 ok &= (!osresult1->IsEqual(osresult2));
05073 if (!ok)
05074 throw ErrorClass("setOtherSolutionResultDescription: osresult objects falsely compare equal!");
05075 ok &= osresult2->setOtherSolutionResultDescription(i,j,"other");
05076 if (!ok)
05077 throw ErrorClass("Error during setOtherSolutionResultDescription!");
05078 ok &= (osresult1->IsEqual(osresult2));
05079 if (!ok)
05080 throw ErrorClass("setOtherSolutionResultDescription: osresult objects falsely compare unequal!");
05081
05082 ok &= osresult1->setOtherSolutionResultNumberOfItems(i,j,3);
05083 if (!ok)
05084 throw ErrorClass("Error during setOtherSolutionResultNumberOfItems!");
05085 ok &= (!osresult1->IsEqual(osresult2));
05086 if (!ok)
05087 throw ErrorClass("setOtherSolutionResultNumberOfItems: osresult objects falsely compare equal!");
05088 ok &= osresult2->setOtherSolutionResultNumberOfItems(i,j,3);
05089 if (!ok)
05090 throw ErrorClass("Error during setOtherSolutionResultNumberOfItems!");
05091 ok &= (osresult1->IsEqual(osresult2));
05092 if (!ok)
05093 throw ErrorClass("setOtherSolutionResultNumberOfItems: osresult objects falsely compare unequal!");
05094
05095 for (int k=0; k < 3; ++k)
05096 {
05097 ok &= osresult1->setOtherSolutionResultItem(i,j,k,"blabla");
05098 if (!ok)
05099 throw ErrorClass("Error during setOtherSolutionResultItem!");
05100 ok &= (!osresult1->IsEqual(osresult2));
05101 if (!ok)
05102 throw ErrorClass("setOtherSolutionResultItem: osresult objects falsely compare equal!");
05103 ok &= osresult2->setOtherSolutionResultItem(i,j,k,"blabla");
05104 if (!ok)
05105 throw ErrorClass("Error during setOtherSolutionResultItem!");
05106 ok &= (osresult1->IsEqual(osresult2));
05107 if (!ok)
05108 throw ErrorClass("setOtherSolutionResultItem: osresult objects falsely compare unequal!");
05109 }
05110 }
05111 }
05112
05113 ok &= osresult1->setNumberOfSolverOutputs(3);
05114 if (!ok)
05115 throw ErrorClass("Error during setNumberOfSolverOutputs!");
05116 ok &= (!osresult1->IsEqual(osresult2));
05117 if (!ok)
05118 throw ErrorClass("setNumberOfSolverOutputs: osresult objects falsely compare equal!");
05119 ok &= osresult2->setNumberOfSolverOutputs(3);
05120 if (!ok)
05121 throw ErrorClass("Error during setNumberOfSolverOutputs!");
05122 ok &= (osresult1->IsEqual(osresult2));
05123 if (!ok)
05124 throw ErrorClass("setNumberOfSolverOutputs: osresult objects falsely compare unequal!");
05125
05126 for (int i=0; i < 3; ++i)
05127 {
05128 ok &= osresult1->setSolverOutputName(i,"some name");
05129 if (!ok)
05130 throw ErrorClass("Error during setSolverOutputName!");
05131 ok &= (!osresult1->IsEqual(osresult2));
05132 if (!ok)
05133 throw ErrorClass("setSolverOutputName: osresult objects falsely compare equal!");
05134 ok &= osresult2->setSolverOutputName(i,"some name");
05135 if (!ok)
05136 throw ErrorClass("Error during setSolverOutputName!");
05137 ok &= (osresult1->IsEqual(osresult2));
05138 if (!ok)
05139 throw ErrorClass("setSolverOutputName: osresult objects falsely compare unequal!");
05140
05141 ok &= osresult1->setSolverOutputCategory(i,"some name");
05142 if (!ok)
05143 throw ErrorClass("Error during setSolverOutputCategory!");
05144 ok &= (!osresult1->IsEqual(osresult2));
05145 if (!ok)
05146 throw ErrorClass("setSolverOutputCategory: osresult objects falsely compare equal!");
05147 ok &= osresult2->setSolverOutputCategory(i,"some name");
05148 if (!ok)
05149 throw ErrorClass("Error during setSolverOutputCategory!");
05150 ok &= (osresult1->IsEqual(osresult2));
05151 if (!ok)
05152 throw ErrorClass("setSolverOutputCategory: osresult objects falsely compare unequal!");
05153
05154 ok &= osresult1->setSolverOutputDescription(i,"some name");
05155 if (!ok)
05156 throw ErrorClass("Error during setSolverOutputDescription!");
05157 ok &= (!osresult1->IsEqual(osresult2));
05158 if (!ok)
05159 throw ErrorClass("setSolverOutputDescription: osresult objects falsely compare equal!");
05160 ok &= osresult2->setSolverOutputDescription(i,"some name");
05161 if (!ok)
05162 throw ErrorClass("Error during setSolverOutputDescription!");
05163 ok &= (osresult1->IsEqual(osresult2));
05164 if (!ok)
05165 throw ErrorClass("setSolverOutputDescription: osresult objects falsely compare unequal!");
05166
05167 ok &= osresult1->setSolverOutputNumberOfItems(i,3);
05168 if (!ok)
05169 throw ErrorClass("Error during setSolverOutputNumberOfItems!");
05170 ok &= (!osresult1->IsEqual(osresult2));
05171 if (!ok)
05172 throw ErrorClass("setSolverOutputNumberOfItems: osresult objects falsely compare equal!");
05173 ok &= osresult2->setSolverOutputNumberOfItems(i,3);
05174 if (!ok)
05175 throw ErrorClass("Error during setSolverOutputNumberOfItems!");
05176 ok &= (osresult1->IsEqual(osresult2));
05177 if (!ok)
05178 throw ErrorClass("setSolverOutputNumberOfItems: osresult objects falsely compare unequal!");
05179
05180 for (int j=0; j < 3; ++j)
05181 {
05182 ok &= osresult1->setSolverOutputItem(i,j,"other");
05183 if (!ok)
05184 throw ErrorClass("Error during setSolverOutputItem!");
05185 ok &= (!osresult1->IsEqual(osresult2));
05186 if (!ok)
05187 throw ErrorClass("setSolverOutputItem: osresult objects falsely compare equal!");
05188 ok &= osresult2->setSolverOutputItem(i,j,"other");
05189 if (!ok)
05190 throw ErrorClass("Error during setSolverOutputItem!");
05191 ok &= (osresult1->IsEqual(osresult2));
05192 if (!ok)
05193 throw ErrorClass("setSolverOutputItem: osresult objects falsely compare unequal!");
05194 }
05195 }
05196
05197 if (!ok)
05198 throw ErrorClass("Unspecified error while testing set() methods");
05199
05200 unitTestResult << "TEST " << nOfTest << ": Successful test of OSrL set() tools" << std::endl;
05201 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
05202
05203 cout << endl << "TEST " << ++nOfTest << ": OSrLWriter and OSrLReader " << endl << endl;
05204
05205
05206 osrlwriter = new OSrLWriter();
05207 osrlreader = new OSrLReader();
05208 std::string tempOSrL;
05209
05210 tempOSrL = osrlwriter->writeOSrL( osresult1);
05211 osresult3 = osrlreader->readOSrL( tempOSrL);
05212 ok &= (osresult1->IsEqual(osresult3));
05213 if (!ok)
05214 throw ErrorClass("Writing an osresult then reading leads to loss of data");
05215
05216 unitTestResult << "TEST " << nOfTest << ": Successful test of OSrLWriter and OSrLReader" << std::endl;
05217 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
05218
05224 cout << endl << "TEST " << ++nOfTest << ": OSrL get() methods" << endl << endl;
05225
05226 if (osresult2 != NULL) delete osresult2;
05227 osresult2 = new OSResult();
05228
05229 std::string tempStr;
05230 double tempDbl;
05231 int tempInt;
05232
05233 tempStr = osresult1->getGeneralStatusType();
05234 ok &= osresult2->setGeneralStatusType(tempStr);
05235 if (!ok)
05236 throw ErrorClass("Error during setGeneralStatusType!");
05237 tempStr = osresult1->getGeneralStatusDescription();
05238 ok &= osresult2->setGeneralStatusDescription(tempStr);
05239 if (!ok)
05240 throw ErrorClass("Error during setGeneralStatusDescription!");
05241
05242 tempInt = osresult1->getNumberOfGeneralSubstatuses();
05243 ok &= osresult2->setNumberOfGeneralSubstatuses(tempInt);
05244 if (!ok)
05245 throw ErrorClass("Error during setNumberOfGeneralSubstatuses!");
05246 for (int i=0; i < tempInt; i++)
05247 {
05248 tempStr = osresult1->getGeneralSubstatusName(i);
05249 ok &= osresult2->setGeneralSubstatusName(i,tempStr);
05250 if (!ok)
05251 throw ErrorClass("Error during setGeneralSubstatusName!");
05252 tempStr = osresult1->getGeneralSubstatusDescription(i);
05253 ok &= osresult2->setGeneralSubstatusDescription(i,tempStr);
05254 if (!ok)
05255 throw ErrorClass("Error during setGeneralSubstatusDescription!");
05256 }
05257
05258 tempStr = osresult1->getGeneralMessage();
05259 ok &= osresult2->setGeneralMessage(tempStr);
05260 if (!ok)
05261 throw ErrorClass("Error during setGeneralMessage!");
05262 tempStr = osresult1->getServiceURI();
05263 ok &= osresult2->setServiceURI(tempStr);
05264 if (!ok)
05265 throw ErrorClass("Error during setServiceURI!");
05266 tempStr = osresult1->getServiceName();
05267 ok &= osresult2->setServiceName(tempStr);
05268 if (!ok)
05269 throw ErrorClass("Error during setServiceName!");
05270 tempStr = osresult1->getInstanceName();
05271 ok &= osresult2->setInstanceName(tempStr);
05272 if (!ok)
05273 throw ErrorClass("Error during setInstanceName!");
05274 tempStr = osresult1->getJobID();
05275 ok &= osresult2->setJobID(tempStr);
05276 if (!ok)
05277 throw ErrorClass("Error during setJobID!");
05278 tempStr = osresult1->getSolverInvoked();
05279 ok &= osresult2->setSolverInvoked(tempStr);
05280 if (!ok)
05281 throw ErrorClass("Error during setSolverInvoked!");
05282 tempStr = osresult1->getTimeStamp();
05283 ok &= osresult2->setTimeStamp(tempStr);
05284 if (!ok)
05285 throw ErrorClass("Error during setTimeStamp!");
05286
05287 tempInt = osresult1->getNumberOfOtherGeneralResults();
05288 ok &= osresult2->setNumberOfOtherGeneralResults(tempInt);
05289 if (!ok)
05290 throw ErrorClass("Error during setNumberOfOtherGeneralResults!");
05291 for (int i=0; i < tempInt; i++)
05292 {
05293 tempStr = osresult1->getOtherGeneralResultName(i);
05294 ok &= osresult2->setOtherGeneralResultName(i,tempStr);
05295 if (!ok)
05296 throw ErrorClass("Error during setOtherGeneralResultName!");
05297 tempStr = osresult1->getOtherGeneralResultValue(i);
05298 ok &= osresult2->setOtherGeneralResultValue(i,tempStr);
05299 if (!ok)
05300 throw ErrorClass("Error during setOtherGeneralResultValue!");
05301 tempStr = osresult1->getOtherGeneralResultDescription(i);
05302 ok &= osresult2->setOtherGeneralResultDescription(i,tempStr);
05303 if (!ok)
05304 throw ErrorClass("Error during setOtherGeneralResultDescription!");
05305 }
05306
05307 tempStr = osresult1->getSystemInformation();
05308 ok &= osresult2->setSystemInformation(tempStr);
05309 if (!ok)
05310 throw ErrorClass("Error during setSystemInformation!");
05311 tempStr = osresult1->getAvailableDiskSpaceUnit();
05312 ok &= osresult2->setAvailableDiskSpaceUnit(tempStr);
05313 if (!ok)
05314 throw ErrorClass("Error during setAvailableDiskSpaceUnit!");
05315 tempStr = osresult1->getAvailableDiskSpaceDescription();
05316 ok &= osresult2->setAvailableDiskSpaceDescription(tempStr);
05317 if (!ok)
05318 throw ErrorClass("Error during setAvailableDiskSpaceDescription!");
05319 tempDbl = osresult1->getAvailableDiskSpaceValue();
05320 ok &= osresult2->setAvailableDiskSpaceValue(tempDbl);
05321 if (!ok)
05322 throw ErrorClass("Error during setAvailableDiskSpaceValue!");
05323 tempStr = osresult1->getAvailableMemoryUnit();
05324 ok &= osresult2->setAvailableMemoryUnit(tempStr);
05325 if (!ok)
05326 throw ErrorClass("Error during setAvailableMemoryUnit!");
05327 tempStr = osresult1->getAvailableMemoryDescription();
05328 ok &= osresult2->setAvailableMemoryDescription(tempStr);
05329 if (!ok)
05330 throw ErrorClass("Error during setAvailableMemoryDescription!");
05331 tempDbl = osresult1->getAvailableMemoryValue();
05332 ok &= osresult2->setAvailableMemoryValue(tempDbl);
05333 if (!ok)
05334 throw ErrorClass("Error during setAvailableMemoryValue!");
05335 tempStr = osresult1->getAvailableCPUSpeedUnit();
05336 ok &= osresult2->setAvailableCPUSpeedUnit(tempStr);
05337 if (!ok)
05338 throw ErrorClass("Error during setAvailableCPUSpeedUnit!");
05339 tempStr = osresult1->getAvailableCPUSpeedDescription();
05340 ok &= osresult2->setAvailableCPUSpeedDescription(tempStr);
05341 if (!ok)
05342 throw ErrorClass("Error during setAvailableCPUSpeedDescription!");
05343 tempDbl = osresult1->getAvailableCPUSpeedValue();
05344 ok &= osresult2->setAvailableCPUSpeedValue(tempDbl);
05345 if (!ok)
05346 throw ErrorClass("Error during setAvailableCPUSpeedValue!");
05347 tempStr = osresult1->getAvailableCPUNumberDescription();
05348 ok &= osresult2->setAvailableCPUNumberDescription(tempStr);
05349 if (!ok)
05350 throw ErrorClass("Error during setAvailableCPUNumberDescription!");
05351 tempInt = osresult1->getAvailableCPUNumberValue();
05352 ok &= osresult2->setAvailableCPUNumberValue(tempInt);
05353 if (!ok)
05354 throw ErrorClass("Error during setAvailableCPUNumberValue!");
05355
05356 tempInt = osresult1->getNumberOfOtherSystemResults();
05357 ok &= osresult2->setNumberOfOtherSystemResults(tempInt);
05358 if (!ok)
05359 throw ErrorClass("Error during setNumberOfOtherSystemResults!");
05360 for (int i=0; i < tempInt; i++)
05361 {
05362 tempStr = osresult1->getOtherSystemResultName(i);
05363 ok &= osresult2->setOtherSystemResultName(i,tempStr);
05364 if (!ok)
05365 throw ErrorClass("Error during setOtherSystemResultName!");
05366 tempStr = osresult1->getOtherSystemResultValue(i);
05367 ok &= osresult2->setOtherSystemResultValue(i,tempStr);
05368 if (!ok)
05369 throw ErrorClass("Error during setOtherSystemResultValue!");
05370 tempStr = osresult1->getOtherSystemResultDescription(i);
05371 ok &= osresult2->setOtherSystemResultDescription(i,tempStr);
05372 if (!ok)
05373 throw ErrorClass("Error during setOtherSystemResultDescription!");
05374 }
05375
05376 tempStr = osresult1->getCurrentState();
05377 ok &= osresult2->setCurrentState(tempStr);
05378 if (!ok)
05379 throw ErrorClass("Error during setCurrentState!");
05380 tempInt = osresult1->getCurrentJobCount();
05381 ok &= osresult2->setCurrentJobCount(tempInt);
05382 if (!ok)
05383 throw ErrorClass("Error during setCurrentJobCount!");
05384 tempInt = osresult1->getTotalJobsSoFar();
05385 ok &= osresult2->setTotalJobsSoFar(tempInt);
05386 if (!ok)
05387 throw ErrorClass("Error during setTotalJobsSoFar!");
05388 tempStr = osresult1->getTimeServiceStarted();
05389 ok &= osresult2->setTimeServiceStarted(tempStr);
05390 if (!ok)
05391 throw ErrorClass("Error during setTimeServiceStarted!");
05392 tempDbl = osresult1->getServiceUtilization();
05393 ok &= osresult2->setServiceUtilization(tempDbl);
05394 if (!ok)
05395 throw ErrorClass("Error during setServiceUtilization!");
05396
05397 tempInt = osresult1->getNumberOfOtherServiceResults();
05398 ok &= osresult2->setNumberOfOtherServiceResults(tempInt);
05399 if (!ok)
05400 throw ErrorClass("Error during setNumberOfOtherServiceResults!");
05401 for (int i=0; i < tempInt; i++)
05402 {
05403 tempStr = osresult1->getOtherServiceResultName(i);
05404 ok &= osresult2->setOtherServiceResultName(i,tempStr);
05405 if (!ok)
05406 throw ErrorClass("Error during setOtherServiceResultName!");
05407 tempStr = osresult1->getOtherServiceResultValue(i);
05408 ok &= osresult2->setOtherServiceResultValue(i,tempStr);
05409 if (!ok)
05410 throw ErrorClass("Error during setOtherServiceResultValue!");
05411 tempStr = osresult1->getOtherServiceResultDescription(i);
05412 ok &= osresult2->setOtherServiceResultDescription(i,tempStr);
05413 if (!ok)
05414 throw ErrorClass("Error during setOtherServiceResultDescription!");
05415 }
05416
05417 tempStr = osresult1->getJobStatus();
05418 ok &= osresult2->setJobStatus(tempStr);
05419 if (!ok)
05420 throw ErrorClass("Error during setJobStatus!");
05421 tempStr = osresult1->getJobSubmitTime();
05422 ok &= osresult2->setJobSubmitTime(tempStr);
05423 if (!ok)
05424 throw ErrorClass("Error during setJobSubmitTime!");
05425 tempStr = osresult1->getScheduledStartTime();
05426 ok &= osresult2->setScheduledStartTime(tempStr);
05427 if (!ok)
05428 throw ErrorClass("Error during setScheduledStartTime!");
05429 tempStr = osresult1->getActualStartTime();
05430 ok &= osresult2->setActualStartTime(tempStr);
05431 if (!ok)
05432 throw ErrorClass("Error during setActualStartTime!");
05433 tempStr = osresult1->getJobEndTime();
05434 ok &= osresult2->setJobEndTime(tempStr);
05435 if (!ok)
05436 throw ErrorClass("Error during setJobEndTime!");
05437
05438 tempInt = osresult1->getNumberOfTimes();
05439 ok &= osresult2->setNumberOfTimes(tempInt);
05440 if (!ok)
05441 throw ErrorClass("Error during setNumberOfTimes!");
05442 for (int i=0; i < tempInt; i++)
05443 {
05444 string tempStr1,tempStr2,tempStr3,tempStr4;
05445 tempStr1 = osresult1->getTimingInfoType(i);
05446 tempStr2 = osresult1->getTimingInfoCategory(i);
05447 tempStr3 = osresult1->getTimingInfoUnit(i);
05448 tempStr4 = osresult1->getTimingInfoDescription(i);
05449 tempDbl = osresult1->getTimingInfoValue(i);
05450 ok &= osresult2->setTimingInformation(i,tempStr1,tempStr2,tempStr3,tempStr4,tempDbl);
05451 if (!ok)
05452 throw ErrorClass("Error during setTimingInformation!");
05453 }
05454
05455 tempStr = osresult1->getUsedDiskSpaceUnit();
05456 ok &= osresult2->setUsedDiskSpaceUnit(tempStr);
05457 if (!ok)
05458 throw ErrorClass("Error during setUsedDiskSpaceUnit!");
05459 tempStr = osresult1->getUsedDiskSpaceDescription();
05460 ok &= osresult2->setUsedDiskSpaceDescription(tempStr);
05461 if (!ok)
05462 throw ErrorClass("Error during setUsedDiskSpaceDescription!");
05463 tempDbl = osresult1->getUsedDiskSpaceValue();
05464 ok &= osresult2->setUsedDiskSpaceValue(tempDbl);
05465 if (!ok)
05466 throw ErrorClass("Error during setUsedDiskSpaceValue!");
05467 tempStr = osresult1->getUsedMemoryUnit();
05468 ok &= osresult2->setUsedMemoryUnit(tempStr);
05469 if (!ok)
05470 throw ErrorClass("Error during setUsedMemoryUnit!");
05471 tempStr = osresult1->getUsedMemoryDescription();
05472 ok &= osresult2->setUsedMemoryDescription(tempStr);
05473 if (!ok)
05474 throw ErrorClass("Error during setUsedMemoryDescription!");
05475 tempDbl = osresult1->getUsedMemoryValue();
05476 ok &= osresult2->setUsedMemoryValue(tempDbl);
05477 if (!ok)
05478 throw ErrorClass("Error during setUsedMemoryValue!");
05479 tempStr = osresult1->getUsedCPUSpeedUnit();
05480 ok &= osresult2->setUsedCPUSpeedUnit(tempStr);
05481 if (!ok)
05482 throw ErrorClass("Error during setUsedCPUSpeedUnit!");
05483 tempStr = osresult1->getUsedCPUSpeedDescription();
05484 ok &= osresult2->setUsedCPUSpeedDescription(tempStr);
05485 if (!ok)
05486 throw ErrorClass("Error during setUsedCPUSpeedDescription!");
05487 tempDbl = osresult1->getUsedCPUSpeedValue();
05488 ok &= osresult2->setUsedCPUSpeedValue(tempDbl);
05489 if (!ok)
05490 throw ErrorClass("Error during setUsedCPUSpeedValue!");
05491 tempStr = osresult1->getUsedCPUNumberDescription();
05492 ok &= osresult2->setUsedCPUNumberDescription(tempStr);
05493 if (!ok)
05494 throw ErrorClass("Error during setUsedCPUNumberDescription!");
05495 tempInt = osresult1->getUsedCPUNumberValue();
05496 ok &= osresult2->setUsedCPUNumberValue(tempInt);
05497 if (!ok)
05498 throw ErrorClass("Error during setUsedCPUNumberValue!");
05499
05500 tempInt = osresult1->getNumberOfOtherJobResults();
05501 ok &= osresult2->setNumberOfOtherJobResults(tempInt);
05502 if (!ok)
05503 throw ErrorClass("Error during setNumberOfOtherJobResults!");
05504 for (int i=0; i < tempInt; i++)
05505 {
05506 tempStr = osresult1->getOtherJobResultName(i);
05507 ok &= osresult2->setOtherJobResultName(i,tempStr);
05508 if (!ok)
05509 throw ErrorClass("Error during setOtherJobResultName!");
05510 tempStr = osresult1->getOtherJobResultValue(i);
05511 ok &= osresult2->setOtherJobResultValue(i,tempStr);
05512 if (!ok)
05513 throw ErrorClass("Error during setOtherJobResultValue!");
05514 tempStr = osresult1->getOtherJobResultDescription(i);
05515 ok &= osresult2->setOtherJobResultDescription(i,tempStr);
05516 if (!ok)
05517 throw ErrorClass("Error during setOtherJobResultDescription!");
05518 }
05519
05520 tempInt = osresult1->getSolutionNumber();
05521 ok &= osresult2->setSolutionNumber(tempInt);
05522 if (!ok)
05523 throw ErrorClass("Error during setSolutionNumber!");
05524 int nSoln = tempInt;
05525 int nVar, nObj, nCon, nOther, nItem;
05526
05527 tempInt = osresult1->getVariableNumber();
05528 ok &= osresult2->setVariableNumber(tempInt);
05529 if (!ok)
05530 throw ErrorClass("Error during setVariableNumber!");
05531 tempInt = osresult1->getObjectiveNumber();
05532 ok &= osresult2->setObjectiveNumber(tempInt);
05533 if (!ok)
05534 throw ErrorClass("Error during setObjectiveNumber!");
05535 tempInt = osresult1->getConstraintNumber();
05536 ok &= osresult2->setConstraintNumber(tempInt);
05537 if (!ok)
05538 throw ErrorClass("Error during setConstraintNumber!");
05539
05540 for (int i=0; i < nSoln; ++i)
05541 {
05542 tempInt = osresult1->getSolutionTargetObjectiveIdx(i);
05543 ok &= osresult2->setSolutionTargetObjectiveIdx(i,tempInt);
05544 if (!ok)
05545 throw ErrorClass("Error during setSolutionTargetObjectiveIdx!");
05546 bool tempLog = osresult1->getSolutionWeightedObjectives(i);
05547 ok &= osresult2->setSolutionWeightedObjectives(i,tempLog);
05548 if (!ok)
05549 throw ErrorClass("Error during setSolutionWeightedObjectives!");
05550 tempStr = osresult1->getSolutionStatusType(i);
05551 ok &= osresult2->setSolutionStatusType(i,tempStr);
05552 if (!ok)
05553 throw ErrorClass("Error during setSolutionStatusType!");
05554 tempStr = osresult1->getSolutionStatusDescription(i);
05555 ok &= osresult2->setSolutionStatusDescription(i,tempStr);
05556 if (!ok)
05557 throw ErrorClass("Error during setSolutionStatusDescription!");
05558
05559 tempInt = osresult1->getNumberOfSolutionSubstatuses(i);
05560 ok &= osresult2->setNumberOfSolutionSubstatuses(i,tempInt);
05561 if (!ok)
05562 throw ErrorClass("Error during setNumberOfSolutionSubstatuses!");
05563
05564 for (int j=0; j < tempInt; ++j)
05565 {
05566 tempStr = osresult1->getSolutionSubstatusType(i,j);
05567 ok &= osresult2->setSolutionSubstatusType(i,j,tempStr);
05568 if (!ok)
05569 throw ErrorClass("Error during setSolutionSubstatusType!");
05570 tempStr = osresult1->getSolutionSubstatusDescription(i,j);
05571 ok &= osresult2->setSolutionSubstatusDescription(i,j,tempStr);
05572 if (!ok)
05573 throw ErrorClass("Error during setSolutionSubstatusDescription!");
05574 }
05575
05576 tempStr = osresult1->getSolutionMessage(i);
05577 ok &= osresult2->setSolutionMessage(i,tempStr);
05578 if (!ok)
05579 throw ErrorClass("Error during setSolutionMessage!");
05580
05581 tempInt = osresult1->getNumberOfVarValues(i);
05582 ok &= osresult2->setNumberOfVarValues(i,tempInt);
05583 if (!ok)
05584 throw ErrorClass("Error during setNumberOfVarValues!");
05585 nVar = tempInt;
05586 for (int j=0; j < nVar; ++j)
05587 {
05588 tempInt = osresult1->getVarValueIdx(i,j);
05589 tempDbl = osresult1->getVarValue(i,j);
05590 ok &= osresult2->setVarValue(i,j,tempInt,tempDbl);
05591 if (!ok)
05592 throw ErrorClass("Error during setVarValue!");
05593 }
05594
05595 tempInt = osresult1->getNumberOfVarValuesString(i);
05596 ok &= osresult2->setNumberOfVarValuesString(i,tempInt);
05597 if (!ok)
05598 throw ErrorClass("Error during setNumberOfVarValuesString!");
05599 nVar = tempInt;
05600 for (int j=0; j < nVar; ++j)
05601 {
05602 tempInt = osresult1->getVarValueStringIdx(i,j);
05603 tempStr = osresult1->getVarValueString(i,j);
05604 ok &= osresult2->setVarValueString(i,j,tempInt,tempStr);
05605 if (!ok)
05606 throw ErrorClass("Error during setVarValueString!");
05607 }
05608
05609
05610
05611
05612
05613
05614
05615
05616
05617
05618
05619
05620
05621
05622
05623
05624
05625 tempInt = osresult1->getNumberOfOtherVariableResults(i);
05626 ok &= osresult2->setNumberOfOtherVariableResults(i,tempInt);
05627 if (!ok)
05628 throw ErrorClass("Error during setNumberOfOtherVariableResults!");
05629 nOther = tempInt;
05630 for (int j=0; j < nOther; ++j)
05631 {
05632 tempStr = osresult1->getOtherVariableResultName(i,j);
05633 ok &= osresult2->setOtherVariableResultName(i,j,tempStr);
05634 if (!ok)
05635 throw ErrorClass("Error during setOtherVariableResultName!");
05636 tempStr = osresult1->getOtherVariableResultDescription(i,j);
05637 ok &= osresult2->setOtherVariableResultDescription(i,j,tempStr);
05638 if (!ok)
05639 throw ErrorClass("Error during setOtherVariableResultDescription!");
05640 tempStr = osresult1->getOtherVariableResultValue(i,j);
05641 ok &= osresult2->setOtherVariableResultValue(i,j,tempStr);
05642 if (!ok)
05643 throw ErrorClass("Error during setOtherVariableResultValue!");
05644 tempInt = osresult1->getOtherVariableResultNumberOfVar(i,j);
05645 ok &= osresult2->setOtherVariableResultNumberOfVar(i,j,tempInt);
05646 if (!ok)
05647 throw ErrorClass("Error during setOtherVariableResultNumberOfVar!");
05648
05649 int nVar = tempInt;
05650 for (int k=0; k < nVar; ++k)
05651 {
05652 tempInt = osresult1->getOtherVariableResultVarIdx(i,j,k);
05653 ok &= osresult2->setOtherVariableResultVarIdx(i,j,k,tempInt);
05654 if (!ok)
05655 throw ErrorClass("Error during setOtherVariableResultVarIdx!");
05656 tempStr = osresult1->getOtherVariableResultVar(i,j,k);
05657 ok &= osresult2->setOtherVariableResultVar(i,j,k,tempStr);
05658 if (!ok)
05659 throw ErrorClass("Error during setOtherVariableResultVar!");
05660 }
05661 }
05662
05663 tempInt = osresult1->getNumberOfObjValues(i);
05664 ok &= osresult2->setNumberOfObjValues(i,tempInt);
05665 if (!ok)
05666 throw ErrorClass("Error during setNumberOfObjValues!");
05667 nObj = tempInt;
05668 for (int j=0; j < nObj; ++j)
05669 {
05670 tempInt = osresult1->getObjValueIdx(i,j);
05671 tempDbl = osresult1->getObjValue(i,j);
05672 ok &= osresult2->setObjValue(i,j,tempInt,tempDbl);
05673 if (!ok)
05674 throw ErrorClass("Error during setObjValue!");
05675 }
05676
05677 tempInt = osresult1->getNumberOfOtherObjectiveResults(i);
05678 ok &= osresult2->setNumberOfOtherObjectiveResults(i,tempInt);
05679 if (!ok)
05680 throw ErrorClass("Error during setNumberOfOtherObjectiveResults!");
05681 nOther = tempInt;
05682 for (int j=0; j < nOther; ++j)
05683 {
05684 tempStr = osresult1->getOtherObjectiveResultName(i,j);
05685 ok &= osresult2->setOtherObjectiveResultName(i,j,tempStr);
05686 if (!ok)
05687 throw ErrorClass("Error during setOtherObjectiveResultName!");
05688 tempStr = osresult1->getOtherObjectiveResultDescription(i,j);
05689 ok &= osresult2->setOtherObjectiveResultDescription(i,j,tempStr);
05690 if (!ok)
05691 throw ErrorClass("Error during setOtherObjectiveResultDescription!");
05692 tempStr = osresult1->getOtherObjectiveResultValue(i,j);
05693 ok &= osresult2->setOtherObjectiveResultValue(i,j,tempStr);
05694 if (!ok)
05695 throw ErrorClass("Error during setOtherObjectiveResultValue!");
05696 tempInt = osresult1->getOtherObjectiveResultNumberOfObj(i,j);
05697 ok &= osresult2->setOtherObjectiveResultNumberOfObj(i,j,tempInt);
05698 if (!ok)
05699 throw ErrorClass("Error during setOtherObjectiveResultNumberOfObj!");
05700
05701 nObj = tempInt;
05702 for (int k=0; k < nObj; ++k)
05703 {
05704 tempInt = osresult1->getOtherObjectiveResultObjIdx(i,j,k);
05705 ok &= osresult2->setOtherObjectiveResultObjIdx(i,j,k,tempInt);
05706 if (!ok)
05707 throw ErrorClass("Error during setOtherObjectiveResultObjIdx!");
05708 tempStr = osresult1->getOtherObjectiveResultObj(i,j,k);
05709 ok &= osresult2->setOtherObjectiveResultObj(i,j,k,tempStr);
05710 if (!ok)
05711 throw ErrorClass("Error during setOtherObjectiveResultObj!");
05712 }
05713 }
05714
05715 tempInt = osresult1->getNumberOfDualValues(i);
05716 ok &= osresult2->setNumberOfDualValues(i,tempInt);
05717 if (!ok)
05718 throw ErrorClass("Error during setNumberOfDualValues!");
05719 nCon = tempInt;
05720 for (int j=0; j < nCon; ++j)
05721 {
05722 tempInt = osresult1->getDualValueIdx(i,j);
05723 tempDbl = osresult1->getDualValue(i,j);
05724 ok &= osresult2->setDualValue(i,j,tempInt,tempDbl);
05725 if (!ok)
05726 throw ErrorClass("Error during setDualValue!");
05727 }
05728
05729 tempInt = osresult1->getNumberOfOtherConstraintResults(i);
05730 ok &= osresult2->setNumberOfOtherConstraintResults(i,tempInt);
05731 if (!ok)
05732 throw ErrorClass("Error during setNumberOfOtherConstraintResults!");
05733 nOther = tempInt;
05734 for (int j=0; j < nOther; ++j)
05735 {
05736 tempStr = osresult1->getOtherConstraintResultName(i,j);
05737 ok &= osresult2->setOtherConstraintResultName(i,j,tempStr);
05738 if (!ok)
05739 throw ErrorClass("Error during setOtherConstraintResultName!");
05740 tempStr = osresult1->getOtherConstraintResultDescription(i,j);
05741 ok &= osresult2->setOtherConstraintResultDescription(i,j,tempStr);
05742 if (!ok)
05743 throw ErrorClass("Error during setOtherConstraintResultDescription!");
05744 tempStr = osresult1->getOtherConstraintResultValue(i,j);
05745 ok &= osresult2->setOtherConstraintResultValue(i,j,tempStr);
05746 if (!ok)
05747 throw ErrorClass("Error during setOtherConstraintResultValue!");
05748 tempInt = osresult1->getOtherConstraintResultNumberOfCon(i,j);
05749 ok &= osresult2->setOtherConstraintResultNumberOfCon(i,j,tempInt);
05750 if (!ok)
05751 throw ErrorClass("Error during setOtherConstraintResultNumberOfCon!");
05752
05753 nCon = tempInt;
05754 for (int k=0; k < nCon; ++k)
05755 {
05756 tempInt = osresult1->getOtherConstraintResultConIdx(i,j,k);
05757 ok &= osresult2->setOtherConstraintResultConIdx(i,j,k,tempInt);
05758 if (!ok)
05759 throw ErrorClass("Error during setOtherConstraintResultConIdx!");
05760 tempStr = osresult1->getOtherConstraintResultCon(i,j,k);
05761 ok &= osresult2->setOtherConstraintResultCon(i,j,k,tempStr);
05762 if (!ok)
05763 throw ErrorClass("Error during setOtherConstraintResultCon!");
05764 }
05765 }
05766
05767 tempInt = osresult1->getNumberOfOtherSolutionResults(i);
05768 ok &= osresult2->setNumberOfOtherSolutionResults(i,tempInt);
05769 if (!ok)
05770 throw ErrorClass("Error during setNumberOfOtherSolutionResults!");
05771 nOther = tempInt;
05772 for (int j=0; j < nOther; ++j)
05773 {
05774 tempStr = osresult1->getOtherSolutionResultName(i,j);
05775 ok &= osresult2->setOtherSolutionResultName(i,j,tempStr);
05776 if (!ok)
05777 throw ErrorClass("Error during setOtherSolutionResultName!");
05778 tempStr = osresult1->getOtherSolutionResultCategory(i,j);
05779 ok &= osresult2->setOtherSolutionResultCategory(i,j,tempStr);
05780 if (!ok)
05781 throw ErrorClass("Error during setOtherSolutionResultCategory!");
05782 tempStr = osresult1->getOtherSolutionResultDescription(i,j);
05783 ok &= osresult2->setOtherSolutionResultDescription(i,j,tempStr);
05784 if (!ok)
05785 throw ErrorClass("Error during setOtherSolutionResultDescription!");
05786 tempInt = osresult1->getOtherSolutionResultNumberOfItems(i,j);
05787 ok &= osresult2->setOtherSolutionResultNumberOfItems(i,j,tempInt);
05788 if (!ok)
05789 throw ErrorClass("Error during setOtherSolutionResultNumberOfItems!");
05790
05791 nItem = tempInt;
05792 for (int k=0; k < nItem; ++k)
05793 {
05794 tempStr = osresult1->getOtherSolutionResultItem(i,j,k);
05795 ok &= osresult2->setOtherSolutionResultItem(i,j,k,tempStr);
05796 if (!ok)
05797 throw ErrorClass("Error during setSolutionResultItem!");
05798 }
05799 }
05800 }
05801
05802 tempInt = osresult1->getNumberOfSolverOutputs();
05803 ok &= osresult2->setNumberOfSolverOutputs(tempInt);
05804 if (!ok)
05805 throw ErrorClass("Error during setNumberOfSolverOutputs!");
05806 nOther = tempInt;
05807 for (int i=0; i < nOther; ++i)
05808 {
05809 tempStr = osresult1->getSolverOutputName(i);
05810 ok &= osresult2->setSolverOutputName(i,tempStr);
05811 if (!ok)
05812 throw ErrorClass("Error during setSolverOutputName!");
05813 tempStr = osresult1->getSolverOutputCategory(i);
05814 ok &= osresult2->setSolverOutputCategory(i,tempStr);
05815 if (!ok)
05816 throw ErrorClass("Error during setSolverOutputCategory!");
05817 tempStr = osresult1->getSolverOutputDescription(i);
05818 ok &= osresult2->setSolverOutputDescription(i,tempStr);
05819 if (!ok)
05820 throw ErrorClass("Error during setSolverOutputDescription!");
05821 tempInt = osresult1->getSolverOutputNumberOfItems(i);
05822 ok &= osresult2->setSolverOutputNumberOfItems(i,tempInt);
05823 if (!ok)
05824 throw ErrorClass("Error during setSolverOutputNumberOfItems!");
05825 for (int j=0; j < tempInt; ++j)
05826 {
05827 tempStr = osresult1->getSolverOutputItem(i,j);
05828 ok &= osresult2->setSolverOutputItem(i,j,tempStr);
05829 if (!ok)
05830 throw ErrorClass("Error during setSolverOutputItem!");
05831 }
05832 }
05833
05834 ok &= osresult1->IsEqual(osresult2);
05835 if (!ok)
05836 throw ErrorClass("Error duplicating OSResult object using get() and set() methods");
05837
05838 std::cout << "OSResult object duplicated with get() and set() methods" << std::endl;
05839
05840 if (osrlwriter != NULL) delete osrlwriter;
05841 if (osrlreader != NULL) delete osrlreader;
05842 if (osresult1 != NULL) delete osresult1;
05843 if (osresult2 != NULL) delete osresult2;
05844
05845 unitTestResult << "TEST " << nOfTest << ": Successful test of OSrL tools" << std::endl;
05846 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
05847 }
05848
05849 catch(const ErrorClass& eclass){
05850 cout << endl << endl << endl;
05851 if (osrlwriter != NULL) delete osrlwriter;
05852 if (osrlreader != NULL) delete osrlreader;
05853 if (osresult1 != NULL) delete osresult1;
05854 if (osresult2 != NULL) delete osresult2;
05855
05856 unitTestResultFailure << eclass.errormsg << endl;
05857 unitTestResultFailure << "There was a failure in the test of OSrL get() methods" << endl;
05858 }
05859
05860
05861 try{
05870 cout << endl << "TEST " << ++nOfTest << ": OSrL parser" << endl << endl;
05871 std::string tmpOSrL;
05872 clock_t start, finish;
05873 double duration;
05874 std::string osrl;
05875 OSResult *osresult = NULL;
05876 osrlwriter = new OSrLWriter();
05877 osrlreader = new OSrLReader();
05878
05879 cout << "Test parsing an OSrL file" << endl;
05880 cout << "First read the OSrL file into a string" << endl;
05881 osrlFileName = dataDir + "osrlFiles" + dirsep + "parserTest.osrl";
05882 start = clock();
05883 osrl = fileUtil->getFileAsString( osrlFileName.c_str() );
05884 finish = clock();
05885 duration = (double) (finish - start) / CLOCKS_PER_SEC;
05886 cout << "Reading the file into a string took (seconds): "<< duration << endl;
05887 cout << osrl << endl;
05888 start = clock();
05889 cout << "PARSE THE OSRL STRING INTO AN OSRESULT OBJECT" << endl;
05890 osresult = osrlreader->readOSrL( osrl);
05891 cout << "Finished read; write OSResult object to temporary string" << endl;
05892
05893 tmpOSrL = osrlwriter->writeOSrL( osresult) ;
05894 cout << tmpOSrL << endl;
05895
05896
05897
05898 delete osrlreader;
05899 osrlreader = NULL;
05900 osrlreader = new OSrLReader();
05901 cout << "Parse temporary string" << endl;
05902 osrlreader->readOSrL( tmpOSrL);
05903 delete osrlwriter;
05904 osrlwriter = NULL;
05905 delete osrlreader;
05906 osrlreader = NULL;
05907
05908
05909
05910
05911
05912
05913
05914
05915
05916
05917
05918
05919
05920
05921
05922
05923
05924
05925
05926
05927
05928
05929
05930
05931
05932
05933
05934
05935
05936
05937
05938
05939
05940
05941
05942
05943
05944
05945
05946
05947
05948
05949
05950
05951
05952
05953
05954
05955
05956
05957
05958
05959
05960
05961
05962
05963
05964
05965
05966
05967
05968
05969
05970
05971
05972
05973
05974
05975
05976
05977
05978
05979
05980
05981
05982
05983
05984
05985
05986
05987
05988
05989
05990
05991
05992
05993
05994
05995
05996
05997
05998
05999
06000
06001
06002
06003
06004
06005
06006
06007
06008
06009
06010
06011
06012
06013
06014
06015
06016
06017
06018
06019
06020
06021
06022
06023
06024
06025
06026
06027
06028
06029
06030
06031
06032
06033
06034
06035
06036
06037
06038
06039
06040
06041
06042
06043
06044
06045
06046
06047
06048
06049
06050
06051
06052
06053
06054
06055
06056
06057
06058
06059
06060
06061
06062
06063
06064
06065
06066
06067
06068
06069
06070
06071
06072
06073
06074
06075
06076
06077
06078
06079
06080
06081
06082
06083
06084
06085
06086
06087
06088
06089
06090
06091
06092
06093
06094
06095
06096
06097
06098
06099
06100
06101
06102
06103
06104
06105
06106
06107
06108
06109
06110
06111
06112
06113
06114
06115
06116
06117
06118
06119
06120
06121
06122
06123
06124
06125
06126
06127
06128
06129
06130
06131
06132
06133
06134
06135
06136
06137
06138
06139
06140
06141
06142
06143
06144
06145
06146
06147
06148
06149
06150
06151
06152
06153
06154
06155
06156
06157
06158
06159
06160
06161
06162
06163
06164
06165
06166
06167
06168
06169
06170
06171
06172
06173
06174
06175
06176
06177
06178
06179
06180
06181
06182
06183 unitTestResult <<
06184 "TEST " << nOfTest << ": Successful test of OSrL parser on file parserTest.osrl"
06185 << std::endl;
06186 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
06187 }
06188 catch(const ErrorClass& eclass){
06189
06190 cout << endl << endl << endl;
06191 if(osrlwriter != NULL) delete osrlwriter;
06192 if(osrlreader != NULL) delete osrlreader;
06193
06194 unitTestResultFailure << eclass.errormsg << endl;
06195 unitTestResultFailure << "There was a failure in the test for reading OSrL" << endl;
06196 }
06197
06198 }
06199
06200 delete fileUtil;
06201 fileUtil = NULL;
06202
06203 if(unitTestResultFailure.str().length() > 0){
06204 cout << endl << "THE UNIT TEST PASSED THE FOLLOWING:" << endl << endl;
06205 cout << unitTestResult.str() << endl << endl;
06206 cout << "UNFORTUNATELY, YOU FAILED ON THE FOLLOWING:" << endl << endl;
06207 cout << unitTestResultFailure.str() << endl << endl;
06208 cout << "Conclusion: FAILURE" << endl;
06209 return 1;
06210 }
06211 else{
06212 cout << endl << "THE UNIT TEST PASSED THE FOLLOWING:" << endl << endl;
06213 cout << unitTestResult.str() << endl << endl;
06214 cout << "All tests completed successfully" << endl << endl;
06215 #ifdef GUS_DEBUG
06216 cout << "Make sure to #undef GUS_DEBUG before committing!!!" << endl << endl;
06217 #endif
06218 return 0;
06219 }
06220 }
06221
06222 double getObjVal( std::string osrl){
06223 std::string sObjVal;
06224 double dObjVal;
06225 string::size_type pos2;
06226 string::size_type pos1 = osrl.find( "<obj ");
06227 if(pos1 != std::string::npos){
06228
06229 pos1 = osrl.find(">", pos1 + 1);
06230 if(pos1 != std::string::npos){
06231
06232 pos2 = osrl.find( "</obj", pos1 + 1);
06233 if( pos2 != std::string::npos){
06234
06235 sObjVal = osrl.substr( pos1 + 1, pos2 - pos1 - 1);
06236
06237
06238 return dObjVal = os_strtod(sObjVal.c_str(), NULL);
06239 }
06240 else return OSNAN;
06241 }
06242 else return OSNAN;
06243 }
06244 else return OSNAN;
06245 }