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