00001
00122 #define DEBUG
00123
00124
00125 #include <cppad/cppad.hpp>
00126
00127 #include "OSCoinSolver.h"
00128 #include "OSConfig.h"
00129 #include "OSmps2osil.h"
00130 #include "OSResult.h"
00131 #include "OSOption.h"
00132 #include "OSiLReader.h"
00133 #include "OSiLWriter.h"
00134 #include "OSoLReader.h"
00135 #include "OSoLWriter.h"
00136 #include "OSrLReader.h"
00137 #include "OSrLWriter.h"
00138 #include "OSInstance.h"
00139 #include "OSFileUtil.h"
00140 #include "CoinError.hpp"
00141
00142 #include "OSDefaultSolver.h"
00143 #include "OSWSUtil.h"
00144 #include "OSSolverAgent.h"
00145 #include "OShL.h"
00146 #include "OSErrorClass.h"
00147 #include "OSBase64.h"
00148 #include "OSMathUtil.h"
00149
00150
00151 #include <CoinMpsIO.hpp>
00152 #include <CoinPackedMatrix.hpp>
00153
00154
00155 #include "CoinError.hpp"
00156 #include "CoinHelperFunctions.hpp"
00157
00158
00159
00160 #ifdef COIN_HAS_GLPK
00161 #include <OsiGlpkSolverInterface.hpp>
00162 #endif
00163
00164 #ifdef COIN_HAS_COUENNE
00165 #include "OSCouenneSolver.h"
00166 #endif
00167
00168 #ifdef COIN_HAS_ASL
00169 #include "OSnl2osil.h"
00170 #endif
00171
00172 #ifdef COIN_HAS_LINDO
00173 #include "OSLindoSolver.h"
00174 #endif
00175
00176 #ifdef COIN_HAS_IPOPT
00177 #include "OSIpoptSolver.h"
00178 #endif
00179
00180 #ifdef COIN_HAS_BONMIN
00181 #include "OSBonminSolver.h"
00182 #endif
00183
00184 #ifdef COIN_HAS_GAMSUTILS
00185 #include "OSgams2osil.hpp"
00186 #endif
00187
00188 #ifdef HAVE_CTIME
00189 # include <ctime>
00190 #else
00191 # ifdef HAVE_TIME_H
00192 # include <time.h>
00193 # else
00194 # error "don't have header file for time"
00195 # endif
00196 #endif
00197
00198
00199 #ifdef HAVE_CMATH
00200 # include <cmath>
00201 #else
00202 # ifdef HAVE_CMATH_H
00203 # include <cmath.h>
00204 # endif
00205 #endif
00206
00207
00208
00209 #ifdef HAVE_CSTDIO
00210 # include <cstdio>
00211 #else
00212 # ifdef HAVE_STDIO_H
00213 # include <stdio.h>
00214 # else
00215 # error "don't have header file for stdio"
00216 # endif
00217 #endif
00218
00219
00220
00221
00222
00223 using std::cout;
00224 using std::endl;
00225 using std::ostringstream;
00226
00227
00228 int main(int argC, char* argV[])
00229 {
00230
00231
00232
00233 WindowsErrorPopupBlocker();
00234 double getObjVal(std::string osrl);
00235 void tempPrintArrays(OSResult* os);
00236
00237 bool ok;
00238 double check;
00239
00240
00241 bool BASIC_TESTS;
00242 bool SOLVER_TESTS;
00243 bool THOROUGH;
00244 bool PARSER_TESTS;
00245 bool OTHER_TESTS;
00246
00247
00248
00249 std::string testConfig = "install";
00250 int testLevel = 1;
00251 if( argC > 2){
00252 std::cout << "Too Many Input Parameters" << std::endl;
00253 return 1;
00254 }
00255 if(argC == 2){
00256 testConfig = argV[ 1];
00257 std::cout << "test configuration = \'" << testConfig << "\'"<< std::endl;
00258 }
00259
00260 #ifdef GUS_DEBUG
00261 testConfig = "parser";
00262 #endif
00263
00264 if (testConfig == "install") testLevel = 1;
00265 if (testConfig == "parser" ) testLevel = 2;
00266 if (testConfig == "parsers") testLevel = 2;
00267 if (testConfig == "solver" ) testLevel = 3;
00268 if (testConfig == "solvers") testLevel = 3;
00269 if (testConfig == "release") testLevel = 4;
00270 if (testConfig == "nightlyBuild") testLevel = 4;
00271 if (testConfig == "all") testLevel = 4;
00272 if (testConfig == "NB") testLevel = 4;
00273 if (testConfig == "nb") testLevel = 4;
00274
00275 switch (testLevel){
00276 case 1:
00277 BASIC_TESTS = true;
00278 SOLVER_TESTS = true;
00279 THOROUGH = false;
00280 PARSER_TESTS = false;
00281 OTHER_TESTS = false;
00282 break;
00283 case 2:
00284 BASIC_TESTS = false;
00285 SOLVER_TESTS = false;
00286 THOROUGH = false;
00287 PARSER_TESTS = true;
00288 OTHER_TESTS = false;
00289 break;
00290 case 3:
00291 BASIC_TESTS = false;
00292 SOLVER_TESTS = true;
00293 THOROUGH = true;
00294 PARSER_TESTS = false;
00295 OTHER_TESTS = false;
00296 break;
00297 case 4:
00298 default:
00299 BASIC_TESTS = true;
00300 SOLVER_TESTS = true;
00301 THOROUGH = true;
00302 PARSER_TESTS = true;
00303 OTHER_TESTS = true;
00304 break;
00305 }
00306
00307 if (BASIC_TESTS) std::cout << "Perform basic tests" << std::endl;
00308 if (SOLVER_TESTS) {
00309 if (THOROUGH)
00310 std::cout << "Perform thorough solver tests" << std::endl;
00311 else
00312 std::cout << "Perform simple solver tests" << std::endl;
00313 }
00314 if (PARSER_TESTS) std::cout << "Perform parser tests" << std::endl;
00315 if (OTHER_TESTS) std::cout << "Perform other tests" << std::endl;
00316 std::cout << std::endl << std::endl;
00317
00318
00319
00320 cout << "START UNIT TEST" << endl;
00321 int nOfTest = 0;
00322
00323 FileUtil *fileUtil = NULL;
00324 #ifdef COIN_HAS_ASL
00325 OSnl2osil *nl2osil = NULL;
00326 #endif
00327 OSmps2osil *mps2osil = NULL;
00328 DefaultSolver *solver = NULL;
00329 OSiLReader *osilreader = NULL;
00330 OSiLWriter *osilwriter = NULL;
00331 OSoLReader *osolreader = NULL;
00332 OSoLReader *osolreader2 = NULL;
00333 OSrLReader *osrlreader = NULL;
00334 OSrLWriter *osrlwriter = NULL;
00335 OSInstance *osinstance = NULL;
00336 OSOption *osoption = NULL;
00337 OSOption *osoption2 = NULL;
00338 OSOption *osoption3 = NULL;
00339
00340
00341 std::string *nodeNames1 = NULL;
00342 std::string *nodeNames2 = NULL;
00343 double *x = NULL;
00344
00345
00346 std::string osilFileName;
00347 std::string osolFileName;
00348 std::string osrlFileName;
00349 std::string nlFileName;
00350 std::string mpsFileName;
00351 std::string osil;
00352 std::string osol;
00353 ostringstream unitTestResult;
00354 ostringstream unitTestResultFailure;
00355
00356
00357 const char dirsep = CoinFindDirSeparator();
00358
00359 std::string dataDir;
00360 dataDir = dirsep == '/' ? "../data/" : "..\\data\\";
00361 #ifdef GUS_DEBUG
00362 dataDir = "C:\\datafiles\\research\\OS\\OS-trunk-work\\OS\\data\\";
00363 #endif
00364
00365 fileUtil = new FileUtil();
00366
00367
00368 if(BASIC_TESTS == true){
00369
00370
00371 try{
00372 std::cout << endl << "TEST " << ++nOfTest << ": Try to read a sample file" << endl << endl;
00373 osilFileName = dataDir + "osilFiles" + dirsep + "parincLinearByRow.osil";
00374
00375 std::cout << "The file is: " ;
00376 std::cout << osilFileName << std::endl;
00377 osil = fileUtil->getFileAsString( osilFileName.c_str() );
00378 std::cout << "Done reading the test file" << std::endl;
00379 osilreader = new OSiLReader();
00380 osinstance = osilreader->readOSiL( osil);
00381
00382 unitTestResult << "TEST " << nOfTest << ": Reading files successfully" << std::endl;
00383 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
00384 osilwriter = new OSiLWriter();
00385 osilwriter->m_bWhiteSpace = true;
00386 std::cout << osilwriter->writeOSiL( osinstance) << std::endl;
00387 delete osilreader;
00388 osilreader = NULL;
00389 delete osilwriter;
00390 osilwriter = NULL;
00391 }
00392 catch(const ErrorClass& eclass){
00393 unitTestResultFailure << "Sorry Unit Test Failed Reading a file: " + eclass.errormsg<< endl;
00394
00395 unitTestResultFailure << "Since we can't read files we are terminating" << endl;
00396 cout << unitTestResultFailure.str() << endl << endl;
00397 cout << "Conclusion: FAILURE" << endl;
00398 if (osilreader != NULL)
00399 {
00400 delete osilreader;
00401 osilreader = NULL;
00402 }
00403 if (osilwriter != NULL)
00404 {
00405 delete osilwriter;
00406 osilwriter = NULL;
00407 }
00408 return 1;
00409 }
00410
00411
00412 try{
00413 cout << endl << "TEST " << ++nOfTest << ": Lossless I/O" << endl << endl;
00414 osilwriter = new OSiLWriter();
00415 osilreader = new OSiLReader();
00416
00417 mpsFileName = dataDir + "mpsFiles" + dirsep + "parinc.mps";
00418 mps2osil = new OSmps2osil( mpsFileName);
00419
00420 mps2osil->createOSInstance() ;
00421
00422 OSInstance *osinstance1 = mps2osil->osinstance;
00423 std::string sOSiL = osilwriter->writeOSiL( osinstance1 );
00424 #ifdef DEBUG
00425 cout << sOSiL << endl;
00426 #endif
00428 // now create a second object
00429 OSInstance *osinstance2 = osilreader->readOSiL( sOSiL);
00430
00431 int nvals = osinstance1->instanceData->linearConstraintCoefficients->numberOfValues;
00432 double theDiff, theMax;
00433 int theIndex = -1;
00434 theMax = 0;
00435 for(int i = 0; i < nvals; i++){
00436 theDiff = fabs(osinstance1->instanceData->linearConstraintCoefficients->value->el[ i] -
00437 osinstance2->instanceData->linearConstraintCoefficients->value->el[ i])/ fabs(osinstance1->instanceData->linearConstraintCoefficients->value->el[ i]);
00438 if(theDiff > theMax){
00439 theMax = theDiff;
00440 theIndex = i;
00441 }
00442
00443 }
00444 std::cout << "MAXIMUM DIFF = " << theMax << std::endl;
00445 if(theMax > 0)
00446 {
00447 std::cout << "MAXIMUM DIFF INDEX = " << theIndex << std::endl;
00448 unitTestResult << "WARNING: you do not have lossless IO" << std::endl;
00449 }
00450 else
00451 {
00452 unitTestResult << "TEST " << nOfTest << ": Passed lossless IO test" << std::endl;
00453 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
00454 }
00455 delete mps2osil;
00456 mps2osil = NULL;
00457 delete osilreader;
00458 osilreader = NULL;
00459 delete osilwriter;
00460 osilwriter = NULL;
00461
00462 }
00463 catch(const ErrorClass& eclass){
00464 unitTestResultFailure << "Unit Test Failed Lossless I/O test: " + eclass.errormsg<< endl;
00465 if (mps2osil != NULL)
00466 delete mps2osil;
00467 mps2osil = NULL;
00468 if (osilreader != NULL)
00469 delete osilreader;
00470 osilreader = NULL;
00471 if (osilwriter != NULL)
00472 delete osilwriter;
00473 osilwriter = NULL;
00474 }
00475
00476
00477
00478 try{
00479 cout << endl << "TEST " << ++nOfTest << ": nonlinear operators" << endl << endl;
00480 ok = true;
00481 std::string operatorTest = dataDir + "osilFiles" + dirsep + "testOperators.osil";
00482 osil = fileUtil->getFileAsString( operatorTest.c_str() );
00483 OSInstance *osinstance = NULL;
00484
00485 OSiLReader *osilreader = NULL;
00486 osilreader = new OSiLReader();
00487 OSiLWriter *osilwriter = NULL;
00488 osilwriter = new OSiLWriter();
00489
00490 osinstance = osilreader->readOSiL( osil);
00491
00492 cout << "Done" << endl;
00493 OSExpressionTree* expTree = osinstance->getNonlinearExpressionTree( -1);
00494 std::vector<OSnLNode*> postfixVec;
00495 postfixVec = expTree->m_treeRoot->getPostfixFromExpressionTree();
00496 int n = postfixVec.size();
00497 nodeNames1 = new std::string[ n];
00498 for (int i = 0 ; i < n; i++){
00499
00500 nodeNames1[i] = postfixVec[i]->getTokenName();
00501 }
00502
00503
00504
00505 x = new double[2];
00506 x[0] = 1;
00507 x[1] = 2;
00508
00509
00510 check = 11;
00511
00512 ok = ( fabs(check - expTree->m_treeRoot->calculateFunction( x))/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
00513 delete[] x;
00514 delete[] nodeNames1;
00515 delete osilreader;
00516 osilreader = NULL;
00517 delete osilwriter;
00518 osilwriter = NULL;
00519 osinstance = NULL;
00520
00521 if (ok == false) throw ErrorClass(" Problem evaluating expression tree");
00522 unitTestResult << "TEST " << nOfTest << ": Successful test of nonlinear operators using file testOperators.osil" << std::endl;
00523 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
00524 }
00525 catch(const ErrorClass& eclass){
00526 cout << endl << endl << endl;
00527 unitTestResultFailure << eclass.errormsg << endl;
00528 if (x != NULL)
00529 delete[] x;
00530 if (nodeNames1 != NULL)
00531 delete[] nodeNames1;
00532 if (osilreader != NULL)
00533 delete osilreader;
00534 osilreader = NULL;
00535 if (osilwriter != NULL)
00536 delete osilwriter;
00537 osilwriter = NULL;
00538 }
00539
00540
00541
00542 try{
00543 cout << endl << "TEST " << ++nOfTest << ": Automatic differentiation" << endl << endl;
00544
00545
00546 std::string expTreeTest = dataDir + "osilFiles" + dirsep + "CppADTestLag.osil";
00547
00548
00549
00550
00551
00552
00553
00554
00555 osil = fileUtil->getFileAsString( expTreeTest.c_str() );
00556 OSInstance *osinstance = NULL;
00557
00558 OSiLReader *osilreader = NULL;
00559 osilreader = new OSiLReader();
00560
00561 osinstance = osilreader->readOSiL( osil);
00562 double *x;
00563 x = new double[ 4];
00564 x[0] = 1;
00565 x[1] = 5;
00566 x[2] = 10;
00567 x[3] = 5;
00568 SparseVector *sp;
00569
00570 osinstance->getJacobianSparsityPattern();
00571 sp = osinstance->calculateConstraintFunctionGradient(x, 1, true);
00572
00573
00574
00575 ok = true;
00576
00577 double checkPartial2Con1 = 7.0 ;
00578
00579 ok = ( fabs(checkPartial2Con1 - sp->values[ 0] )/(fabs( checkPartial2Con1) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
00580 if(ok == false) throw ErrorClass(" Fail testing gradient calculation");
00581 double checkPartial0Con1 = (1./x[0]) ;
00582
00583 ok = ( fabs(checkPartial0Con1 - sp->values[ 1] )/(fabs( checkPartial0Con1) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
00584 if(ok == false) throw ErrorClass(" Fail testing gradient calculation");
00585 double checkPartial3Con1 = (1./x[3]) ;
00586
00587 ok = ( fabs(checkPartial3Con1 - sp->values[ 2] )/(fabs( checkPartial3Con1) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
00588 if(ok == false) throw ErrorClass(" Fail testing gradient calculation");
00589 delete sp;
00590 sp = NULL;
00591 SparseHessianMatrix *sh;
00592
00593 osinstance->getLagrangianHessianSparsityPattern( );
00594 sh = osinstance->calculateHessian(x, -1, true);
00595
00596
00597
00598
00599 ok = ( fabs(2. - sh->hessValues[0] )/(2. + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
00600 if(ok == false) throw ErrorClass(" Fail testing Hessian calculation");
00601
00602 ok = ( fabs(0. - sh->hessValues[ 1] )/(0. + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
00603 if(ok == false) throw ErrorClass(" Fail testing Hessian calculation");
00604
00605 ok = ( fabs(0. - sh->hessValues[2] )/(0. + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
00606 if(ok == false) throw ErrorClass(" Fail testing Hessian calculation");
00607 delete[] x;
00608 delete osilreader;
00609 osilreader = NULL;
00610 unitTestResult << "TEST " << nOfTest << ": Successful test of AD gradient and Hessian calculations" << std::endl;
00611 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
00612 }
00613 catch(const ErrorClass& eclass){
00614 cout << endl << endl << endl;
00615 unitTestResultFailure << eclass.errormsg << endl;
00616 if (x != NULL)
00617 delete[] x;
00618 if (osilreader != NULL)
00619 delete osilreader;
00620 osilreader = NULL;
00621 }
00622 }
00623
00624
00625
00626
00627 if (PARSER_TESTS){
00628
00629
00630 try{
00631 clock_t start, finish;
00632 double duration;
00633 osilwriter = new OSiLWriter();
00634
00635
00636
00637 cout << "Test parsing a model" << endl;
00638 cout << "First read the file into a string" << endl;
00639 start = clock();
00640 osilFileName = dataDir + "osilFiles" + dirsep + "parincLinear.osil";
00641 osil = fileUtil->getFileAsString( osilFileName.c_str());
00642 finish = clock();
00643 duration = (double) (finish - start) / CLOCKS_PER_SEC;
00644 cout << "Reading the file into a string took (seconds): "<< duration << endl;
00645 OSiLReader *osilreader = NULL;
00646 osilreader = new OSiLReader();
00647 start = clock();
00648 cout << "PARSE THE OSIL STRING INTO AN OSINSTANCE OBJECT" << endl;
00649 osilreader->readOSiL( osil);
00650
00651 delete osilreader;
00652 osilreader = NULL;
00653 delete osilwriter;
00654 osilwriter = NULL;
00655 finish = clock();
00656 duration = (double) (finish - start) / CLOCKS_PER_SEC;
00657 cout << "Parsing took (seconds): "<< duration << endl;
00658 unitTestResult << "TEST " << nOfTest << ": Successful test of OSiL parser on problem parincLinear.osil" << std::endl;
00659 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
00660 }
00661 catch(const ErrorClass& eclass){
00662 cout << endl << endl << endl;
00663 cout << eclass.errormsg << endl;
00664 unitTestResultFailure << "Sorry Unit Test Failed Testing An OSiL Parser" << endl;
00665
00666 if (osilreader != NULL)
00667 delete osilreader;
00668 osilreader = NULL;
00669 if (osilwriter != NULL)
00670 delete osilwriter;
00671 osilwriter = NULL;
00672 }
00673
00674 #if 0
00675
00676
00677
00678
00679 std::string *sncheck = new std::string[6];
00680 int *nvcheck = new int[6];
00681 int *nccheck = new int[6];
00682 int *nocheck = new int[6];
00683 int **lvcheck = new int*[6];
00684 int **lccheck = new int*[6];
00685 int **locheck = new int*[6];
00686 std::string *sn1 = new std::string[6];
00687 int *nv1= new int[6];
00688 int *nc1 = new int[6];
00689 int *no1 = new int[6];
00690 int **lv1 = new int*[6];
00691 int **lc1 = new int*[6];
00692 int **lo1 = new int*[6];
00693 int *nelem = new int[4];
00694 int *startIdx = new int[4];
00695 int **VI = new int*[4];
00696
00697 try{
00698 cout << endl << "TEST " << ++nOfTest << ": Stochastic extensions to OSiL" << endl << endl;
00699 clock_t start, finish;
00700 double duration;
00701 OSiLWriter *osilwriter = NULL;
00702 osilwriter = new OSiLWriter();
00703
00704
00705
00706 cout << "\nTest parsing a stochastic model" << endl;
00707 cout << "First read the file into a string" << endl;
00708 start = clock();
00709 osilFileName = dataDir + "osilFiles" + dirsep + "finplan1.osil";
00710 osil = fileUtil->getFileAsString( &osilFileName[0]);
00711 finish = clock();
00712 duration = (double) (finish - start) / CLOCKS_PER_SEC;
00713 cout << "Reading the file into a string took (seconds): "<< duration << endl;
00714 OSiLReader *osilreader = NULL;
00715 osilreader = new OSiLReader();
00716 start = clock();
00717 cout << "PARSE THE OSIL STRING INTO AN OSINSTANCE OBJECT" << endl;
00718 osilreader->readOSiL( osil);
00719
00720 delete osilreader;
00721 osilreader = NULL;
00722 delete osilwriter;
00723 osilwriter = NULL;
00724 finish = clock();
00725 duration = (double) (finish - start) / CLOCKS_PER_SEC;
00726 cout << "Parsing took (seconds): "<< duration << endl;
00727 unitTestResult << "TEST " << nOfTest << ": Successful test of OSiL parser on problem finplan1.osil" << std::endl;
00728 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
00729 }
00730 catch(const ErrorClass& eclass){
00731 cout << endl << endl << endl;
00732 cout << eclass.errormsg << endl;
00733 unitTestResultFailure << "Error parsing an osil file with time domain information" << endl;
00734
00735 if (osilreader != NULL)
00736 delete osilreader;
00737 osilreader = NULL;
00738 if (osilwriter != NULL)
00739 delete osilwriter;
00740 osilwriter = NULL;
00741 }
00745 try{
00746 cout << endl << "TEST " << ++nOfTest << ": GET() AND SET() METHODS FOR TimeDomain OBJECT" << endl << endl;
00747 OSInstance *osinstance = NULL;
00748
00749
00750 osilreader = new OSiLReader();
00751
00752 osinstance = osilreader->readOSiL( osil);
00753 std::string f = osinstance->getTimeDomainFormat();
00754 ok = (f == "stages");
00755 int n = osinstance->getTimeDomainStageNumber();
00756 ok &= (n == 6);
00757
00758 sncheck[0] = "";
00759 sncheck[1] = "";
00760 sncheck[2] = "";
00761 sncheck[3] = "test";
00762 sncheck[4] = "Wha'zzup?";
00763 sncheck[5] = "";
00764
00765 std::string* sn = osinstance->getTimeDomainStageNames();
00766
00767 for (int i = 0; i < 6; i++)
00768 ok &= (sn[i] == sncheck[i]);
00769
00770 int* nv = osinstance->getTimeDomainStageNumberOfVariables();
00771
00772 nvcheck[0] = 2;
00773 nvcheck[1] = 2;
00774 nvcheck[2] = 0;
00775 nvcheck[3] = 0;
00776 nvcheck[4] = 2;
00777 nvcheck[5] = 2;
00778
00779 for (int i = 0; i < 6; i++)
00780 ok &= (nv[i] == nvcheck[i]);
00781
00782 int* nc = osinstance->getTimeDomainStageNumberOfConstraints();
00783
00784 nccheck[0] = 1;
00785 nccheck[1] = 1;
00786 nccheck[2] = 0;
00787 nccheck[3] = 0;
00788 nccheck[4] = 1;
00789 nccheck[5] = 1;
00790
00791 for (int i = 0; i < 6; i++)
00792 ok &= (nc[i] == nccheck[i]);
00793
00794 int* no = osinstance->getTimeDomainStageNumberOfObjectives();
00795
00796 nocheck[0] = 1;
00797 nocheck[1] = 1;
00798 nocheck[2] = 1;
00799 nocheck[3] = 0;
00800 nocheck[4] = 1;
00801 nocheck[5] = 1;
00802
00803 for (int i = 0; i < 6; i++)
00804 ok &= (no[i] == nocheck[i]);
00805
00806 int** lv = osinstance->getTimeDomainStageVarList();
00807 int** lc = osinstance->getTimeDomainStageConList();
00808 int** lo = osinstance->getTimeDomainStageObjList();
00809
00810 for (int i = 0; i < 6; i++)
00811 {
00812 lvcheck[i] = new int[2];
00813 lccheck[i] = new int[2];
00814 locheck[i] = new int[2];
00815 };
00816 lvcheck[0][0] = 0;
00817 lvcheck[0][1] = 1;
00818 lvcheck[1][0] = 2;
00819 lvcheck[1][1] = 3;
00820 lvcheck[4][0] = 4;
00821 lvcheck[4][1] = 5;
00822 lvcheck[5][0] = 6;
00823 lvcheck[5][1] = 7;
00824 lccheck[0][0] = 0;
00825 lccheck[1][0] = 1;
00826 lccheck[4][0] = 2;
00827 lccheck[5][0] = 3;
00828 locheck[0][0] = -1;
00829 locheck[1][0] = -1;
00830 locheck[2][0] = -1;
00831 locheck[4][0] = -1;
00832 locheck[5][0] = -1;
00833
00834 for (int i = 0; i < 6; i++) {
00835 for (int j = 0; j < nv[i]; j++)
00836 ok &= (lvcheck[i][j] == lv[i][j]);
00837 for (int j = 0; j < nc[i]; j++)
00838 ok &= (lccheck[i][j] == lc[i][j]);
00839 for (int j = 0; j < no[i]; j++)
00840 ok &= (locheck[i][j] == lo[i][j]);
00841 };
00842
00843
00844 for (int i = 0; i < 6; i++) {
00845 sn1[i] = sn[i];
00846 nv1[i] = nv[i];
00847 nc1[i] = nc[i];
00848 no1[i] = no[i];
00849 lv1[i] = new int[2];
00850 lc1[i] = new int[2];
00851 lo1[i] = new int[2];
00852 for (int j = 0; j < nv[i]; j++) {
00853 lv1[i][j] = lv[i][j];
00854 };
00855 for (int j = 0; j < nc[i]; j++) {
00856 lc1[i][j] = lc[i][j];
00857 };
00858 for (int j = 0; j < no[i]; j++) {
00859 lo1[i][j] = lo[i][j];
00860 };
00861 };
00862
00863 ok &= osinstance->setTimeDomain("none");
00864 n = 0;
00865 ok &= osinstance->setTimeDomainStages(n,NULL);
00866 ok &= osinstance->setTimeDomainStages(4,NULL);
00867
00868 n = osinstance->getTimeDomainStageNumber();
00869 ok &= (n == 4);
00870
00871 for (int i = 0; i < 4; i++)
00872 { nelem[i] = 2;
00873 startIdx[i] = 2*i;
00874 VI[i] = new int[2];
00875 VI[i][0] = 2*i;
00876 VI[i][1] = 2*i + 1;
00877 };
00878 ok &= osinstance->setTimeDomainStageVariablesUnordered(4,nelem,VI);
00879
00880 for (int i = 0; i < 4; i++)
00881 { nelem[i] = 1;
00882 startIdx[i] = i;
00883 };
00884 ok &= osinstance->setTimeDomainStageConstraintsOrdered(4,nelem,startIdx);
00885
00886 for (int i = 0; i < 4; i++)
00887 { nelem[i] = 1;
00888 startIdx[i] = -1;
00889 };
00890 ok &= osinstance->setTimeDomainStageObjectivesOrdered(4,nelem,startIdx);
00891
00892 ok &= osinstance->setTimeDomain("none");
00893
00894 ok &= osinstance->setTimeDomain("interval");
00895
00896 ok &= osinstance->setTimeDomainInterval(0.0, 1.0);
00897 double lower = osinstance->getTimeDomainIntervalStart();
00898 ok &= (lower == 0.0);
00899 double upper = osinstance->getTimeDomainIntervalHorizon();
00900 ok &= (upper == 1.0);
00901
00902 ok &= osinstance->setTimeDomain("none");
00903
00904 ok &= osinstance->setTimeDomainStages(6,sncheck);
00905 ok &= osinstance->setTimeDomainStageVariablesUnordered(6,nvcheck,lvcheck);
00906 ok &= osinstance->setTimeDomainStageObjectivesUnordered(6,nocheck,locheck);
00907 ok &= osinstance->setTimeDomainStageConstraintsUnordered(6,nccheck,lccheck);
00908 int n2 = osinstance->getTimeDomainStageNumber();
00909 ok &= (n2 == 6);
00910 std::string* sn2 = osinstance->getTimeDomainStageNames();
00911 int* nv2 = osinstance->getTimeDomainStageNumberOfVariables();
00912 int* nc2 = osinstance->getTimeDomainStageNumberOfConstraints();
00913 int* no2 = osinstance->getTimeDomainStageNumberOfObjectives();
00914 int** lv2 = osinstance->getTimeDomainStageVarList();
00915 int** lc2 = osinstance->getTimeDomainStageConList();
00916 int** lo2 = osinstance->getTimeDomainStageObjList();
00917 for (int i = 0; i < n2; i++)
00918 { ok &= (sn2[i] == sncheck[i]);
00919 ok &= (nv2[i] == nvcheck[i]);
00920 ok &= (nc2[i] == nccheck[i]);
00921 ok &= (no2[i] == nocheck[i]);
00922 for (int j = 0; j < nv2[i]; j++)
00923 ok &= (lv2[i][j] == lvcheck[i][j]);
00924 for (int j = 0; j < nc2[i]; j++)
00925 ok &= (lc2[i][j] == lccheck[i][j]);
00926 for (int j = 0; j < no2[i]; j++)
00927 ok &= (lo2[i][j] == locheck[i][j]);
00928 };
00929
00930 if (sncheck != NULL)
00931 delete [] sncheck;
00932 sncheck = NULL;
00933 if (nvcheck != NULL)
00934 delete [] nvcheck;
00935 nvcheck = NULL;
00936 if (nccheck != NULL)
00937 delete [] nccheck;
00938 nccheck = NULL;
00939 if (nocheck != NULL)
00940 delete [] nocheck;
00941 nocheck = NULL;
00942
00943 for (int i = 0; i < 6; i++) {
00944 if (lvcheck[i] != NULL)
00945 delete [] lvcheck[i];
00946 if (lccheck[i] != NULL)
00947 delete [] lccheck[i];
00948 if (locheck[i] != NULL)
00949 delete [] locheck[i];
00950 if (lv1[i] != NULL)
00951 delete [] lv1[i];
00952 if (lc1[i] != NULL)
00953 delete [] lc1[i];
00954 if (lo1[i] != NULL)
00955 delete [] lo1[i];
00956 };
00957 if (lvcheck != NULL)
00958 delete [] lvcheck;
00959 lvcheck = NULL;
00960 if (lccheck != NULL)
00961 delete [] lccheck;
00962 lccheck = NULL;
00963 if (locheck != NULL)
00964 delete [] locheck;
00965 locheck = NULL;
00966 if (lv1 != NULL)
00967 delete [] lv1;
00968 lv1 = NULL;
00969 if (lc1 != NULL)
00970 delete [] lc1;
00971 lc1 = NULL;
00972 if (lo1 != NULL)
00973 delete [] lo1;
00974 lo1 = NULL;
00975 if (sn1 != NULL)
00976 delete [] sn1;
00977 sn1 = NULL;
00978 if (nv1 != NULL)
00979 delete[] nv1;
00980 nv1 = NULL;
00981 if (nc1 != NULL)
00982 delete[] nc1;
00983 nc1 = NULL;
00984 if (no1 != NULL)
00985 delete[] no1;
00986 no1 = NULL;
00987 if (nelem != NULL)
00988 delete [] nelem;
00989 nelem = NULL;
00990 if (startIdx != NULL)
00991 delete [] startIdx;
00992 startIdx = NULL;
00993 if (VI != NULL)
00994 {
00995 for (int i = 0; i < 4; i++) {
00996 if (VI[i] != NULL)
00997 delete [] VI[i];
00998 };
00999 delete [] VI;
01000 VI = NULL;
01001 }
01002
01003 if (osilreader != NULL)
01004 delete osilreader;
01005 osilreader = NULL;
01006 unitTestResult << "TEST " << nOfTest << ": Successful test of osinstance get() and set() methods" << std::endl;
01007 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
01008 }
01009 catch(const ErrorClass& eclass){
01010 cout << endl << endl << endl;
01011 cout << eclass.errormsg << endl;
01012 unitTestResultFailure << "Sorry Unit Test Failed osinstance get() and set() Methods" << endl;
01013
01014 if (sncheck != NULL)
01015 delete [] sncheck;
01016 sncheck = NULL;
01017 if (nvcheck != NULL)
01018 delete [] nvcheck;
01019 nvcheck = NULL;
01020 if (nccheck != NULL)
01021 delete [] nccheck;
01022 nccheck = NULL;
01023 if (nocheck != NULL)
01024 delete [] nocheck;
01025 nocheck = NULL;
01026
01027 for (int i = 0; i < 6; i++) {
01028 if (lvcheck[i] != NULL)
01029 delete [] lvcheck[i];
01030 if (lccheck[i] != NULL)
01031 delete [] lccheck[i];
01032 if (locheck[i] != NULL)
01033 delete [] locheck[i];
01034 if (lv1[i] != NULL)
01035 delete [] lv1[i];
01036 if (lc1[i] != NULL)
01037 delete [] lc1[i];
01038 if (lo1[i] != NULL)
01039 delete [] lo1[i];
01040 };
01041 if (lvcheck != NULL)
01042 delete [] lvcheck;
01043 lvcheck = NULL;
01044 if (lccheck != NULL)
01045 delete [] lccheck;
01046 lccheck = NULL;
01047 if (locheck != NULL)
01048 delete [] locheck;
01049 locheck = NULL;
01050 if (lv1 != NULL)
01051 delete [] lv1;
01052 lv1 = NULL;
01053 if (lc1 != NULL)
01054 delete [] lc1;
01055 lc1 = NULL;
01056 if (lo1 != NULL)
01057 delete [] lo1;
01058 lo1 = NULL;
01059 if (sn1 != NULL)
01060 delete [] sn1;
01061 sn1 = NULL;
01062 if (nv1 != NULL)
01063 delete[] nv1;
01064 nv1 = NULL;
01065 if (nc1 != NULL)
01066 delete[] nc1;
01067 nc1 = NULL;
01068 if (no1 != NULL)
01069 delete[] no1;
01070 no1 = NULL;
01071 if (nelem != NULL)
01072 delete [] nelem;
01073 nelem = NULL;
01074 if (startIdx != NULL)
01075 delete [] startIdx;
01076 startIdx = NULL;
01077 if (VI != NULL)
01078 {
01079 for (int i = 0; i < 4; i++) {
01080 if (VI[i] != NULL)
01081 delete [] VI[i];
01082 };
01083 delete [] VI;
01084 VI = NULL;
01085 }
01086
01087 if (osilreader != NULL)
01088 delete osilreader;
01089 osilreader = NULL;
01090 }
01091 #endif // test of <timeDomain> and various set() and get) methods
01092
01093
01094
01095 OSoLWriter *osolwriter = NULL;
01096
01097
01098
01099
01100 try{
01114 cout << endl << "TEST " << ++nOfTest << ": OSoL parser" << endl << endl;
01115 std::string tmpOSoL;
01116 clock_t start, finish;
01117 double duration;
01118 osolwriter = new OSoLWriter();
01119 osolreader = new OSoLReader();
01120
01121 cout << "Test parsing an OSoL file" << endl;
01122 cout << "First read the OSoL file into a string" << endl;
01123 osolFileName = dataDir + "osolFiles" + dirsep + "parsertest.osol";
01124 cout << osolFileName << endl;
01125 start = clock();
01126 std::string osol = fileUtil->getFileAsString( osolFileName.c_str() );
01127 finish = clock();
01128 duration = (double) (finish - start) / CLOCKS_PER_SEC;
01129 cout << "Reading the file into a string took (seconds): "<< duration << endl;
01130 start = clock();
01131 cout << "PARSE THE OSOL STRING INTO AN OSOPTION OBJECT" << endl;
01132 osoption = osolreader->readOSoL( osol);
01133
01134
01135 cout << endl << "Test the add() methods" << endl;
01136
01137 ok = osoption->setAnOtherGeneralOption("testing","one","two three");
01138 ok = osoption->setOtherSystemOptions(0,NULL) && ok;
01139 ok = osoption->setAnOtherSystemOption("Ho Ho Ho","","") && ok;
01140 ok = osoption->setAnOtherServiceOption("OneMore","Option","To Go") && ok;
01141 ok = osoption->setAnotherJobDependency("DoReMi") && ok;
01142 ok = osoption->setAnotherRequiredDirectory("C:\\MSYS") && ok;
01143 ok = osoption->setAnotherRequiredFile("C:\\MSYS\\junk.tmp") && ok;
01144 ok = osoption->setAnotherDirectoryToMake("C:\\tempdir") && ok;
01145 ok = osoption->setAnotherFileToMake("C:\\tempdir\\temp.tmp") && ok;
01146 ok = osoption->setAnotherInputDirectoryToMove("C:\\tempdir","C:\\OS\\calc",true) && ok;
01147 ok = osoption->setAnotherInputFileToMove("C:\\OS\\parinc.osil","C:\\OS\\calc\\input.osil",true) && ok;
01148 ok = osoption->setAnotherOutputFileToMove("C:\\OS\\calc\\putput.osrl","C:\\OS\\parinc.osol",false) && ok;
01149 ok = osoption->setAnotherOutputDirectoryToMove("C:\\OS\\calc","C:\\OS\\save",false) && ok;
01150 ok = osoption->setAnotherFileToDelete("C:\\OS\\calc\\input.osil") && ok;
01151 ok = osoption->setAnotherDirectoryToDelete("C:\\tempdir") && ok;
01152 ok = osoption->setAnotherProcessToKill("ABC123") && ok;
01153 ok = osoption->setAnOtherJobOption("DoReMi","ABC","One Two Three") && ok;
01154 ok = osoption->setAnotherInitVarValue(5,12.3) && ok;
01155 ok = osoption->setAnotherInitVarValueString(6,"BLUE") && ok;
01156 ok = osoption->setAnotherInitBasisStatus(ENUM_PROBLEM_COMPONENT_variables,6,ENUM_BASIS_STATUS_unknown) && ok;
01157 ok = osoption->setAnotherInitBasisStatus(ENUM_PROBLEM_COMPONENT_objectives,-1,ENUM_BASIS_STATUS_basic) && ok;
01158 ok = osoption->setAnotherInitBasisStatus(ENUM_PROBLEM_COMPONENT_constraints,3,ENUM_BASIS_STATUS_superbasic) && ok;
01159 ok = osoption->setAnotherIntegerVariableBranchingWeight(5,100.) && ok;
01160
01161 int SOS3idx[2];
01162 double SOS3val[2];
01163 SOS3idx[0] = 3;
01164 SOS3idx[1] = 6;
01165 SOS3val[0] = 1.0;
01166 SOS3val[1] = 2.0;
01167 int tnvar;
01168 tnvar = osoption->getNumberOfSOS();
01169 ok = osoption->setAnotherSOSVariableBranchingWeight(3,2,1.0,SOS3idx,SOS3val) && ok;
01170 assert (osoption->getNumberOfSOS() == (tnvar + 1));
01171 assert (osoption->optimization->variables->sosVariableBranchingWeights->sos[tnvar]->var[0]->idx == 3);
01172 assert (osoption->optimization->variables->sosVariableBranchingWeights->sos[tnvar]->var[1]->idx == 6);
01173 assert (osoption->optimization->variables->sosVariableBranchingWeights->sos[tnvar]->var[0]->value == 1.0);
01174 assert (osoption->optimization->variables->sosVariableBranchingWeights->sos[tnvar]->var[1]->value == 2.0);
01175 #ifdef DEBUG
01176 cout << endl << "another SOS has been added" << endl << endl;
01177 #endif
01178
01179 OtherVariableOption *varopt;
01180 varopt = new OtherVariableOption();
01181 varopt->name = "testVarOpt";
01182 varopt->numberOfVar = 2;
01183 varopt->numberOfEnumerations = 0;
01184 varopt->var = new OtherVarOption*[2];
01185 varopt->var[0] = new OtherVarOption();
01186 varopt->var[0]->idx = 0;
01187 varopt->var[0]->value = "3.0";
01188 varopt->var[1] = new OtherVarOption();
01189 varopt->var[1]->idx = 1;
01190 varopt->var[1]->lbValue = "0.0";
01191 varopt->var[1]->ubValue = "10.0";
01192 ok = osoption->setAnOtherVariableOption(varopt) && ok;
01193 delete varopt;
01194 varopt = NULL;
01195 #ifdef DEBUG
01196 cout << endl << "another variable option has been added" << endl << endl;
01197 #endif
01198
01199 OtherObjectiveOption *objopt;
01200 objopt = new OtherObjectiveOption();
01201 objopt->name = "testObjOpt";
01202 objopt->numberOfObj = 0;
01203 objopt->numberOfEnumerations = 0;
01204 ok = osoption->setAnOtherObjectiveOption(objopt) && ok;
01205 delete objopt;
01206 objopt = NULL;
01207 #ifdef DEBUG
01208 cout << endl << "another objective option has been added" << endl << endl;
01209 #endif
01210
01211 ok = osoption->setAnotherInitConValue(2,17.0) && ok;
01212 ok = osoption->setAnotherInitDualVarValue(2,0.0,DBL_MAX) && ok;
01213
01214 OtherConstraintOption *conopt;
01215 conopt = new OtherConstraintOption();
01216 conopt->name = "testConOpt";
01217
01218 conopt->numberOfCon = 0;
01219 conopt->numberOfEnumerations = 1;
01220
01221 conopt->enumeration = new OtherOptionEnumeration*[1];
01222 conopt->enumeration[0] = new OtherOptionEnumeration();
01223 conopt->enumeration[0]->numberOfEl = 3;
01224 conopt->enumeration[0]->value = "test";
01225 conopt->enumeration[0]->description = "this is not a test";
01226 conopt->enumeration[0]->numberOfEl = 3;
01227 conopt->enumeration[0]->el = new int[3];
01228 conopt->enumeration[0]->el[0] = 1;
01229 conopt->enumeration[0]->el[1] = 3;
01230 conopt->enumeration[0]->el[2] = 5;
01231
01232 ok = osoption->setAnOtherConstraintOption(conopt) && ok;
01233 delete conopt;
01234 conopt = NULL;
01235 #ifdef DEBUG
01236 cout << endl << "another constraint option has been added" << endl << endl;
01237 #endif
01238
01239 ok = osoption->setAnotherSolverOption("HoHum","gus","PhoNY","","test","") && ok;
01240
01241 if (!ok)
01242 throw ErrorClass(" Could not add to osoption data structure");
01243
01244
01245 std::string optionstring, fileName, fileSource, fileDescription, fileCreator, fileLicence;
01246 int option_i;
01247 double option_d;
01248
01249 osoption2= new OSOption();
01250
01251 cout << endl << "transfer osoption to another OSOption object" << endl;
01252
01253 fileName = osoption->getFileName();
01254 fileSource = osoption->getFileSource();
01255 fileDescription = osoption->getFileDescription();
01256 fileCreator = osoption->getFileCreator();
01257 fileLicence = osoption->getFileLicence();
01258 ok = osoption2->setOptionHeader(fileName, fileSource, fileDescription, fileCreator, fileLicence);
01259 #ifdef DEBUG
01260 if (!ok)
01261 throw ErrorClass(" error in get/set option header");
01262 #endif
01263
01264
01265 optionstring = osoption->getServiceURI();
01266 ok = osoption2->setServiceURI(optionstring);
01267 #ifdef DEBUG
01268 if (!ok)
01269 throw ErrorClass(" error in get/set ServiceURI");
01270 #endif
01271
01272 optionstring = osoption->getServiceName();
01273 ok = osoption2->setServiceName(optionstring) && ok;
01274 #ifdef DEBUG
01275 if (!ok)
01276 throw ErrorClass(" error in get/set ServiceName");
01277 #endif
01278
01279 optionstring = osoption->getInstanceName();
01280 ok = osoption2->setInstanceName(optionstring) && ok;
01281 #ifdef DEBUG
01282 if (!ok)
01283 throw ErrorClass(" error in get/set InstanceName");
01284 #endif
01285
01286 optionstring = osoption->getInstanceLocation();
01287 ok = osoption2->setInstanceLocation(optionstring) && ok;
01288 #ifdef DEBUG
01289 if (!ok)
01290 throw ErrorClass(" error in get/set InstanceLocation");
01291 #endif
01292
01293 optionstring = osoption->getInstanceLocationType();
01294 ok = osoption2->setInstanceLocationType(optionstring) && ok;
01295 #ifdef DEBUG
01296 if (!ok)
01297 throw ErrorClass(" error in get/set InstanceLocationtype");
01298 #endif
01299
01300 optionstring = osoption->getJobID();
01301 ok = osoption2->setJobID(optionstring) && ok;
01302 #ifdef DEBUG
01303 if (!ok)
01304 throw ErrorClass(" error in get/set JobID");
01305 #endif
01306
01307 optionstring = osoption->getSolverToInvoke();
01308 ok = osoption2->setSolverToInvoke(optionstring) && ok;
01309 #ifdef DEBUG
01310 if (!ok)
01311 throw ErrorClass(" error in get/set SolverToInvoke");
01312 #endif
01313
01314 optionstring = osoption->getInstanceLocationType();
01315 ok = osoption2->setInstanceLocationType(optionstring) && ok;
01316 #ifdef DEBUG
01317 if (!ok)
01318 throw ErrorClass(" error in get/set InstanceLocationType");
01319 #endif
01320
01321 optionstring = osoption->getUserName();
01322 ok = osoption2->setUserName(optionstring) && ok;
01323 #ifdef DEBUG
01324 if (!ok)
01325 throw ErrorClass(" error in get/set UserName");
01326 #endif
01327
01328 optionstring = osoption->getPassword();
01329 #ifdef DEBUG
01330 if (!ok)
01331 throw ErrorClass(" error in get/set Password");
01332 #endif
01333 ok = osoption2->setPassword(optionstring) && ok;
01334
01335 optionstring = osoption->getContact();
01336 ok = osoption2->setContact(optionstring) && ok;
01337 #ifdef DEBUG
01338 if (!ok)
01339 throw ErrorClass(" error in get/set Contact");
01340 #endif
01341
01342 optionstring = osoption->getContactTransportType();
01343 ok = osoption2->setContactTransportType(optionstring) && ok;
01344 #ifdef DEBUG
01345 if (!ok)
01346 throw ErrorClass(" error in get/set TransportType");
01347 #endif
01348
01349 int nopt;
01350 OtherOption** otherOpt;
01351 nopt = osoption->getNumberOfOtherGeneralOptions();
01352 otherOpt = osoption->getOtherGeneralOptions();
01353 ok = osoption2->setOtherGeneralOptions(nopt, otherOpt) && ok;
01354 #ifdef DEBUG
01355 if (!ok)
01356 throw ErrorClass(" error in get/set OtherGeneralOption");
01357 #endif
01358
01359 std::string tempDescription;
01360
01361 optionstring = osoption->getMinDiskSpaceUnit();
01362 tempDescription = osoption->getMinDiskSpaceDescription();
01363 option_d = osoption->getMinDiskSpace();
01364 ok = osoption2->setMinDiskSpace(optionstring,tempDescription,option_d) && ok;
01365 #ifdef DEBUG
01366 if (!ok)
01367 throw ErrorClass(" error in get/set MinDiskSpace");
01368 #endif
01369
01370 optionstring = osoption->getMinMemoryUnit();
01371 tempDescription = osoption->getMinMemoryDescription();
01372 option_d = osoption->getMinMemorySize();
01373 ok = osoption2->setMinMemorySize(optionstring,tempDescription,option_d) && ok;
01374 #ifdef DEBUG
01375 if (!ok)
01376 throw ErrorClass(" error in get/set MinMemorySize");
01377 #endif
01378
01379 optionstring = osoption->getMinCPUSpeedUnit();
01380 tempDescription = osoption->getMinCPUSpeedDescription();
01381 option_d = osoption->getMinCPUSpeed();
01382 ok = osoption2->setMinCPUSpeed(optionstring,tempDescription,option_d) && ok;
01383 #ifdef DEBUG
01384 if (!ok)
01385 throw ErrorClass(" error in get/set MinCPUSpeed");
01386 #endif
01387
01388 option_i = osoption->getMinCPUNumber();
01389 optionstring = osoption->getMinCPUNumberDescription();
01390 ok = osoption2->setMinCPUNumber(option_i, optionstring) && ok;
01391 #ifdef DEBUG
01392 if (!ok)
01393 throw ErrorClass(" error in get/set MinCPUNumber");
01394 #endif
01395
01396 OtherOption** otherOpt2;
01397 nopt = osoption->getNumberOfOtherSystemOptions();
01398 otherOpt2 = osoption->getOtherSystemOptions();
01399 ok = osoption2->setOtherSystemOptions(nopt, otherOpt2) && ok;
01400 #ifdef DEBUG
01401 if (!ok)
01402 throw ErrorClass(" error in get/set OtherSystemOptions");
01403 #endif
01404
01405
01406 optionstring = osoption->getServiceType();
01407 ok = osoption2->setServiceType(optionstring) && ok;
01408 #ifdef DEBUG
01409 if (!ok)
01410 throw ErrorClass(" error in get/set ServiceType");
01411 #endif
01412
01413 OtherOption** otherOpt3;
01414 nopt = osoption->getNumberOfOtherServiceOptions();
01415 otherOpt3 = osoption->getOtherServiceOptions();
01416 ok = osoption2->setOtherServiceOptions(nopt, otherOpt3) && ok;
01417 #ifdef DEBUG
01418 if (!ok)
01419 throw ErrorClass(" error in get/set OtherServiceOptions");
01420 #endif
01421
01422
01423 option_d = osoption->getMaxTime();
01424 ok = osoption2->setMaxTime(option_d) && ok;
01425 #ifdef DEBUG
01426 if (!ok)
01427 throw ErrorClass(" error in get/set MaxTime");
01428 #endif
01429
01430 optionstring = osoption->getMaxTimeUnit();
01431 ok = osoption2->setMaxTimeUnit(optionstring) && ok;
01432 #ifdef DEBUG
01433 if (!ok)
01434 throw ErrorClass(" error in get/set MaxTimeUnit");
01435 #endif
01436
01437 optionstring = osoption->getRequestedStartTime();
01438 ok = osoption2->setRequestedStartTime(optionstring) && ok;
01439 #ifdef DEBUG
01440 if (!ok)
01441 throw ErrorClass(" error in get/set RequestedStartTime");
01442 #endif
01443
01444 nopt = osoption->getNumberOfJobDependencies();
01445 std::string* tJobID = osoption->getJobDependencies();
01446 ok = osoption2->setJobDependencies(nopt, tJobID) && ok;
01447 #ifdef DEBUG
01448 if (!ok)
01449 throw ErrorClass(" error in get/set JobDependencies");
01450 #endif
01451
01452 nopt = osoption->getNumberOfRequiredDirectories();
01453 std::string* reqDir = osoption->getRequiredDirectories();
01454 ok = osoption2->setRequiredDirectories(nopt, reqDir) && ok;
01455 #ifdef DEBUG
01456 if (!ok)
01457 throw ErrorClass(" error in get/set RequiredDirectories");
01458 #endif
01459
01460 nopt = osoption->getNumberOfRequiredFiles();
01461 std::string* reqFil = osoption->getRequiredFiles();
01462 ok = osoption2->setRequiredFiles(nopt, reqFil) && ok;
01463 #ifdef DEBUG
01464 if (!ok)
01465 throw ErrorClass(" error in get/set RequiredFiles");
01466 #endif
01467
01468 nopt = osoption->getNumberOfDirectoriesToMake();
01469 std::string* mkDir = osoption->getDirectoriesToMake();
01470 ok = osoption2->setDirectoriesToMake(nopt, mkDir) && ok;
01471 #ifdef DEBUG
01472 if (!ok)
01473 throw ErrorClass(" error in get/set DirectoriesToMake");
01474 #endif
01475
01476 nopt = osoption->getNumberOfFilesToMake();
01477 std::string* mkFil = osoption->getFilesToMake();
01478 ok = osoption2->setFilesToMake(nopt, mkFil) && ok;
01479 #ifdef DEBUG
01480 if (!ok)
01481 throw ErrorClass(" error in get/set FilesToMake");
01482 #endif
01483
01484 nopt = osoption->getNumberOfInputDirectoriesToMove();
01485 PathPair** inDMv = osoption->getInputDirectoriesToMove();
01486 ok = osoption2->setInputDirectoriesToMove(nopt, inDMv) && ok;
01487 #ifdef DEBUG
01488 if (!ok)
01489 throw ErrorClass(" error in get/set InputDirectoriesToMove");
01490 #endif
01491
01492 nopt = osoption->getNumberOfInputFilesToMove();
01493 PathPair** inFMv = osoption->getInputFilesToMove();
01494 ok = osoption2->setInputFilesToMove(nopt, inFMv) && ok;
01495 #ifdef DEBUG
01496 if (!ok)
01497 throw ErrorClass(" error in get/set InputFilesToMove");
01498 #endif
01499
01500 nopt = osoption->getNumberOfOutputFilesToMove();
01501 PathPair** outFMv = osoption->getOutputFilesToMove();
01502 ok = osoption2->setOutputFilesToMove(nopt, outFMv) && ok;
01503 #ifdef DEBUG
01504 if (!ok)
01505 throw ErrorClass(" error in get/set OutputFilesToMove");
01506 #endif
01507
01508 nopt = osoption->getNumberOfOutputDirectoriesToMove();
01509 PathPair** outDMv = osoption->getOutputDirectoriesToMove();
01510 ok = osoption2->setOutputDirectoriesToMove(nopt, outDMv) && ok;
01511 #ifdef DEBUG
01512 if (!ok)
01513 throw ErrorClass(" error in get/set OutputDirectoriesToMove");
01514 #endif
01515
01516 nopt = osoption->getNumberOfFilesToDelete();
01517 std::string* rmFil = osoption->getFilesToDelete();
01518 ok = osoption2->setFilesToDelete(nopt, rmFil) && ok;
01519 #ifdef DEBUG
01520 if (!ok)
01521 throw ErrorClass(" error in get/set FilesToDelete");
01522 #endif
01523
01524 nopt = osoption->getNumberOfDirectoriesToDelete();
01525 std::string* rmDir = osoption->getDirectoriesToDelete();
01526 ok = osoption2->setDirectoriesToDelete(nopt, rmDir) && ok;
01527 #ifdef DEBUG
01528 if (!ok)
01529 throw ErrorClass(" error in get/set DirectoriesToDelete");
01530 #endif
01531
01532 nopt = osoption->getNumberOfProcessesToKill();
01533 std::string* rmProc = osoption->getProcessesToKill();
01534 ok = osoption2->setProcessesToKill(nopt, rmProc) && ok;
01535 #ifdef DEBUG
01536 if (!ok)
01537 throw ErrorClass(" error in get/set ProcessesToKill");
01538 #endif
01539
01540 OtherOption** otherOpt4;
01541 nopt = osoption->getNumberOfOtherJobOptions();
01542 otherOpt4 = osoption->getOtherJobOptions();
01543 ok = osoption2->setOtherJobOptions(nopt, otherOpt4) && ok;
01544 #ifdef DEBUG
01545 if (!ok)
01546 throw ErrorClass(" error in get/set OtherJobOptions");
01547 #endif
01548
01549 int nvar, nobj, ncon;
01550 nvar = osoption->getOptionInt("numberOfVariables");
01551 ok = osoption2->setNumberOfVariables(nvar) && ok;
01552 nobj = osoption->getOptionInt("numberOfObjectives");
01553 ok = osoption2->setNumberOfObjectives(nobj) && ok;
01554 ncon = osoption->getOptionInt("numberOfConstraints");
01555 ok = osoption2->setNumberOfConstraints(ncon) && ok;
01556
01557 nvar = 10;
01558 nobj = 2;
01559 ncon = 8;
01560 #ifdef DEBUG
01561 if (!ok)
01562 throw ErrorClass(" error in get/set problem dimensions");
01563 #endif
01564
01565
01566 nopt = osoption->getNumberOfInitVarValues();
01567 InitVarValue** IVV;
01568 IVV = osoption->getInitVarValuesSparse();
01569 ok = osoption2->setInitVarValuesSparse(nopt, IVV) && ok;
01570 #ifdef DEBUG
01571 if (!ok)
01572 throw ErrorClass(" error in get/set InitVarValues");
01573 #endif
01574
01575 nopt = osoption->getNumberOfInitVarValuesString();
01576 InitVarValueString** IVV2;
01577 IVV2 = osoption->getInitVarValuesStringSparse();
01578 ok = osoption2->setInitVarValuesStringSparse(nopt, IVV2) && ok;
01579 #ifdef DEBUG
01580 if (!ok)
01581 throw ErrorClass(" error in get/set InitVarValuesString");
01582 #endif
01583
01584 int* IBS;
01585
01586 nvar = osoption->getNumberOfInitialBasisElements(ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_basic);
01587 if (nvar > 0)
01588 {
01589 IBS = new int[nvar];
01590 ok = osoption->getInitialBasisElements(ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_basic,IBS);
01591 ok = osoption2->setInitBasisStatus(ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_basic, IBS, nvar) && ok;
01592 delete[] IBS;
01593 #ifdef DEBUG
01594 if (!ok)
01595 throw ErrorClass(" error in get/set InitBasisStatus");
01596 #endif
01597 }
01598
01599 nvar = osoption->getNumberOfInitialBasisElements(ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_atLower);
01600 if (nvar > 0)
01601 {
01602 IBS = new int[nvar];
01603 ok = osoption->getInitialBasisElements(ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_atLower,IBS);
01604 ok = osoption2->setInitBasisStatus(ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_atLower, IBS, nvar) && ok;
01605 delete[] IBS;
01606 #ifdef DEBUG
01607 if (!ok)
01608 throw ErrorClass(" error in get/set InitBasisStatus");
01609 #endif
01610 }
01611
01612 nvar = osoption->getNumberOfInitialBasisElements(ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_atUpper);
01613 if (nvar > 0)
01614 {
01615 IBS = new int[nvar];
01616 ok = osoption->getInitialBasisElements(ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_atUpper,IBS);
01617 ok = osoption2->setInitBasisStatus(ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_atUpper, IBS, nvar) && ok;
01618 delete[] IBS;
01619 #ifdef DEBUG
01620 if (!ok)
01621 throw ErrorClass(" error in get/set InitBasisStatus");
01622 #endif
01623 }
01624
01625 nvar = osoption->getNumberOfInitialBasisElements(ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_isFree);
01626 if (nvar > 0)
01627 {
01628 IBS = new int[nvar];
01629 ok = osoption->getInitialBasisElements(ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_isFree,IBS);
01630 ok = osoption2->setInitBasisStatus(ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_isFree, IBS, nvar) && ok;
01631 delete[] IBS;
01632 #ifdef DEBUG
01633 if (!ok)
01634 throw ErrorClass(" error in get/set InitBasisStatus");
01635 #endif
01636 }
01637
01638 nvar = osoption->getNumberOfInitialBasisElements(ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_superbasic);
01639 if (nvar > 0)
01640 {
01641 IBS = new int[nvar];
01642 ok = osoption->getInitialBasisElements(ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_superbasic,IBS);
01643 ok = osoption2->setInitBasisStatus(ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_superbasic, IBS, nvar) && ok;
01644 delete[] IBS;
01645 #ifdef DEBUG
01646 if (!ok)
01647 throw ErrorClass(" error in get/set InitBasisStatus");
01648 #endif
01649 }
01650
01651 nvar = osoption->getNumberOfInitialBasisElements(ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_unknown);
01652 if (nvar > 0)
01653 {
01654 IBS = new int[nvar];
01655 ok = osoption->getInitialBasisElements(ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_unknown,IBS);
01656 ok = osoption2->setInitBasisStatus(ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_unknown, IBS, nvar) && ok;
01657 delete[] IBS;
01658 #ifdef DEBUG
01659 if (!ok)
01660 throw ErrorClass(" error in get/set InitBasisStatus");
01661 #endif
01662 }
01663
01664
01665 BranchingWeight** BW;
01666 BW = osoption->getIntegerVariableBranchingWeightsSparse();
01667 nopt = osoption->getNumberOfIntegerVariableBranchingWeights();
01668 ok = osoption2->setIntegerVariableBranchingWeightsSparse(nopt, BW) && ok;
01669 #ifdef DEBUG
01670 if (!ok)
01671 throw ErrorClass(" error in get/set IntegerVariableBranchingWeights");
01672 #endif
01673
01674 SOSWeights** sos;
01675 sos = osoption->getSOSVariableBranchingWeightsSparse();
01676 nopt = osoption->getNumberOfSOS();
01677 ok = osoption2->setSOSVariableBranchingWeights(nopt, sos) && ok;
01678 #ifdef DEBUG
01679 if (!ok)
01680 throw ErrorClass(" error in get/set SOSVariableBranchingWeights");
01681 #endif
01682
01683 OtherVariableOption** otherV;
01684 otherV = osoption->getAllOtherVariableOptions();
01685 nopt = osoption->getNumberOfOtherVariableOptions();
01686 ok = osoption2->setOtherVariableOptions(nopt, otherV) && ok;
01687 #ifdef DEBUG
01688 if (!ok)
01689 throw ErrorClass(" error in get/set OtherVariableOptions");
01690 #endif
01691
01692 nopt = osoption->getNumberOfInitObjValues();
01693 InitObjValue** IOV;
01694 IOV = osoption->getInitObjValuesSparse();
01695 for (int lmn=0; lmn < nobj; lmn++)
01696
01697 ok = osoption2->setInitObjValuesSparse(nopt, IOV) && ok;
01698 #ifdef DEBUG
01699 if (!ok)
01700 throw ErrorClass(" error in get/set InitObjValues");
01701 #endif
01702
01703 nopt = osoption->getNumberOfInitObjBounds();
01704 InitObjBound** IOB;
01705 IOB = osoption->getInitObjBoundsSparse();
01706 ok = osoption2->setInitObjBoundsSparse(nopt, IOB) && ok;
01707 #ifdef DEBUG
01708 if (!ok)
01709 throw ErrorClass(" error in get/set InitObjBounds");
01710 #endif
01711
01712 nvar = osoption->getNumberOfInitialBasisElements(ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_basic);
01713 if (nvar > 0)
01714 {
01715 IBS = new int[nvar];
01716 ok = osoption->getInitialBasisElements(ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_basic,IBS);
01717 ok = osoption2->setInitBasisStatus(ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_basic, IBS, nvar) && ok;
01718 delete[] IBS;
01719 #ifdef DEBUG
01720 if (!ok)
01721 throw ErrorClass(" error in get/set InitBasisStatus");
01722 #endif
01723 }
01724
01725 nvar = osoption->getNumberOfInitialBasisElements(ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_atLower);
01726 if (nvar > 0)
01727 {
01728 IBS = new int[nvar];
01729 ok = osoption->getInitialBasisElements(ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_atLower,IBS);
01730 ok = osoption2->setInitBasisStatus(ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_atLower, IBS, nvar) && ok;
01731 delete[] IBS;
01732 #ifdef DEBUG
01733 if (!ok)
01734 throw ErrorClass(" error in get/set InitBasisStatus");
01735 #endif
01736 }
01737
01738 nvar = osoption->getNumberOfInitialBasisElements(ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_atUpper);
01739 if (nvar > 0)
01740 {
01741 IBS = new int[nvar];
01742 ok = osoption->getInitialBasisElements(ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_atUpper,IBS);
01743 ok = osoption2->setInitBasisStatus(ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_atUpper, IBS, nvar) && ok;
01744 delete[] IBS;
01745 #ifdef DEBUG
01746 if (!ok)
01747 throw ErrorClass(" error in get/set InitBasisStatus");
01748 #endif
01749 }
01750
01751 nvar = osoption->getNumberOfInitialBasisElements(ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_isFree);
01752 if (nvar > 0)
01753 {
01754 IBS = new int[nvar];
01755 ok = osoption->getInitialBasisElements(ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_isFree,IBS);
01756 ok = osoption2->setInitBasisStatus(ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_isFree, IBS, nvar) && ok;
01757 delete[] IBS;
01758 #ifdef DEBUG
01759 if (!ok)
01760 throw ErrorClass(" error in get/set InitBasisStatus");
01761 #endif
01762 }
01763
01764 nvar = osoption->getNumberOfInitialBasisElements(ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_superbasic);
01765 if (nvar > 0)
01766 {
01767 IBS = new int[nvar];
01768 ok = osoption->getInitialBasisElements(ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_superbasic,IBS);
01769 ok = osoption2->setInitBasisStatus(ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_superbasic, IBS, nvar) && ok;
01770 delete[] IBS;
01771 #ifdef DEBUG
01772 if (!ok)
01773 throw ErrorClass(" error in get/set InitBasisStatus");
01774 #endif
01775 }
01776
01777 nvar = osoption->getNumberOfInitialBasisElements(ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_unknown);
01778 if (nvar > 0)
01779 {
01780 IBS = new int[nvar];
01781 ok = osoption->getInitialBasisElements(ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_unknown,IBS);
01782 ok = osoption2->setInitBasisStatus(ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_unknown, IBS, nvar) && ok;
01783 delete[] IBS;
01784 #ifdef DEBUG
01785 if (!ok)
01786 throw ErrorClass(" error in get/set InitBasisStatus");
01787 #endif
01788 }
01789
01790 OtherObjectiveOption** otherO;
01791 otherO = osoption->getAllOtherObjectiveOptions();
01792 nopt = osoption->getNumberOfOtherObjectiveOptions();
01793 ok = osoption2->setOtherObjectiveOptions(nopt, otherO) && ok;
01794 #ifdef DEBUG
01795 if (!ok)
01796 throw ErrorClass(" error in get/set OtherObjectiveOptions");
01797 #endif
01798
01799
01800 nopt = osoption->getNumberOfInitConValues();
01801 InitConValue** ICV;
01802 ICV = osoption->getInitConValuesSparse();
01803 ok = osoption2->setInitConValuesSparse(nopt, ICV) && ok;
01804 #ifdef DEBUG
01805 if (!ok)
01806 throw ErrorClass(" error in get/set InitConValues");
01807 #endif
01808
01809 nopt = osoption->getNumberOfInitDualVarValues();
01810 InitDualVarValue** IDV;
01811 IDV = osoption->getInitDualVarValuesSparse();
01812 ok = osoption2->setInitDualVarValuesSparse(nopt, IDV) && ok;
01813 #ifdef DEBUG
01814 if (!ok)
01815 throw ErrorClass(" error in get/set InitDualVarValues");
01816 #endif
01817
01818 nvar = osoption->getNumberOfInitialBasisElements(ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_basic);
01819 if (nvar > 0)
01820 {
01821 IBS = new int[nvar];
01822 ok = osoption->getInitialBasisElements(ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_basic,IBS);
01823 ok = osoption2->setInitBasisStatus(ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_basic, IBS, nvar) && ok;
01824 delete[] IBS;
01825 #ifdef DEBUG
01826 if (!ok)
01827 throw ErrorClass(" error in get/set InitBasisStatus");
01828 #endif
01829 }
01830
01831 nvar = osoption->getNumberOfInitialBasisElements(ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_atLower);
01832 if (nvar > 0)
01833 {
01834 IBS = new int[nvar];
01835 ok = osoption->getInitialBasisElements(ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_atLower,IBS);
01836 ok = osoption2->setInitBasisStatus(ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_atLower, IBS, nvar) && ok;
01837 delete[] IBS;
01838 #ifdef DEBUG
01839 if (!ok)
01840 throw ErrorClass(" error in get/set InitBasisStatus");
01841 #endif
01842 }
01843
01844 nvar = osoption->getNumberOfInitialBasisElements(ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_atUpper);
01845 if (nvar > 0)
01846 {
01847 IBS = new int[nvar];
01848 ok = osoption->getInitialBasisElements(ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_atUpper,IBS);
01849 ok = osoption2->setInitBasisStatus(ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_atUpper, IBS, nvar) && ok;
01850 delete[] IBS;
01851 #ifdef DEBUG
01852 if (!ok)
01853 throw ErrorClass(" error in get/set InitBasisStatus");
01854 #endif
01855 }
01856
01857 nvar = osoption->getNumberOfInitialBasisElements(ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_isFree);
01858 if (nvar > 0)
01859 {
01860 IBS = new int[nvar];
01861 ok = osoption->getInitialBasisElements(ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_isFree,IBS);
01862 ok = osoption2->setInitBasisStatus(ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_isFree, IBS, nvar) && ok;
01863 delete[] IBS;
01864 #ifdef DEBUG
01865 if (!ok)
01866 throw ErrorClass(" error in get/set InitBasisStatus");
01867 #endif
01868 }
01869
01870 nvar = osoption->getNumberOfInitialBasisElements(ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_superbasic);
01871 if (nvar > 0)
01872 {
01873 IBS = new int[nvar];
01874 ok = osoption->getInitialBasisElements(ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_superbasic,IBS);
01875 ok = osoption2->setInitBasisStatus(ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_superbasic, IBS, nvar) && ok;
01876 delete[] IBS;
01877 #ifdef DEBUG
01878 if (!ok)
01879 throw ErrorClass(" error in get/set InitBasisStatus");
01880 #endif
01881 }
01882
01883 nvar = osoption->getNumberOfInitialBasisElements(ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_unknown);
01884 if (nvar > 0)
01885 {
01886 IBS = new int[nvar];
01887 ok = osoption->getInitialBasisElements(ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_unknown,IBS);
01888 ok = osoption2->setInitBasisStatus(ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_unknown, IBS, nvar) && ok;
01889 delete[] IBS;
01890 #ifdef DEBUG
01891 if (!ok)
01892 throw ErrorClass(" error in get/set InitBasisStatus");
01893 #endif
01894 }
01895
01896 OtherConstraintOption** otherC;
01897 otherC = osoption->getAllOtherConstraintOptions();
01898 nopt = osoption->getNumberOfOtherConstraintOptions();
01899 ok = osoption2->setOtherConstraintOptions(nopt, otherC) && ok;
01900 #ifdef DEBUG
01901 if (!ok)
01902 throw ErrorClass(" error in get/set OtherConstraintOptions");
01903 #endif
01904
01905 SolverOption** SO;
01906 SO = osoption->getAllSolverOptions();
01907 nopt = osoption->getNumberOfSolverOptions();
01908 ok = osoption2->setSolverOptions(nopt, SO) && ok;
01909
01910
01911 #ifdef DEBUG
01912 if (!ok)
01913 throw ErrorClass(" error in get/set SolverOptions");
01914 #endif
01915
01916 ok = osoption->IsEqual(osoption2) && ok;
01917 if (!ok)
01918 throw ErrorClass("OSOption get() and set() methods do not work correctly");
01919
01920 cout << "Write the content to a new file" << endl;
01921 tmpOSoL = osolwriter->writeOSoL( osoption);
01922 cout << endl << "Here is tmpOSoL:" <<endl;
01923 cout << endl << endl << tmpOSoL << endl;
01924 cout << "-----------------------------------------" << endl << endl;
01925
01926
01927 osolreader2 = new OSoLReader();
01928 cout << "Read the string back" << endl;
01929
01930 osoption3 = osolreader2->readOSoL( tmpOSoL);
01931
01932 ok = osoption->IsEqual(osoption3);
01933 if (!ok)
01934 throw ErrorClass(" Loss of information in OSoL write/read");
01935
01936 cout << "delete osoption2" << endl;
01937
01938 delete osoption2;
01939 osoption2 = NULL;
01940
01941 cout << "delete osolreader2" << endl;
01942 delete osolreader2;
01943 osolreader2 = NULL;
01944
01945 cout << "delete osolwriter" << endl;
01946 delete osolwriter;
01947 osolwriter = NULL;
01948 cout << "delete osolreader" << endl;
01949 delete osolreader;
01950 osolreader = NULL;
01951 unitTestResult <<
01952 "TEST " << nOfTest << ": Successful test of OSoL set() and get() methods"
01953 << std::endl;
01954 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
01955 }
01956 catch(const ErrorClass& eclass){
01957 cout << endl << endl << endl;
01958 cout << eclass.errormsg << endl;
01959 unitTestResultFailure << "Sorry Unit Test Failed OSoL set() and get() methods" << endl;
01960
01961 if (osoption2 != NULL)
01962 delete osoption2;
01963 osoption2 = NULL;
01964
01965 if (osolreader2 != NULL)
01966 delete osolreader2;
01967 osolreader2 = NULL;
01968
01969 if (osolwriter != NULL)
01970 delete osolwriter;
01971 osolwriter = NULL;
01972
01973 if (osolreader != NULL)
01974 delete osolreader;
01975 osolreader = NULL;
01976 }
01977
01978
01979 try{
01980 cout << endl << "TEST " << ++nOfTest << ": Parse another .osol file" << endl << endl;
01981 std::string tmpOSoL;
01982 clock_t start, finish;
01983 double duration;
01984
01985 osolwriter = new OSoLWriter();
01986 osolreader = new OSoLReader();
01987 start = clock();
01988
01989 cout << "First read the OSoL file into a string" << endl;
01990 osolFileName = dataDir + "osolFiles" + dirsep + "parsertest2.osol";
01991 osol = fileUtil->getFileAsString( osolFileName.c_str() );
01992 finish = clock();
01993 duration = (double) (finish - start) / CLOCKS_PER_SEC;
01994 cout << "Reading the file into a string took (seconds): "<< duration << endl;
01995 cout << endl << osol << endl;
01996 cout << "Parse the OSoL string into an OSOption object" << endl;
01997 osoption = osolreader->readOSoL( osol);
01998
01999 std::cout << "string read; now write again" << std::endl;
02000 tmpOSoL = osolwriter->writeOSoL( osoption) ;
02001
02002
02003 std::cout << "object written; delete osolreader" << std::endl;
02004
02005 delete osolreader;
02006 osolreader = NULL;
02007 osolreader = new OSoLReader();
02008 osolreader->readOSoL( tmpOSoL);
02009 delete osolwriter;
02010 osolwriter = NULL;
02011 delete osolreader;
02012 osolreader = NULL;
02013
02014
02015 cout << "Test parsing another OSoL file" << endl;
02016 osolwriter = new OSoLWriter();
02017 osolreader = new OSoLReader();
02018 cout << "First read the OSoL file into a string" << endl;
02019 osolFileName = dataDir + "osolFiles" + dirsep + "parsertest3.osol";
02020 osol = fileUtil->getFileAsString( osolFileName.c_str() );
02021 finish = clock();
02022 duration = (double) (finish - start) / CLOCKS_PER_SEC;
02023 cout << "Reading the file into a string took (seconds): "<< duration << endl;
02024 cout << "Parse the OSoL string into an OSOption object" << endl;
02025 osoption = osolreader->readOSoL( osol);
02026 tmpOSoL = osolwriter->writeOSoL( osoption) ;
02027 delete osolreader;
02028 osolreader = NULL;
02029 osolreader = new OSoLReader();
02030 osolreader->readOSoL( tmpOSoL);
02031 delete osolwriter;
02032 osolwriter = NULL;
02033 delete osolreader;
02034 osolreader = NULL;
02035
02036
02037
02038 cout << "Test parsing a trivial string" << endl;
02039 osolreader = new OSoLReader();
02040 osol = "<osol></osol>";
02041 cout << "Parse the OSoL string into an OSOption object" << endl;
02042 osoption = osolreader->readOSoL( osol);
02043 delete osolreader;
02044 osolreader = NULL;
02045
02046
02047 unitTestResult << "TEST " << nOfTest << ": Successful test of OSoL parser" << std::endl;
02048 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
02049 }
02050
02051 catch(const ErrorClass& eclass){
02052 cout << endl << endl << endl;
02053 if(osolwriter != NULL) delete osolwriter;
02054 osolwriter = NULL;
02055 if(osolreader != NULL) delete osolreader;
02056 osolreader = NULL;
02057
02058 unitTestResultFailure << eclass.errormsg << endl;
02059 unitTestResultFailure << "There was a failure in the test for reading OSoL" << endl;
02060 }
02061
02062
02063
02073 OSResult *osresult;
02074 OSResult *osresult1 = new OSResult();
02075 OSResult *osresult2 = new OSResult();
02076 OSResult *osresult3 = NULL;
02077
02078 int* intArray;
02079 intArray = new int[3];
02080 int* tempArray = new int[3];
02081
02082
02083 try{
02084 cout << endl << "TEST " << ++nOfTest << ": OSrL set() tools" << endl << endl;
02085
02086 ok = true;
02087 ok &= (osresult1->IsEqual(osresult2));
02088 if (!ok)
02089 throw ErrorClass("Empty osresult objects do not compare equal!");
02090
02091
02092 ok &= osresult1->setGeneralStatusType("warning");
02093 if (!ok)
02094 throw ErrorClass("Error during setGeneralStatusType!");
02095 ok &= (!osresult1->IsEqual(osresult2));
02096 if (!ok)
02097 throw ErrorClass("setGeneralStatusType: osresult objects falsely compare equal!");
02098 ok &= osresult2->setGeneralStatusType("warning");
02099 if (!ok)
02100 throw ErrorClass("Error during setGeneralStatusType!");
02101 ok &= (osresult1->IsEqual(osresult2));
02102 if (!ok)
02103 throw ErrorClass("setGeneralStatusType: osresult objects falsely compare unequal!");
02104
02105 ok &= osresult1->setGeneralStatusDescription("some nonempty string");
02106 if (!ok)
02107 throw ErrorClass("Error during setGeneralStatusDescription!");
02108 ok &= (!osresult1->IsEqual(osresult2));
02109 if (!ok)
02110 throw ErrorClass("setGeneralStatusDescription: osresult objects falsely compare equal!");
02111 ok &= osresult2->setGeneralStatusDescription("some nonempty string");
02112 if (!ok)
02113 throw ErrorClass("Error during setGeneralStatusDescription!");
02114 ok &= (osresult1->IsEqual(osresult2));
02115 if (!ok)
02116 throw ErrorClass("setGeneralStatusDescription: osresult objects falsely compare unequal!");
02117
02118 ok &= osresult1->setNumberOfGeneralSubstatuses(3);
02119 if (!ok)
02120 throw ErrorClass("Error during setNumberOfGeneralSubstatuses!");
02121 ok &= (!osresult1->IsEqual(osresult2));
02122 if (!ok)
02123 throw ErrorClass("setNumberOfGeneralSubstatuses: osresult objects falsely compare equal!");
02124 ok &= osresult2->setNumberOfGeneralSubstatuses(3);
02125 if (!ok)
02126 throw ErrorClass("Error during setNumberOfGeneralSubstatuses!");
02127 ok &= (osresult1->IsEqual(osresult2));
02128 if (!ok)
02129 throw ErrorClass("setNumberOfGeneralSubstatuses: osresult objects falsely compare unequal!");
02130
02131 for (int i=0; i < 3; ++i)
02132 {
02133 ok &= osresult1->setGeneralSubstatusName(i,"some name");
02134 if (!ok)
02135 throw ErrorClass("Error during setGeneralSubstatusName!");
02136 ok &= (!osresult1->IsEqual(osresult2));
02137 if (!ok)
02138 throw ErrorClass("setGeneralSubstatusName: osresult objects falsely compare equal!");
02139 ok &= osresult2->setGeneralSubstatusName(i,"some name");
02140 if (!ok)
02141 throw ErrorClass("Error during setGeneralSubstatusName!");
02142 ok &= (osresult1->IsEqual(osresult2));
02143 if (!ok)
02144 throw ErrorClass("setGeneralSubstatusName: osresult objects falsely compare unequal!");
02145
02146 ok &= osresult1->setGeneralSubstatusDescription(i,"ABC 123");
02147 if (!ok)
02148 throw ErrorClass("Error during setGeneralSubstatusDescription!");
02149 ok &= (!osresult1->IsEqual(osresult2));
02150 if (!ok)
02151 throw ErrorClass("setGeneralSubstatusDescription: osresult objects falsely compare equal!");
02152 ok &= osresult2->setGeneralSubstatusDescription(i,"ABC 123");
02153 if (!ok)
02154 throw ErrorClass("Error during setGeneralSubstatusDescription!");
02155 ok &= (osresult1->IsEqual(osresult2));
02156 if (!ok)
02157 throw ErrorClass("setGeneralSubstatusDescription: osresult objects falsely compare unequal!");
02158 }
02159
02160 ok &= osresult1->setGeneralMessage("testing 123");
02161 if (!ok)
02162 throw ErrorClass("Error during setGeneralMessage!");
02163 ok &= (!osresult1->IsEqual(osresult2));
02164 if (!ok)
02165 throw ErrorClass("setGeneralMessage: osresult objects falsely compare equal!");
02166 ok &= osresult2->setGeneralMessage("testing 123");
02167 if (!ok)
02168 throw ErrorClass("Error during setGeneralMessage!");
02169 ok &= (osresult1->IsEqual(osresult2));
02170 if (!ok)
02171 throw ErrorClass("setGeneralMessage: osresult objects falsely compare unequal!");
02172
02173 ok &= osresult1->setServiceName("testing 123");
02174 if (!ok)
02175 throw ErrorClass("Error during setServiceName!");
02176 ok &= (!osresult1->IsEqual(osresult2));
02177 if (!ok)
02178 throw ErrorClass("setServiceName: osresult objects falsely compare equal!");
02179 ok &= osresult2->setServiceName("testing 123");
02180 if (!ok)
02181 throw ErrorClass("Error during setServiceName!");
02182 ok &= (osresult1->IsEqual(osresult2));
02183 if (!ok)
02184 throw ErrorClass("setServiceName: osresult objects falsely compare unequal!");
02185
02186 ok &= osresult1->setServiceURI("testing 123");
02187 if (!ok)
02188 throw ErrorClass("Error during setServiceURI!");
02189 ok &= (!osresult1->IsEqual(osresult2));
02190 if (!ok)
02191 throw ErrorClass("setServiceURI: osresult objects falsely compare equal!");
02192 ok &= osresult2->setServiceURI("testing 123");
02193 if (!ok)
02194 throw ErrorClass("Error during setServiceURI!");
02195 ok &= (osresult1->IsEqual(osresult2));
02196 if (!ok)
02197 throw ErrorClass("setServiceURI: osresult objects falsely compare unequal!");
02198
02199 ok &= osresult1->setInstanceName("testing 123");
02200 if (!ok)
02201 throw ErrorClass("Error during setInstanceName!");
02202 ok &= (!osresult1->IsEqual(osresult2));
02203 if (!ok)
02204 throw ErrorClass("setInstanceName: osresult objects falsely compare equal!");
02205 ok &= osresult2->setInstanceName("testing 123");
02206 if (!ok)
02207 throw ErrorClass("Error during setInstanceName!");
02208 ok &= (osresult1->IsEqual(osresult2));
02209 if (!ok)
02210 throw ErrorClass("setInstanceName: osresult objects falsely compare unequal!");
02211
02212 ok &= osresult1->setJobID("testing 123");
02213 if (!ok)
02214 throw ErrorClass("Error during setJobID!");
02215 ok &= (!osresult1->IsEqual(osresult2));
02216 if (!ok)
02217 throw ErrorClass("setJobID: osresult objects falsely compare equal!");
02218 ok &= osresult2->setJobID("testing 123");
02219 if (!ok)
02220 throw ErrorClass("Error during setJobID!");
02221 ok &= (osresult1->IsEqual(osresult2));
02222 if (!ok)
02223 throw ErrorClass("setJobID: osresult objects falsely compare unequal!");
02224
02225 ok &= osresult1->setSolverInvoked("testing 123");
02226 if (!ok)
02227 throw ErrorClass("Error during setSolverInvoked!");
02228 ok &= (!osresult1->IsEqual(osresult2));
02229 if (!ok)
02230 throw ErrorClass("setSolverInvoked: osresult objects falsely compare equal!");
02231 ok &= osresult2->setSolverInvoked("testing 123");
02232 if (!ok)
02233 throw ErrorClass("Error during setSolverInvoked!");
02234 ok &= (osresult1->IsEqual(osresult2));
02235 if (!ok)
02236 throw ErrorClass("setSolverInvoked: osresult objects falsely compare unequal!");
02237
02238 ok &= osresult1->setTimeStamp("2001-12-17T09:30:47.0Z");
02239 if (!ok)
02240 throw ErrorClass("Error during setTimeStamp!");
02241 ok &= (!osresult1->IsEqual(osresult2));
02242 if (!ok)
02243 throw ErrorClass("setTimeStamp: osresult objects falsely compare equal!");
02244 ok &= osresult2->setTimeStamp("2001-12-17T09:30:47.0Z");
02245 if (!ok)
02246 throw ErrorClass("Error during setTimeStamp!");
02247 ok &= (osresult1->IsEqual(osresult2));
02248 if (!ok)
02249 throw ErrorClass("setTimeStamp: osresult objects falsely compare unequal!");
02250
02251 ok &= osresult1->setNumberOfOtherGeneralResults(3);
02252 if (!ok)
02253 throw ErrorClass("Error during setNumberOfOtherGeneralResults!");
02254 ok &= (!osresult1->IsEqual(osresult2));
02255 if (!ok)
02256 throw ErrorClass("setNumberOfOtherGeneralResults: osresult objects falsely compare equal!");
02257 ok &= osresult2->setNumberOfOtherGeneralResults(3);
02258 if (!ok)
02259 throw ErrorClass("Error during setNumberOfOtherGeneralResults!");
02260 ok &= (osresult1->IsEqual(osresult2));
02261 if (!ok)
02262 throw ErrorClass("setNumberOfOtherGeneralResults: osresult objects falsely compare unequal!");
02263
02264 for (int i=0; i < 3; ++i)
02265 {
02266 ok &= osresult1->setOtherGeneralResultName(i,"some name");
02267 if (!ok)
02268 throw ErrorClass("Error during setOtherGeneralResultName!");
02269 ok &= (!osresult1->IsEqual(osresult2));
02270 if (!ok)
02271 throw ErrorClass("setOtherGeneralResultName: osresult objects falsely compare equal!");
02272 ok &= osresult2->setOtherGeneralResultName(i,"some name");
02273 if (!ok)
02274 throw ErrorClass("Error during setOtherGeneralResultName!");
02275 ok &= (osresult1->IsEqual(osresult2));
02276 if (!ok)
02277 throw ErrorClass("setOtherGeneralResultName: osresult objects falsely compare unequal!");
02278
02279 ok &= osresult1->setOtherGeneralResultValue(i,"some value");
02280 if (!ok)
02281 throw ErrorClass("Error during setOtherGeneralResultValue!");
02282 ok &= (!osresult1->IsEqual(osresult2));
02283 if (!ok)
02284 throw ErrorClass("setOtherGeneralResultValue: osresult objects falsely compare equal!");
02285 ok &= osresult2->setOtherGeneralResultValue(i,"some value");
02286 if (!ok)
02287 throw ErrorClass("Error during setOtherGeneralResultValue!");
02288 ok &= (osresult1->IsEqual(osresult2));
02289 if (!ok)
02290 throw ErrorClass("setOtherGeneralResultValue: osresult objects falsely compare unequal!");
02291
02292 ok &= osresult1->setOtherGeneralResultDescription(i,"ABC 123");
02293 if (!ok)
02294 throw ErrorClass("Error during setOtherGeneralResultDescription!");
02295 ok &= (!osresult1->IsEqual(osresult2));
02296 if (!ok)
02297 throw ErrorClass("setOtherGeneralResultDescription: osresult objects falsely compare equal!");
02298 ok &= osresult2->setOtherGeneralResultDescription(i,"ABC 123");
02299 if (!ok)
02300 throw ErrorClass("Error during setOtherGeneralResultDescription!");
02301 ok &= (osresult1->IsEqual(osresult2));
02302 if (!ok)
02303 throw ErrorClass("setOtherGeneralResultDescription: osresult objects falsely compare unequal!");
02304 }
02305
02306
02307 ok &= osresult1->setSystemInformation("testing 123");
02308 if (!ok)
02309 throw ErrorClass("Error during setSystemInformation!");
02310 ok &= (!osresult1->IsEqual(osresult2));
02311 if (!ok)
02312 throw ErrorClass("setSystemInformation: osresult objects falsely compare equal!");
02313 ok &= osresult2->setSystemInformation("testing 123");
02314 if (!ok)
02315 throw ErrorClass("Error during setSystemInformation!");
02316 ok &= (osresult1->IsEqual(osresult2));
02317 if (!ok)
02318 throw ErrorClass("setSystemInformation: osresult objects falsely compare unequal!");
02319
02320 ok &= osresult1->setAvailableDiskSpaceUnit("megabyte");
02321 if (!ok)
02322 throw ErrorClass("Error during setAvailableDiskSpaceUnit!");
02323 ok &= (!osresult1->IsEqual(osresult2));
02324 if (!ok)
02325 throw ErrorClass("setAvailableDiskSpaceUnit: osresult objects falsely compare equal!");
02326 ok &= osresult2->setAvailableDiskSpaceUnit("megabyte");
02327 if (!ok)
02328 throw ErrorClass("Error during setAvailableDiskSpaceUnit!");
02329 ok &= (osresult1->IsEqual(osresult2));
02330 if (!ok)
02331 throw ErrorClass("setAvailableDiskSpaceUnit: osresult objects falsely compare unequal!");
02332
02333 ok &= osresult1->setAvailableDiskSpaceDescription("testing 123");
02334 if (!ok)
02335 throw ErrorClass("Error during setAvailableDiskSpaceDescription!");
02336 ok &= (!osresult1->IsEqual(osresult2));
02337 if (!ok)
02338 throw ErrorClass("setAvailableDiskSpaceDescription: osresult objects falsely compare equal!");
02339 ok &= osresult2->setAvailableDiskSpaceDescription("testing 123");
02340 if (!ok)
02341 throw ErrorClass("Error during setAvailableDiskSpaceDescription!");
02342 ok &= (osresult1->IsEqual(osresult2));
02343 if (!ok)
02344 throw ErrorClass("setAvailableDiskSpaceDescription: osresult objects falsely compare unequal!");
02345
02346 ok &= osresult1->setAvailableDiskSpaceValue(100.0);
02347 if (!ok)
02348 throw ErrorClass("Error during setAvailableDiskSpaceValue!");
02349 ok &= (!osresult1->IsEqual(osresult2));
02350 if (!ok)
02351 throw ErrorClass("setAvailableDiskSpaceValue: osresult objects falsely compare equal!");
02352 ok &= osresult2->setAvailableDiskSpaceValue(100.0);
02353 if (!ok)
02354 throw ErrorClass("Error during setAvailableDiskSpaceValue!");
02355 ok &= (osresult1->IsEqual(osresult2));
02356 if (!ok)
02357 throw ErrorClass("setAvailableDiskSpaceValue: osresult objects falsely compare unequal!");
02358
02359 ok &= osresult1->setAvailableMemoryUnit("megabyte");
02360 if (!ok)
02361 throw ErrorClass("Error during setAvailableMemoryUnit!");
02362 ok &= (!osresult1->IsEqual(osresult2));
02363 if (!ok)
02364 throw ErrorClass("setAvailableMemoryUnit: osresult objects falsely compare equal!");
02365 ok &= osresult2->setAvailableMemoryUnit("megabyte");
02366 if (!ok)
02367 throw ErrorClass("Error during setAvailableMemoryUnit!");
02368 ok &= (osresult1->IsEqual(osresult2));
02369 if (!ok)
02370 throw ErrorClass("setAvailableMemoryUnit: osresult objects falsely compare unequal!");
02371
02372 ok &= osresult1->setAvailableMemoryDescription("testing 123");
02373 if (!ok)
02374 throw ErrorClass("Error during setAvailableMemoryDescription!");
02375 ok &= (!osresult1->IsEqual(osresult2));
02376 if (!ok)
02377 throw ErrorClass("setAvailableMemoryDescription: osresult objects falsely compare equal!");
02378 ok &= osresult2->setAvailableMemoryDescription("testing 123");
02379 if (!ok)
02380 throw ErrorClass("Error during setAvailableMemoryDescription!");
02381 ok &= (osresult1->IsEqual(osresult2));
02382 if (!ok)
02383 throw ErrorClass("setAvailableMemoryDescription: osresult objects falsely compare unequal!");
02384
02385 ok &= osresult1->setAvailableMemoryValue(100.0);
02386 if (!ok)
02387 throw ErrorClass("Error during setAvailableMemoryValue!");
02388 ok &= (!osresult1->IsEqual(osresult2));
02389 if (!ok)
02390 throw ErrorClass("setAvailableMemoryValue: osresult objects falsely compare equal!");
02391 ok &= osresult2->setAvailableMemoryValue(100.0);
02392 if (!ok)
02393 throw ErrorClass("Error during setAvailableMemoryValue!");
02394 ok &= (osresult1->IsEqual(osresult2));
02395 if (!ok)
02396 throw ErrorClass("setAvailableMemoryValue: osresult objects falsely compare unequal!");
02397
02398 ok &= osresult1->setAvailableCPUSpeedUnit("megahertz");
02399 if (!ok)
02400 throw ErrorClass("Error during setAvailableCPUSpeedUnit!");
02401 ok &= (!osresult1->IsEqual(osresult2));
02402 if (!ok)
02403 throw ErrorClass("setAvailableCPUSpeedUnit: osresult objects falsely compare equal!");
02404 ok &= osresult2->setAvailableCPUSpeedUnit("megahertz");
02405 if (!ok)
02406 throw ErrorClass("Error during setAvailableCPUSpeedUnit!");
02407 ok &= (osresult1->IsEqual(osresult2));
02408 if (!ok)
02409 throw ErrorClass("setAvailableCPUSpeedUnit: osresult objects falsely compare unequal!");
02410
02411 ok &= osresult1->setAvailableCPUSpeedDescription("testing 123");
02412 if (!ok)
02413 throw ErrorClass("Error during setAvailableCPUSpeedDescription!");
02414 ok &= (!osresult1->IsEqual(osresult2));
02415 if (!ok)
02416 throw ErrorClass("setAvailableCPUSpeedDescription: osresult objects falsely compare equal!");
02417 ok &= osresult2->setAvailableCPUSpeedDescription("testing 123");
02418 if (!ok)
02419 throw ErrorClass("Error during setAvailableCPUSpeedDescription!");
02420 ok &= (osresult1->IsEqual(osresult2));
02421 if (!ok)
02422 throw ErrorClass("setAvailableCPUSpeedDescription: osresult objects falsely compare unequal!");
02423
02424 ok &= osresult1->setAvailableCPUSpeedValue(100.0);
02425 if (!ok)
02426 throw ErrorClass("Error during setAvailableCPUSpeedValue!");
02427 ok &= (!osresult1->IsEqual(osresult2));
02428 if (!ok)
02429 throw ErrorClass("setAvailableCPUSpeedValue: osresult objects falsely compare equal!");
02430 ok &= osresult2->setAvailableCPUSpeedValue(100.0);
02431 if (!ok)
02432 throw ErrorClass("Error during setAvailableCPUSpeedValue!");
02433 ok &= (osresult1->IsEqual(osresult2));
02434 if (!ok)
02435 throw ErrorClass("setAvailableCPUSpeedValue: osresult objects falsely compare unequal!");
02436
02437 ok &= osresult1->setAvailableCPUNumberDescription("testing 123");
02438 if (!ok)
02439 throw ErrorClass("Error during setAvailableCPUNumberDescription!");
02440 ok &= (!osresult1->IsEqual(osresult2));
02441 if (!ok)
02442 throw ErrorClass("setAvailableCPUNumberDescription: osresult objects falsely compare equal!");
02443 ok &= osresult2->setAvailableCPUNumberDescription("testing 123");
02444 if (!ok)
02445 throw ErrorClass("Error during setAvailableCPUNumberDescription!");
02446 ok &= (osresult1->IsEqual(osresult2));
02447 if (!ok)
02448 throw ErrorClass("setAvailableCPUNumberDescription: osresult objects falsely compare unequal!");
02449
02450 ok &= osresult1->setAvailableCPUNumberValue(100);
02451 if (!ok)
02452 throw ErrorClass("Error during setAvailableCPUNumberValue!");
02453 ok &= (!osresult1->IsEqual(osresult2));
02454 if (!ok)
02455 throw ErrorClass("setAvailableCPUNumberValue: osresult objects falsely compare equal!");
02456 ok &= osresult2->setAvailableCPUNumberValue(100);
02457 if (!ok)
02458 throw ErrorClass("Error during setAvailableCPUNumberValue!");
02459 ok &= (osresult1->IsEqual(osresult2));
02460 if (!ok)
02461 throw ErrorClass("setAvailableCPUNumberValue: osresult objects falsely compare unequal!");
02462
02463 ok &= osresult1->setNumberOfOtherSystemResults(3);
02464 if (!ok)
02465 throw ErrorClass("Error during setNumberOfOtherSystemResults!");
02466 ok &= (!osresult1->IsEqual(osresult2));
02467 if (!ok)
02468 throw ErrorClass("setNumberOfOtherSystemResults: osresult objects falsely compare equal!");
02469 ok &= osresult2->setNumberOfOtherSystemResults(3);
02470 if (!ok)
02471 throw ErrorClass("Error during setNumberOfOtherSystemResults!");
02472 ok &= (osresult1->IsEqual(osresult2));
02473 if (!ok)
02474 throw ErrorClass("setNumberOfOtherSystemResults: osresult objects falsely compare unequal!");
02475
02476 for (int i=0; i < 3; ++i)
02477 {
02478 ok &= osresult1->setOtherSystemResultName(i,"some name");
02479 if (!ok)
02480 throw ErrorClass("Error during setOtherSystemResultName!");
02481 ok &= (!osresult1->IsEqual(osresult2));
02482 if (!ok)
02483 throw ErrorClass("setOtherSystemResultName: osresult objects falsely compare equal!");
02484 ok &= osresult2->setOtherSystemResultName(i,"some name");
02485 if (!ok)
02486 throw ErrorClass("Error during setOtherSystemResultName!");
02487 ok &= (osresult1->IsEqual(osresult2));
02488 if (!ok)
02489 throw ErrorClass("setOtherSystemResultName: osresult objects falsely compare unequal!");
02490
02491 ok &= osresult1->setOtherSystemResultValue(i,"some value");
02492 if (!ok)
02493 throw ErrorClass("Error during setOtherSystemResultValue!");
02494 ok &= (!osresult1->IsEqual(osresult2));
02495 if (!ok)
02496 throw ErrorClass("setOtherSystemResultValue: osresult objects falsely compare equal!");
02497 ok &= osresult2->setOtherSystemResultValue(i,"some value");
02498 if (!ok)
02499 throw ErrorClass("Error during setOtherSystemResultValue!");
02500 ok &= (osresult1->IsEqual(osresult2));
02501 if (!ok)
02502 throw ErrorClass("setOtherSystemResultValue: osresult objects falsely compare unequal!");
02503
02504 ok &= osresult1->setOtherSystemResultDescription(i,"ABC 123");
02505 if (!ok)
02506 throw ErrorClass("Error during setSOtherSystemResultDescription!");
02507 ok &= (!osresult1->IsEqual(osresult2));
02508 if (!ok)
02509 throw ErrorClass("setOtherSystemResultDescription: osresult objects falsely compare equal!");
02510 ok &= osresult2->setOtherSystemResultDescription(i,"ABC 123");
02511 if (!ok)
02512 throw ErrorClass("Error during setOtherSystemResultDescription!");
02513 ok &= (osresult1->IsEqual(osresult2));
02514 if (!ok)
02515 throw ErrorClass("setOtherSystemResultDescription: osresult objects falsely compare unequal!");
02516 }
02517
02518
02519 ok &= osresult1->setCurrentState("busy");
02520 if (!ok)
02521 throw ErrorClass("Error during setCurrentState!");
02522 ok &= (!osresult1->IsEqual(osresult2));
02523 if (!ok)
02524 throw ErrorClass("setCurrentState: osresult objects falsely compare equal!");
02525 ok &= osresult2->setCurrentState("busy");
02526 if (!ok)
02527 throw ErrorClass("Error during setCurrentState!");
02528 ok &= (osresult1->IsEqual(osresult2));
02529 if (!ok)
02530 throw ErrorClass("setCurrentState: osresult objects falsely compare unequal!");
02531
02532 ok &= osresult1->setCurrentJobCount(123);
02533 if (!ok)
02534 throw ErrorClass("Error during setCurrentJobCount!");
02535 ok &= (!osresult1->IsEqual(osresult2));
02536 if (!ok)
02537 throw ErrorClass("setCurrentJobCount: osresult objects falsely compare equal!");
02538 ok &= osresult2->setCurrentJobCount(123);
02539 if (!ok)
02540 throw ErrorClass("Error during setCurrentJobCount!");
02541 ok &= (osresult1->IsEqual(osresult2));
02542 if (!ok)
02543 throw ErrorClass("setCurrentJobCount: osresult objects falsely compare unequal!");
02544
02545 ok &= osresult1->setTotalJobsSoFar(123);
02546 if (!ok)
02547 throw ErrorClass("Error during setTotalJobsSoFar!");
02548 ok &= (!osresult1->IsEqual(osresult2));
02549 if (!ok)
02550 throw ErrorClass("setTotalJobsSoFar: osresult objects falsely compare equal!");
02551 ok &= osresult2->setTotalJobsSoFar(123);
02552 if (!ok)
02553 throw ErrorClass("Error during setTotalJobsSoFar!");
02554 ok &= (osresult1->IsEqual(osresult2));
02555 if (!ok)
02556 throw ErrorClass("setTotalJobsSoFar: osresult objects falsely compare unequal!");
02557
02558 ok &= osresult1->setTimeServiceStarted("2001-12-17T09:30:47.0Z");
02559 if (!ok)
02560 throw ErrorClass("Error during setTimeServiceStarted!");
02561 ok &= (!osresult1->IsEqual(osresult2));
02562 if (!ok)
02563 throw ErrorClass("setTimeServiceStarted: osresult objects falsely compare equal!");
02564 ok &= osresult2->setTimeServiceStarted("2001-12-17T09:30:47.0Z");
02565 if (!ok)
02566 throw ErrorClass("Error during setTimeServiceStarted!");
02567 ok &= (osresult1->IsEqual(osresult2));
02568 if (!ok)
02569 throw ErrorClass("setTimeServiceStarted: osresult objects falsely compare unequal!");
02570
02571 ok &= osresult1->setServiceUtilization(0.8);
02572 if (!ok)
02573 throw ErrorClass("Error during setServiceUtilization!");
02574 ok &= (!osresult1->IsEqual(osresult2));
02575 if (!ok)
02576 throw ErrorClass("setServiceUtilization: osresult objects falsely compare equal!");
02577 ok &= osresult2->setServiceUtilization(0.8);
02578 if (!ok)
02579 throw ErrorClass("Error during setServiceUtilization!");
02580 ok &= (osresult1->IsEqual(osresult2));
02581 if (!ok)
02582 throw ErrorClass("setServiceUtilization: osresult objects falsely compare unequal!");
02583
02584 ok &= osresult1->setNumberOfOtherServiceResults(3);
02585 if (!ok)
02586 throw ErrorClass("Error during setNumberOfOtherServiceResults!");
02587 ok &= (!osresult1->IsEqual(osresult2));
02588 if (!ok)
02589 throw ErrorClass("setNumberOfOtherServiceResults: osresult objects falsely compare equal!");
02590 ok &= osresult2->setNumberOfOtherServiceResults(3);
02591 if (!ok)
02592 throw ErrorClass("Error during setNumberOfOtherServiceResults!");
02593 ok &= (osresult1->IsEqual(osresult2));
02594 if (!ok)
02595 throw ErrorClass("setNumberOfOtherServiceResults: osresult objects falsely compare unequal!");
02596
02597 for (int i=0; i < 3; ++i)
02598 {
02599 ok &= osresult1->setOtherServiceResultName(i,"some name");
02600 if (!ok)
02601 throw ErrorClass("Error during setOtherServiceResultName!");
02602 ok &= (!osresult1->IsEqual(osresult2));
02603 if (!ok)
02604 throw ErrorClass("setOtherServiceResultName: osresult objects falsely compare equal!");
02605 ok &= osresult2->setOtherServiceResultName(i,"some name");
02606 if (!ok)
02607 throw ErrorClass("Error during setOtherServiceResultName!");
02608 ok &= (osresult1->IsEqual(osresult2));
02609 if (!ok)
02610 throw ErrorClass("setOtherServiceResultName: osresult objects falsely compare unequal!");
02611
02612 ok &= osresult1->setOtherServiceResultValue(i,"some value");
02613 if (!ok)
02614 throw ErrorClass("Error during setOtherServiceResultValue!");
02615 ok &= (!osresult1->IsEqual(osresult2));
02616 if (!ok)
02617 throw ErrorClass("setOtherServiceResultValue: osresult objects falsely compare equal!");
02618 ok &= osresult2->setOtherServiceResultValue(i,"some value");
02619 if (!ok)
02620 throw ErrorClass("Error during setOtherServiceResultValue!");
02621 ok &= (osresult1->IsEqual(osresult2));
02622 if (!ok)
02623 throw ErrorClass("setOtherServiceResultValue: osresult objects falsely compare unequal!");
02624
02625 ok &= osresult1->setOtherServiceResultDescription(i,"ABC 123");
02626 if (!ok)
02627 throw ErrorClass("Error during setOtherServiceResultDescription!");
02628 ok &= (!osresult1->IsEqual(osresult2));
02629 if (!ok)
02630 throw ErrorClass("setOtherServiceResultDescription: osresult objects falsely compare equal!");
02631 ok &= osresult2->setOtherServiceResultDescription(i,"ABC 123");
02632 if (!ok)
02633 throw ErrorClass("Error during setOtherServiceResultDescription!");
02634 ok &= (osresult1->IsEqual(osresult2));
02635 if (!ok)
02636 throw ErrorClass("setOtherServiceResultDescription: osresult objects falsely compare unequal!");
02637 }
02638
02639
02640 ok &= osresult1->setJobStatus("waiting");
02641 if (!ok)
02642 throw ErrorClass("Error during setJobStatus!");
02643 ok &= (!osresult1->IsEqual(osresult2));
02644 if (!ok)
02645 throw ErrorClass("setJobStatus: osresult objects falsely compare equal!");
02646 ok &= osresult2->setJobStatus("waiting");
02647 if (!ok)
02648 throw ErrorClass("Error during setJobStatus!");
02649 ok &= (osresult1->IsEqual(osresult2));
02650 if (!ok)
02651 throw ErrorClass("setJobStatus: osresult objects falsely compare unequal!");
02652
02653 ok &= osresult1->setJobSubmitTime("2001-12-17T09:30:47.0Z");
02654 if (!ok)
02655 throw ErrorClass("Error during setJobSubmitTime!");
02656 ok &= (!osresult1->IsEqual(osresult2));
02657 if (!ok)
02658 throw ErrorClass("setJobSubmitTime: osresult objects falsely compare equal!");
02659 ok &= osresult2->setJobSubmitTime("2001-12-17T09:30:47.0Z");
02660 if (!ok)
02661 throw ErrorClass("Error during setJobSubmitTime!");
02662 ok &= (osresult1->IsEqual(osresult2));
02663 if (!ok)
02664 throw ErrorClass("setJobSubmitTime: osresult objects falsely compare unequal!");
02665
02666 ok &= osresult1->setScheduledStartTime("2001-12-17T09:30:47.0Z");
02667 if (!ok)
02668 throw ErrorClass("Error during setScheduledStartTime!");
02669 ok &= (!osresult1->IsEqual(osresult2));
02670 if (!ok)
02671 throw ErrorClass("setScheduledStartTime: osresult objects falsely compare equal!");
02672 ok &= osresult2->setScheduledStartTime("2001-12-17T09:30:47.0Z");
02673 if (!ok)
02674 throw ErrorClass("Error during setScheduledStartTime!");
02675 ok &= (osresult1->IsEqual(osresult2));
02676 if (!ok)
02677 throw ErrorClass("setScheduledStartTime: osresult objects falsely compare unequal!");
02678
02679 ok &= osresult1->setActualStartTime("2001-12-17T09:30:47.0Z");
02680 if (!ok)
02681 throw ErrorClass("Error during setActualStartTime!");
02682 ok &= (!osresult1->IsEqual(osresult2));
02683 if (!ok)
02684 throw ErrorClass("setActualStartTime: osresult objects falsely compare equal!");
02685 ok &= osresult2->setActualStartTime("2001-12-17T09:30:47.0Z");
02686 if (!ok)
02687 throw ErrorClass("Error during setActualStartTime!");
02688 ok &= (osresult1->IsEqual(osresult2));
02689 if (!ok)
02690 throw ErrorClass("setActualStartTime: osresult objects falsely compare unequal!");
02691
02692 ok &= osresult1->setJobEndTime("2001-12-17T09:30:47.0Z");
02693 if (!ok)
02694 throw ErrorClass("Error during setJobEndTime!");
02695 ok &= (!osresult1->IsEqual(osresult2));
02696 if (!ok)
02697 throw ErrorClass("setJobEndTime: osresult objects falsely compare equal!");
02698 ok &= osresult2->setJobEndTime("2001-12-17T09:30:47.0Z");
02699 if (!ok)
02700 throw ErrorClass("Error during setJobEndTime!");
02701 ok &= (osresult1->IsEqual(osresult2));
02702 if (!ok)
02703 throw ErrorClass("setJobEndTime: osresult objects falsely compare unequal!");
02704
02705 ok &= osresult1->setNumberOfTimes(3);
02706 if (!ok)
02707 throw ErrorClass("Error during setNumberOfTimes!");
02708 ok &= (!osresult1->IsEqual(osresult2));
02709 if (!ok)
02710 throw ErrorClass("setNumberOfTimes: osresult objects falsely compare equal!");
02711 ok &= osresult2->setNumberOfTimes(3);
02712 if (!ok)
02713 throw ErrorClass("Error during setNumberOfTimes!");
02714 ok &= (osresult1->IsEqual(osresult2));
02715 if (!ok)
02716 throw ErrorClass("setNumberOfTimes: osresult objects falsely compare unequal!");
02717
02718 for (int i=0; i < 3; ++i)
02719 {
02720 ok &= osresult1->setTimingInformation(i,"cpuTime","other","second","blabla",3.14);
02721 if (!ok)
02722 throw ErrorClass("Error during setTimingInformation!");
02723 ok &= (!osresult1->IsEqual(osresult2));
02724 if (!ok)
02725 throw ErrorClass("setTimingInformation: osresult objects falsely compare equal!");
02726 ok &= osresult2->setTimingInformation(i,"cpuTime","other","second","blabla",3.14);
02727 if (!ok)
02728 throw ErrorClass("Error during setTimingInformation!");
02729 ok &= (osresult1->IsEqual(osresult2));
02730 if (!ok)
02731 throw ErrorClass("setTimingInformation: osresult objects falsely compare unequal!");
02732
02733 }
02734
02735 ok &= osresult1->setUsedDiskSpaceUnit("megabyte");
02736 if (!ok)
02737 throw ErrorClass("Error during setUsedDiskSpaceUnit!");
02738 ok &= (!osresult1->IsEqual(osresult2));
02739 if (!ok)
02740 throw ErrorClass("setUsedDiskSpaceUnit: osresult objects falsely compare equal!");
02741 ok &= osresult2->setUsedDiskSpaceUnit("megabyte");
02742 if (!ok)
02743 throw ErrorClass("Error during setUsedDiskSpaceUnit!");
02744 ok &= (osresult1->IsEqual(osresult2));
02745 if (!ok)
02746 throw ErrorClass("setUsedDiskSpaceUnit: osresult objects falsely compare unequal!");
02747
02748 ok &= osresult1->setUsedDiskSpaceDescription("testing 123");
02749 if (!ok)
02750 throw ErrorClass("Error during setUsedDiskSpaceDescription!");
02751 ok &= (!osresult1->IsEqual(osresult2));
02752 if (!ok)
02753 throw ErrorClass("setUsedDiskSpaceDescription: osresult objects falsely compare equal!");
02754 ok &= osresult2->setUsedDiskSpaceDescription("testing 123");
02755 if (!ok)
02756 throw ErrorClass("Error during setUsedDiskSpaceDescription!");
02757 ok &= (osresult1->IsEqual(osresult2));
02758 if (!ok)
02759 throw ErrorClass("setUsedDiskSpaceDescription: osresult objects falsely compare unequal!");
02760
02761 ok &= osresult1->setUsedDiskSpaceValue(100.0);
02762 if (!ok)
02763 throw ErrorClass("Error during setUsedDiskSpaceValue!");
02764 ok &= (!osresult1->IsEqual(osresult2));
02765 if (!ok)
02766 throw ErrorClass("setUsedDiskSpaceValue: osresult objects falsely compare equal!");
02767 ok &= osresult2->setUsedDiskSpaceValue(100.0);
02768 if (!ok)
02769 throw ErrorClass("Error during setUsedDiskSpaceValue!");
02770 ok &= (osresult1->IsEqual(osresult2));
02771 if (!ok)
02772 throw ErrorClass("setUsedDiskSpaceValue: osresult objects falsely compare unequal!");
02773
02774 ok &= osresult1->setUsedMemoryUnit("megabyte");
02775 if (!ok)
02776 throw ErrorClass("Error during setUsedMemoryUnit!");
02777 ok &= (!osresult1->IsEqual(osresult2));
02778 if (!ok)
02779 throw ErrorClass("setUsedMemoryUnit: osresult objects falsely compare equal!");
02780 ok &= osresult2->setUsedMemoryUnit("megabyte");
02781 if (!ok)
02782 throw ErrorClass("Error during setUsedMemoryUnit!");
02783 ok &= (osresult1->IsEqual(osresult2));
02784 if (!ok)
02785 throw ErrorClass("setUsedMemoryUnit: osresult objects falsely compare unequal!");
02786
02787 ok &= osresult1->setUsedMemoryDescription("testing 123");
02788 if (!ok)
02789 throw ErrorClass("Error during setUsedMemoryDescription!");
02790 ok &= (!osresult1->IsEqual(osresult2));
02791 if (!ok)
02792 throw ErrorClass("setUsedMemoryDescription: osresult objects falsely compare equal!");
02793 ok &= osresult2->setUsedMemoryDescription("testing 123");
02794 if (!ok)
02795 throw ErrorClass("Error during setUsedMemoryDescription!");
02796 ok &= (osresult1->IsEqual(osresult2));
02797 if (!ok)
02798 throw ErrorClass("setUsedMemoryDescription: osresult objects falsely compare unequal!");
02799
02800 ok &= osresult1->setUsedMemoryValue(100.0);
02801 if (!ok)
02802 throw ErrorClass("Error during setUsedMemoryValue!");
02803 ok &= (!osresult1->IsEqual(osresult2));
02804 if (!ok)
02805 throw ErrorClass("setUsedMemoryValue: osresult objects falsely compare equal!");
02806 ok &= osresult2->setUsedMemoryValue(100.0);
02807 if (!ok)
02808 throw ErrorClass("Error during setUsedMemoryValue!");
02809 ok &= (osresult1->IsEqual(osresult2));
02810 if (!ok)
02811 throw ErrorClass("setUsedMemoryValue: osresult objects falsely compare unequal!");
02812
02813 ok &= osresult1->setUsedCPUSpeedUnit("megahertz");
02814 if (!ok)
02815 throw ErrorClass("Error during setUsedCPUSpeedUnit!");
02816 ok &= (!osresult1->IsEqual(osresult2));
02817 if (!ok)
02818 throw ErrorClass("setUsedCPUSpeedUnit: osresult objects falsely compare equal!");
02819 ok &= osresult2->setUsedCPUSpeedUnit("megahertz");
02820 if (!ok)
02821 throw ErrorClass("Error during setUsedCPUSpeedUnit!");
02822 ok &= (osresult1->IsEqual(osresult2));
02823 if (!ok)
02824 throw ErrorClass("setUsedCPUSpeedUnit: osresult objects falsely compare unequal!");
02825
02826 ok &= osresult1->setUsedCPUSpeedDescription("testing 123");
02827 if (!ok)
02828 throw ErrorClass("Error during setUsedCPUSpeedDescription!");
02829 ok &= (!osresult1->IsEqual(osresult2));
02830 if (!ok)
02831 throw ErrorClass("setUsedCPUSpeedDescription: osresult objects falsely compare equal!");
02832 ok &= osresult2->setUsedCPUSpeedDescription("testing 123");
02833 if (!ok)
02834 throw ErrorClass("Error during setUsedCPUSpeedDescription!");
02835 ok &= (osresult1->IsEqual(osresult2));
02836 if (!ok)
02837 throw ErrorClass("setUsedCPUSpeedDescription: osresult objects falsely compare unequal!");
02838
02839 ok &= osresult1->setUsedCPUSpeedValue(100.0);
02840 if (!ok)
02841 throw ErrorClass("Error during setUsedCPUSpeedValue!");
02842 ok &= (!osresult1->IsEqual(osresult2));
02843 if (!ok)
02844 throw ErrorClass("setUsedCPUSpeedValue: osresult objects falsely compare equal!");
02845 ok &= osresult2->setUsedCPUSpeedValue(100.0);
02846 if (!ok)
02847 throw ErrorClass("Error during setUsedCPUSpeedValue!");
02848 ok &= (osresult1->IsEqual(osresult2));
02849 if (!ok)
02850 throw ErrorClass("setUsedCPUSpeedValue: osresult objects falsely compare unequal!");
02851
02852 ok &= osresult1->setUsedCPUNumberDescription("testing 123");
02853 if (!ok)
02854 throw ErrorClass("Error during setUsedCPUNumberDescription!");
02855 ok &= (!osresult1->IsEqual(osresult2));
02856 if (!ok)
02857 throw ErrorClass("setUsedCPUNumberDescription: osresult objects falsely compare equal!");
02858 ok &= osresult2->setUsedCPUNumberDescription("testing 123");
02859 if (!ok)
02860 throw ErrorClass("Error during setUsedCPUNumberDescription!");
02861 ok &= (osresult1->IsEqual(osresult2));
02862 if (!ok)
02863 throw ErrorClass("setUsedCPUNumberDescription: osresult objects falsely compare unequal!");
02864
02865 ok &= osresult1->setUsedCPUNumberValue(100);
02866 if (!ok)
02867 throw ErrorClass("Error during setUsedCPUNumberValue!");
02868 ok &= (!osresult1->IsEqual(osresult2));
02869 if (!ok)
02870 throw ErrorClass("setUsedCPUNumberValue: osresult objects falsely compare equal!");
02871 ok &= osresult2->setUsedCPUNumberValue(100);
02872 if (!ok)
02873 throw ErrorClass("Error during setUsedCPUNumberValue!");
02874 ok &= (osresult1->IsEqual(osresult2));
02875 if (!ok)
02876 throw ErrorClass("setUsedCPUNumberValue: osresult objects falsely compare unequal!");
02877
02878 ok &= osresult1->setNumberOfOtherJobResults(3);
02879 if (!ok)
02880 throw ErrorClass("Error during setNumberOfOtherJobResults!");
02881 ok &= (!osresult1->IsEqual(osresult2));
02882 if (!ok)
02883 throw ErrorClass("setNumberOfOtherJobResults: osresult objects falsely compare equal!");
02884 ok &= osresult2->setNumberOfOtherJobResults(3);
02885 if (!ok)
02886 throw ErrorClass("Error during setNumberOfOtherJobResults!");
02887 ok &= (osresult1->IsEqual(osresult2));
02888 if (!ok)
02889 throw ErrorClass("setNumberOfOtherJobResults: osresult objects falsely compare unequal!");
02890
02891 for (int i=0; i < 3; ++i)
02892 {
02893 ok &= osresult1->setOtherJobResultName(i,"some name");
02894 if (!ok)
02895 throw ErrorClass("Error during setOtherJobResultName!");
02896 ok &= (!osresult1->IsEqual(osresult2));
02897 if (!ok)
02898 throw ErrorClass("setOtherJobResultName: osresult objects falsely compare equal!");
02899 ok &= osresult2->setOtherJobResultName(i,"some name");
02900 if (!ok)
02901 throw ErrorClass("Error during setOtherJobResultName!");
02902 ok &= (osresult1->IsEqual(osresult2));
02903 if (!ok)
02904 throw ErrorClass("setOtherJobResultName: osresult objects falsely compare unequal!");
02905
02906 ok &= osresult1->setOtherJobResultValue(i,"some value");
02907 if (!ok)
02908 throw ErrorClass("Error during setOtherJobResultValue!");
02909 ok &= (!osresult1->IsEqual(osresult2));
02910 if (!ok)
02911 throw ErrorClass("setOtherJobResultValue: osresult objects falsely compare equal!");
02912 ok &= osresult2->setOtherJobResultValue(i,"some value");
02913 if (!ok)
02914 throw ErrorClass("Error during setOtherJobResultValue!");
02915 ok &= (osresult1->IsEqual(osresult2));
02916 if (!ok)
02917 throw ErrorClass("setOtherJobResultValue: osresult objects falsely compare unequal!");
02918
02919 ok &= osresult1->setOtherJobResultDescription(i,"ABC 123");
02920 if (!ok)
02921 throw ErrorClass("Error during setOtherJobResultDescription!");
02922 ok &= (!osresult1->IsEqual(osresult2));
02923 if (!ok)
02924 throw ErrorClass("setOtherJobResultDescription: osresult objects falsely compare equal!");
02925 ok &= osresult2->setOtherJobResultDescription(i,"ABC 123");
02926 if (!ok)
02927 throw ErrorClass("Error during setOtherJobResultDescription!");
02928 ok &= (osresult1->IsEqual(osresult2));
02929 if (!ok)
02930 throw ErrorClass("setOtherJobResultDescription: osresult objects falsely compare unequal!");
02931 }
02932
02933 ok &= osresult1->setSolutionNumber(2);
02934 if (!ok)
02935 throw ErrorClass("Error during setSolutionNumber!");
02936 ok &= (!osresult1->IsEqual(osresult2));
02937 if (!ok)
02938 throw ErrorClass("setSolutionNumber: osresult objects falsely compare equal!");
02939 ok &= osresult2->setSolutionNumber(2);
02940 if (!ok)
02941 throw ErrorClass("Error during setSolutionNumber!");
02942 ok &= (osresult1->IsEqual(osresult2));
02943 if (!ok)
02944 throw ErrorClass("setSolutionNumber: osresult objects falsely compare unequal!");
02945
02946 ok &= osresult1->setVariableNumber(4);
02947 if (!ok)
02948 throw ErrorClass("Error during setVariableNumber!");
02949 ok &= (!osresult1->IsEqual(osresult2));
02950 if (!ok)
02951 throw ErrorClass("setVariableNumber: osresult objects falsely compare equal!");
02952 ok &= osresult2->setVariableNumber(4);
02953 if (!ok)
02954 throw ErrorClass("Error during setVariableNumber!");
02955 ok &= (osresult1->IsEqual(osresult2));
02956 if (!ok)
02957 throw ErrorClass("setVariableNumber: osresult objects falsely compare unequal!");
02958
02959 ok &= osresult1->setObjectiveNumber(2);
02960 if (!ok)
02961 throw ErrorClass("Error during setObjectiveNumber!");
02962 ok &= (!osresult1->IsEqual(osresult2));
02963 if (!ok)
02964 throw ErrorClass("setObjectiveNumber: osresult objects falsely compare equal!");
02965 ok &= osresult2->setObjectiveNumber(2);
02966 if (!ok)
02967 throw ErrorClass("Error during setObjectiveNumber!");
02968 ok &= (osresult1->IsEqual(osresult2));
02969 if (!ok)
02970 throw ErrorClass("setObjectiveNumber: osresult objects falsely compare unequal!");
02971
02972 ok &= osresult1->setConstraintNumber(3);
02973 if (!ok)
02974 throw ErrorClass("Error during setConstraintNumber!");
02975 ok &= (!osresult1->IsEqual(osresult2));
02976 if (!ok)
02977 throw ErrorClass("setConstraintNumber: osresult objects falsely compare equal!");
02978 ok &= osresult2->setConstraintNumber(3);
02979 if (!ok)
02980 throw ErrorClass("Error during setConstraintNumber!");
02981 ok &= (osresult1->IsEqual(osresult2));
02982 if (!ok)
02983 throw ErrorClass("setConstraintNumber: osresult objects falsely compare unequal!");
02984
02985 for (int i=0; i < 2; ++i)
02986 {
02987 ok &= osresult1->setSolutionTargetObjectiveIdx(i,-2);
02988 if (!ok)
02989 throw ErrorClass("Error during setSolutionTargetObjectiveIdx!");
02990 ok &= (!osresult1->IsEqual(osresult2));
02991 if (!ok)
02992 throw ErrorClass("setSolutionTargetObjectiveIdx: osresult objects falsely compare equal!");
02993 ok &= osresult2->setSolutionTargetObjectiveIdx(i,-2);
02994 if (!ok)
02995 throw ErrorClass("Error during setSolutionTargetObjectiveIdx!");
02996 ok &= (osresult1->IsEqual(osresult2));
02997 if (!ok)
02998 throw ErrorClass("setSolutionTargetObjectiveIdx: osresult objects falsely compare unequal!");
02999
03000 ok &= osresult1->setSolutionWeightedObjectives(i,"true");
03001 if (!ok)
03002 throw ErrorClass("Error during setSolutionWeightedObjectives!");
03003 ok &= (!osresult1->IsEqual(osresult2));
03004 if (!ok)
03005 throw ErrorClass("setSolutionWeightedObjectives: osresult objects falsely compare equal!");
03006 ok &= osresult2->setSolutionWeightedObjectives(i,"true");
03007 if (!ok)
03008 throw ErrorClass("Error during setSolutionWeightedObjectives!");
03009 ok &= (osresult1->IsEqual(osresult2));
03010 if (!ok)
03011 throw ErrorClass("setSolutionWeightedObjectives: osresult objects falsely compare unequal!");
03012
03013 ok &= osresult1->setSolutionStatusType(i,"locallyOptimal");
03014 if (!ok)
03015 throw ErrorClass("Error during setSolutionStatusType!");
03016 ok &= (!osresult1->IsEqual(osresult2));
03017 if (!ok)
03018 throw ErrorClass("setSolutionStatusType: osresult objects falsely compare equal!");
03019 ok &= osresult2->setSolutionStatusType(i,"locallyOptimal");
03020 if (!ok)
03021 throw ErrorClass("Error during setSolutionStatusType!");
03022 ok &= (osresult1->IsEqual(osresult2));
03023 if (!ok)
03024 throw ErrorClass("setSolutionStatusType: osresult objects falsely compare unequal!");
03025
03026 ok &= osresult1->setSolutionStatusDescription(i,"ABC 123");
03027 if (!ok)
03028 throw ErrorClass("Error during setSolutionStatusDescription!");
03029 ok &= (!osresult1->IsEqual(osresult2));
03030 if (!ok)
03031 throw ErrorClass("setSolutionStatusDescription: osresult objects falsely compare equal!");
03032 ok &= osresult2->setSolutionStatusDescription(i,"ABC 123");
03033 if (!ok)
03034 throw ErrorClass("Error during setSolutionStatusDescription!");
03035 ok &= (osresult1->IsEqual(osresult2));
03036 if (!ok)
03037 throw ErrorClass("setSolutionStatusDescription: osresult objects falsely compare unequal!");
03038
03039 ok &= osresult1->setNumberOfSolutionSubstatuses(i,3);
03040 if (!ok)
03041 throw ErrorClass("Error during setNumberOfSolutionSubstatuses!");
03042 ok &= (!osresult1->IsEqual(osresult2));
03043 if (!ok)
03044 throw ErrorClass("setNumberOfSolutionSubstatuses: osresult objects falsely compare equal!");
03045 ok &= osresult2->setNumberOfSolutionSubstatuses(i,3);
03046 if (!ok)
03047 throw ErrorClass("Error during setNumberOfSolutionSubstatuses!");
03048 ok &= (osresult1->IsEqual(osresult2));
03049 if (!ok)
03050 throw ErrorClass("setNumberOfSolutionSubstatuses: osresult objects falsely compare unequal!");
03051
03052 for (int j=0; j < 3; ++j)
03053 {
03054 ok &= osresult1->setSolutionSubstatusType(i,j,"other");
03055 if (!ok)
03056 throw ErrorClass("Error during setSolutionSubstatusType!");
03057 ok &= (!osresult1->IsEqual(osresult2));
03058 if (!ok)
03059 throw ErrorClass("setSolutionSubstatusType: osresult objects falsely compare equal!");
03060 ok &= osresult2->setSolutionSubstatusType(i,j,"other");
03061 if (!ok)
03062 throw ErrorClass("Error during setSolutionSubstatusType!");
03063 ok &= (osresult1->IsEqual(osresult2));
03064 if (!ok)
03065 throw ErrorClass("setSolutionSubstatusType: osresult objects falsely compare unequal!");
03066
03067 ok &= osresult1->setSolutionSubstatusDescription(i,j,"whatever");
03068 if (!ok)
03069 throw ErrorClass("Error during setSolutionSubstatusDescription!");
03070 ok &= (!osresult1->IsEqual(osresult2));
03071 if (!ok)
03072 throw ErrorClass("setSolutionSubstatusDescription: osresult objects falsely compare equal!");
03073 ok &= osresult2->setSolutionSubstatusDescription(i,j,"whatever");
03074 if (!ok)
03075 throw ErrorClass("Error during setSolutionSubstatusDescription!");
03076 ok &= (osresult1->IsEqual(osresult2));
03077 if (!ok)
03078 throw ErrorClass("setSolutionSubstatusDescription: osresult objects falsely compare unequal!");
03079 }
03080
03081 ok &= osresult1->setSolutionMessage(i,"ABC 123");
03082 if (!ok)
03083 throw ErrorClass("Error during setSolutionMessage!");
03084 ok &= (!osresult1->IsEqual(osresult2));
03085 if (!ok)
03086 throw ErrorClass("setSolutionMessage: osresult objects falsely compare equal!");
03087 ok &= osresult2->setSolutionMessage(i,"ABC 123");
03088 if (!ok)
03089 throw ErrorClass("Error during setSolutionMessage!");
03090 ok &= (osresult1->IsEqual(osresult2));
03091 if (!ok)
03092 throw ErrorClass("setSolutionMessage: osresult objects falsely compare unequal!");
03093
03094 ok &= osresult1->setNumberOfVarValues(i,3);
03095 if (!ok)
03096 throw ErrorClass("Error during setNumberOfVarValues!");
03097 ok &= (!osresult1->IsEqual(osresult2));
03098 if (!ok)
03099 throw ErrorClass("setNumberOfVarValues: osresult objects falsely compare equal!");
03100 ok &= osresult2->setNumberOfVarValues(i,3);
03101 if (!ok)
03102 throw ErrorClass("Error during setNumberOfVarValues!");
03103 ok &= (osresult1->IsEqual(osresult2));
03104 if (!ok)
03105 throw ErrorClass("setNumberOfVarValues: osresult objects falsely compare unequal!");
03106
03107 for (int j=0; j < 3; ++j)
03108 {
03109 ok &= osresult1->setVarValue(i,j,j,3.14);
03110 if (!ok)
03111 throw ErrorClass("Error during setVarValue!");
03112 ok &= (!osresult1->IsEqual(osresult2));
03113 if (!ok)
03114 throw ErrorClass("setVarValue: osresult objects falsely compare equal!");
03115 ok &= osresult2->setVarValue(i,j,j,3.14);
03116 if (!ok)
03117 throw ErrorClass("Error during setVarValue!");
03118 ok &= (osresult1->IsEqual(osresult2));
03119 if (!ok)
03120 throw ErrorClass("setVarValue: osresult objects falsely compare unequal!");
03121 }
03122
03123 ok &= osresult1->setNumberOfVarValuesString(i,3);
03124 if (!ok)
03125 throw ErrorClass("Error during setNumberOfVarValuesString!");
03126 ok &= (!osresult1->IsEqual(osresult2));
03127 if (!ok)
03128 throw ErrorClass("setNumberOfVarValuesString: osresult objects falsely compare equal!");
03129 ok &= osresult2->setNumberOfVarValuesString(i,3);
03130 if (!ok)
03131 throw ErrorClass("Error during setNumberOfVarValuesString!");
03132 ok &= (osresult1->IsEqual(osresult2));
03133 if (!ok)
03134 throw ErrorClass("setNumberOfVarValuesString: osresult objects falsely compare unequal!");
03135
03136 for (int j=0; j < 3; ++j)
03137 {
03138 ok &= osresult1->setVarValueString(i,j,j,"one");
03139 if (!ok)
03140 throw ErrorClass("Error during setVarValueString!");
03141 ok &= (!osresult1->IsEqual(osresult2));
03142 if (!ok)
03143 throw ErrorClass("setVarValueString: osresult objects falsely compare equal!");
03144 ok &= osresult2->setVarValueString(i,j,j,"one");
03145 if (!ok)
03146 throw ErrorClass("Error during setVarValueString!");
03147 ok &= (osresult1->IsEqual(osresult2));
03148 if (!ok)
03149 throw ErrorClass("setVarValueString: osresult objects falsely compare unequal!");
03150 }
03151
03152 intArray[0]=1000*i + 1100 + 10 + 1;
03153 intArray[1]=1000*i + 1100 + 10 + 2;
03154 intArray[2]=1000*i + 1100 + 10 + 3;
03155
03156 ok &= osresult1->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_variables, ENUM_BASIS_STATUS_basic, intArray, 3);
03157 if (!ok)
03158 throw ErrorClass("Error during setBasisStatus (variables basic)!");
03159 ok &= (!osresult1->IsEqual(osresult2));
03160 if (!ok)
03161 throw ErrorClass("setBasisStatus (variables basic): osresult objects falsely compare equal!");
03162 ok &= osresult2->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_variables, ENUM_BASIS_STATUS_basic, intArray, 3);
03163 if (!ok)
03164 throw ErrorClass("Error during setBasisStatus (variables basic)!");
03165 ok &= (osresult1->IsEqual(osresult2));
03166 if (!ok)
03167 throw ErrorClass("setBasisStatus (variables basic): osresult objects falsely compare unequal!");
03168
03169 intArray[0] = intArray[0] + 10;
03170 intArray[1] = intArray[1] + 10;
03171 intArray[2] = intArray[2] + 10;
03172
03173
03174 ok &= osresult1->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_variables, ENUM_BASIS_STATUS_atLower, intArray, 3);
03175 if (!ok)
03176 throw ErrorClass("Error during setBasisStatus (variables atLower)!");
03177 ok &= (!osresult1->IsEqual(osresult2));
03178 if (!ok)
03179 throw ErrorClass("setBasisStatus (variables atLower): osresult objects falsely compare equal!");
03180 ok &= osresult2->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_variables, ENUM_BASIS_STATUS_atLower, intArray, 3);
03181 if (!ok)
03182 throw ErrorClass("Error during setBasisStatus (variables atLower)!");
03183 ok &= (osresult1->IsEqual(osresult2));
03184 if (!ok)
03185 throw ErrorClass("setBasisStatus (variables atLower): osresult objects falsely compare unequal!");
03186 intArray[0] = intArray[0] + 10;
03187 intArray[1] = intArray[1] + 10;
03188 intArray[2] = intArray[2] + 10;
03189
03190
03191 ok &= osresult1->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_variables, ENUM_BASIS_STATUS_atUpper, intArray, 3);
03192 if (!ok)
03193 throw ErrorClass("Error during setBasisStatus (variables atUpper)!");
03194 ok &= (!osresult1->IsEqual(osresult2));
03195 if (!ok)
03196 throw ErrorClass("setBasisStatus (variables atUpper): osresult objects falsely compare equal!");
03197 ok &= osresult2->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_variables, ENUM_BASIS_STATUS_atUpper, intArray, 3);
03198 if (!ok)
03199 throw ErrorClass("Error during setBasisStatus (variables atUpper)!");
03200 ok &= (osresult1->IsEqual(osresult2));
03201 if (!ok)
03202 throw ErrorClass("setBasisStatus (variables atUpper): osresult objects falsely compare unequal!");
03203
03204 intArray[0] = intArray[0] + 10;
03205 intArray[1] = intArray[1] + 10;
03206 intArray[2] = intArray[2] + 10;
03207
03208 ok &= osresult1->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_variables, ENUM_BASIS_STATUS_isFree, intArray, 3);
03209 if (!ok)
03210 throw ErrorClass("Error during setBasisStatus (variables isFree)!");
03211 ok &= (!osresult1->IsEqual(osresult2));
03212 if (!ok)
03213 throw ErrorClass("setBasisStatus (variables isFree): osresult objects falsely compare equal!");
03214 ok &= osresult2->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_variables, ENUM_BASIS_STATUS_isFree, intArray, 3);
03215 if (!ok)
03216 throw ErrorClass("Error during setBasisStatus (variables isFree)!");
03217 ok &= (osresult1->IsEqual(osresult2));
03218 if (!ok)
03219 throw ErrorClass("setBasisStatus (variables isFree): osresult objects falsely compare unequal!");
03220
03221 intArray[0] = intArray[0] + 10;
03222 intArray[1] = intArray[1] + 10;
03223 intArray[2] = intArray[2] + 10;
03224
03225 ok &= osresult1->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_variables, ENUM_BASIS_STATUS_superbasic, intArray, 3);
03226 if (!ok)
03227 throw ErrorClass("Error during setBasisStatus (variables superbasic)!");
03228 ok &= (!osresult1->IsEqual(osresult2));
03229 if (!ok)
03230 throw ErrorClass("setBasisStatus (variables superbasic): osresult objects falsely compare equal!");
03231 ok &= osresult2->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_variables, ENUM_BASIS_STATUS_superbasic, intArray, 3);
03232 if (!ok)
03233 throw ErrorClass("Error during setBasisStatus (variables superbasic)!");
03234 ok &= (osresult1->IsEqual(osresult2));
03235 if (!ok)
03236 throw ErrorClass("setBasisStatus (variables superbasic): osresult objects falsely compare unequal!");
03237
03238 intArray[0] = intArray[0] + 10;
03239 intArray[1] = intArray[1] + 10;
03240 intArray[2] = intArray[2] + 10;
03241
03242 ok &= osresult1->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_variables, ENUM_BASIS_STATUS_unknown, intArray, 3);
03243 if (!ok)
03244 throw ErrorClass("Error during setBasisStatus (variables unknown)!");
03245 ok &= (!osresult1->IsEqual(osresult2));
03246 if (!ok)
03247 throw ErrorClass("setBasisStatus (variables unknown): osresult objects falsely compare equal!");
03248 ok &= osresult2->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_variables, ENUM_BASIS_STATUS_unknown, intArray, 3);
03249 if (!ok)
03250 throw ErrorClass("Error during setBasisStatus (variables unknown)!");
03251 ok &= (osresult1->IsEqual(osresult2));
03252 if (!ok)
03253 throw ErrorClass("setBasisStatus (variables unknown): osresult objects falsely compare unequal!");
03254
03255 ok &= osresult1->setNumberOfOtherVariableResults(i,3);
03256 if (!ok)
03257 throw ErrorClass("Error during setNumberOfOtherVariableResults!");
03258 ok &= (!osresult1->IsEqual(osresult2));
03259 if (!ok)
03260 throw ErrorClass("setNumberOfOtherVariableResults: osresult objects falsely compare equal!");
03261 ok &= osresult2->setNumberOfOtherVariableResults(i,3);
03262 if (!ok)
03263 throw ErrorClass("Error during setNumberOfOtherVariableResults!");
03264 ok &= (osresult1->IsEqual(osresult2));
03265 if (!ok)
03266 throw ErrorClass("setNumberOfOtherVariableResults: osresult objects falsely compare unequal!");
03267
03268 for (int j=0; j < 2; ++j)
03269 {
03270 ok &= osresult1->setOtherVariableResultName(i,j,"other");
03271 if (!ok)
03272 throw ErrorClass("Error during setOtherVariableResultName!");
03273 ok &= (!osresult1->IsEqual(osresult2));
03274 if (!ok)
03275 throw ErrorClass("setOtherVariableResultName: osresult objects falsely compare equal!");
03276 ok &= osresult2->setOtherVariableResultName(i,j,"other");
03277 if (!ok)
03278 throw ErrorClass("Error during setOtherVariableResultName!");
03279 ok &= (osresult1->IsEqual(osresult2));
03280 if (!ok)
03281 throw ErrorClass("setOtherVariableResultName: osresult objects falsely compare unequal!");
03282
03283 ok &= osresult1->setOtherVariableResultDescription(i,j,"other");
03284 if (!ok)
03285 throw ErrorClass("Error during setOtherVariableResultDescription!");
03286 ok &= (!osresult1->IsEqual(osresult2));
03287 if (!ok)
03288 throw ErrorClass("setOtherVariableResultDescription: osresult objects falsely compare equal!");
03289 ok &= osresult2->setOtherVariableResultDescription(i,j,"other");
03290 if (!ok)
03291 throw ErrorClass("Error during setOtherVariableResultDescription!");
03292 ok &= (osresult1->IsEqual(osresult2));
03293 if (!ok)
03294 throw ErrorClass("setOtherVariableResultDescription: osresult objects falsely compare unequal!");
03295
03296 ok &= osresult1->setOtherVariableResultValue(i,j,"other");
03297 if (!ok)
03298 throw ErrorClass("Error during setOtherVariableResultValue!");
03299 ok &= (!osresult1->IsEqual(osresult2));
03300 if (!ok)
03301 throw ErrorClass("setOtherVariableResultValue: osresult objects falsely compare equal!");
03302 ok &= osresult2->setOtherVariableResultValue(i,j,"other");
03303 if (!ok)
03304 throw ErrorClass("Error during setOtherVariableResultValue!");
03305 ok &= (osresult1->IsEqual(osresult2));
03306 if (!ok)
03307 throw ErrorClass("setOtherVariableResultValue: osresult objects falsely compare unequal!");
03308
03309 ok &= osresult1->setOtherVariableResultNumberOfVar(i,j,3);
03310 if (!ok)
03311 throw ErrorClass("Error during setOtherVariableResultNumberOfVar!");
03312 ok &= (!osresult1->IsEqual(osresult2));
03313 if (!ok)
03314 throw ErrorClass("setOtherVariableResultNumberOfVar: osresult objects falsely compare equal!");
03315 ok &= osresult2->setOtherVariableResultNumberOfVar(i,j,3);
03316 if (!ok)
03317 throw ErrorClass("Error during setOtherVariableResultNumberOfVar!");
03318 ok &= (osresult1->IsEqual(osresult2));
03319 if (!ok)
03320 throw ErrorClass("setOtherVariableResultNumberOfVar: osresult objects falsely compare unequal!");
03321
03322 for (int k=0; k < 3; ++k)
03323 {
03324 ok &= osresult1->setOtherVariableResultVarIdx(i,j,k,k);
03325 if (!ok)
03326 throw ErrorClass("Error during setOtherVariableResultVarIdx!");
03327 ok &= (!osresult1->IsEqual(osresult2));
03328 if (!ok)
03329 throw ErrorClass("setOtherVariableResultVarIdx: osresult objects falsely compare equal!");
03330 ok &= osresult2->setOtherVariableResultVarIdx(i,j,k,k);
03331 if (!ok)
03332 throw ErrorClass("Error during setOtherVariableResultVarIdx!");
03333 ok &= (osresult1->IsEqual(osresult2));
03334 if (!ok)
03335 throw ErrorClass("setOtherVariableResultVarIdx: osresult objects falsely compare unequal!");
03336
03337 ok &= osresult1->setOtherVariableResultVar(i,j,k,"value");
03338 if (!ok)
03339 throw ErrorClass("Error during setOtherVariableResultVar!");
03340 ok &= (!osresult1->IsEqual(osresult2));
03341 if (!ok)
03342 throw ErrorClass("setOtherVariableResultVar: osresult objects falsely compare equal!");
03343 ok &= osresult2->setOtherVariableResultVar(i,j,k,"value");
03344 if (!ok)
03345 throw ErrorClass("Error during setOtherVariableResultVar!");
03346 ok &= (osresult1->IsEqual(osresult2));
03347 if (!ok)
03348 throw ErrorClass("setOtherVariableResultVar: osresult objects falsely compare unequal!");
03349 }
03350 }
03351
03352
03353
03354 ok &= osresult1->setOtherVariableResultName(i,2,"other");
03355 if (!ok)
03356 throw ErrorClass("Error during setOtherVariableResultName!");
03357 ok &= (!osresult1->IsEqual(osresult2));
03358 if (!ok)
03359 throw ErrorClass("setOtherVariableResultName: osresult objects falsely compare equal!");
03360 ok &= osresult2->setOtherVariableResultName(i,2,"other");
03361 if (!ok)
03362 throw ErrorClass("Error during setOtherVariableResultName!");
03363 ok &= (osresult1->IsEqual(osresult2));
03364 if (!ok)
03365 throw ErrorClass("setOtherVariableResultName: osresult objects falsely compare unequal!");
03366
03367 ok &= osresult1->setOtherVariableResultDescription(i,2,"other");
03368 if (!ok)
03369 throw ErrorClass("Error during setOtherVariableResultDescription!");
03370 ok &= (!osresult1->IsEqual(osresult2));
03371 if (!ok)
03372 throw ErrorClass("setOtherVariableResultDescription: osresult objects falsely compare equal!");
03373 ok &= osresult2->setOtherVariableResultDescription(i,2,"other");
03374 if (!ok)
03375 throw ErrorClass("Error during setOtherVariableResultDescription!");
03376 ok &= (osresult1->IsEqual(osresult2));
03377 if (!ok)
03378 throw ErrorClass("setOtherVariableResultDescription: osresult objects falsely compare unequal!");
03379
03380 ok &= osresult1->setOtherVariableResultValue(i,2,"other");
03381 if (!ok)
03382 throw ErrorClass("Error during setOtherVariableResultValue!");
03383 ok &= (!osresult1->IsEqual(osresult2));
03384 if (!ok)
03385 throw ErrorClass("setOtherVariableResultValue: osresult objects falsely compare equal!");
03386 ok &= osresult2->setOtherVariableResultValue(i,2,"other");
03387 if (!ok)
03388 throw ErrorClass("Error during setOtherVariableResultValue!");
03389 ok &= (osresult1->IsEqual(osresult2));
03390 if (!ok)
03391 throw ErrorClass("setOtherVariableResultValue: osresult objects falsely compare unequal!");
03392
03393
03394 ok &= osresult1->setOtherVariableResultNumberOfEnumerations(i,2,2);
03395 if (!ok)
03396 throw ErrorClass("Error during setOtherVariableResultNumberOfEnumerations!");
03397 ok &= (!osresult1->IsEqual(osresult2));
03398 if (!ok)
03399 throw ErrorClass("setOtherVariableResultNumberOfEnumerations: osresult objects falsely compare equal!");
03400 ok &= osresult2->setOtherVariableResultNumberOfEnumerations(i,2,2);
03401 if (!ok)
03402 throw ErrorClass("Error during setOtherVariableResultNumberOfEnumerations!");
03403 ok &= (osresult1->IsEqual(osresult2));
03404 if (!ok)
03405 throw ErrorClass("setOtherVariableResultNumberOfEnumerations: osresult objects falsely compare unequal!");
03406
03407 for (int k=0; k < 2; ++k)
03408 {
03409 intArray[0] = 1000*i + 1130 + 10*k + 1;
03410 intArray[1] = 1000*i + 1130 + 10*k + 2;
03411 intArray[2] = 1000*i + 1130 + 10*k + 3;
03412
03413 ok &= osresult1->setOtherOptionEnumeration(i,2,ENUM_PROBLEM_COMPONENT_variables,k,"value","description",intArray,3);
03414 if (!ok)
03415 throw ErrorClass("Error during setOtherOptionEnumeration!");
03416 ok &= (!osresult1->IsEqual(osresult2));
03417 if (!ok)
03418 throw ErrorClass("setOtherOptionEnumeration: osresult objects falsely compare equal!");
03419 ok &= osresult2->setOtherOptionEnumeration(i,2,ENUM_PROBLEM_COMPONENT_variables,k,"value","description",intArray,3);
03420 if (!ok)
03421 throw ErrorClass("Error during setOtherOptionEnumeration!");
03422 ok &= (osresult1->IsEqual(osresult2));
03423 if (!ok)
03424 throw ErrorClass("setOtherOptionEnumeration: osresult objects falsely compare unequal!");
03425 }
03426
03427
03428
03429
03430
03431 ok &= osresult1->setNumberOfObjValues(i,2);
03432 if (!ok)
03433 throw ErrorClass("Error during setNumberOfObjValues!");
03434 ok &= (!osresult1->IsEqual(osresult2));
03435 if (!ok)
03436 throw ErrorClass("setNumberOfObjValues: osresult objects falsely compare equal!");
03437 ok &= osresult2->setNumberOfObjValues(i,2);
03438 if (!ok)
03439 throw ErrorClass("Error during setNumberOfObjValues!");
03440 ok &= (osresult1->IsEqual(osresult2));
03441 if (!ok)
03442 throw ErrorClass("setNumberOfObjValues: osresult objects falsely compare unequal!");
03443
03444 for (int j=0; j < 2; ++j)
03445 {
03446 ok &= osresult1->setObjValue(i,j,-2,3.14);
03447 if (!ok)
03448 throw ErrorClass("Error during setObjValue!");
03449 ok &= (!osresult1->IsEqual(osresult2));
03450 if (!ok)
03451 throw ErrorClass("setObjValue: osresult objects falsely compare equal!");
03452 ok &= osresult2->setObjValue(i,j,-2,3.14);
03453 if (!ok)
03454 throw ErrorClass("Error during setObjValue!");
03455 ok &= (osresult1->IsEqual(osresult2));
03456 if (!ok)
03457 throw ErrorClass("setObjValue: osresult objects falsely compare unequal!");
03458 }
03459 intArray[0] = -1000*i - 1200 - 10 - 1;
03460 intArray[1] = -1000*i - 1200 - 10 - 2;
03461 intArray[2] = -1000*i - 1200 - 10 - 3;
03462
03463
03464 ok &= osresult1->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_objectives, ENUM_BASIS_STATUS_basic, intArray, 3);
03465 if (!ok)
03466 throw ErrorClass("Error during setBasisStatus (objectives basic)!");
03467 ok &= (!osresult1->IsEqual(osresult2));
03468 if (!ok)
03469 throw ErrorClass("setBasisStatus (objectives basic): osresult objects falsely compare equal!");
03470 ok &= osresult2->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_objectives, ENUM_BASIS_STATUS_basic, intArray, 3);
03471 if (!ok)
03472 throw ErrorClass("Error during setBasisStatus (objectives basic)!");
03473 ok &= (osresult1->IsEqual(osresult2));
03474 if (!ok)
03475 throw ErrorClass("setBasisStatus (objectives basic): osresult objects falsely compare unequal!");
03476
03477 intArray[0] = intArray[0] - 10;
03478 intArray[1] = intArray[1] - 10;
03479 intArray[2] = intArray[2] - 10;
03480
03481 ok &= osresult1->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_objectives, ENUM_BASIS_STATUS_atLower, intArray, 3);
03482 if (!ok)
03483 throw ErrorClass("Error during setBasisStatus (objectives atLower)!");
03484 ok &= (!osresult1->IsEqual(osresult2));
03485 if (!ok)
03486 throw ErrorClass("setBasisStatus (objectives atLower): osresult objects falsely compare equal!");
03487 ok &= osresult2->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_objectives, ENUM_BASIS_STATUS_atLower, intArray, 3);
03488 if (!ok)
03489 throw ErrorClass("Error during setBasisStatus (objectives atLower)!");
03490 ok &= (osresult1->IsEqual(osresult2));
03491 if (!ok)
03492 throw ErrorClass("setBasisStatus (objectives atLower): osresult objects falsely compare unequal!");
03493
03494 intArray[0] = intArray[0] - 10;
03495 intArray[1] = intArray[1] - 10;
03496 intArray[2] = intArray[2] - 10;
03497
03498 ok &= osresult1->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_objectives, ENUM_BASIS_STATUS_atUpper, intArray, 3);
03499
03500 if (!ok)
03501 throw ErrorClass("Error during setBasisStatus (objectives atUpper)!");
03502 ok &= (!osresult1->IsEqual(osresult2));
03503 if (!ok)
03504 throw ErrorClass("setBasisStatus (objectives atUpper): osresult objects falsely compare equal!");
03505 ok &= osresult2->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_objectives, ENUM_BASIS_STATUS_atUpper, intArray, 3);
03506 if (!ok)
03507 throw ErrorClass("Error during setBasisStatus (objectives atUpper)!");
03508 ok &= (osresult1->IsEqual(osresult2));
03509 if (!ok)
03510 throw ErrorClass("setBasisStatus (objectives atUpper): osresult objects falsely compare unequal!");
03511
03512
03513 intArray[0] = intArray[0] - 10;
03514 intArray[1] = intArray[1] - 10;
03515 intArray[2] = intArray[2] - 10;
03516
03517 ok &= osresult1->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_objectives, ENUM_BASIS_STATUS_isFree, intArray, 3);
03518 if (!ok)
03519 throw ErrorClass("Error during setBasisStatus (objectives isFree)!");
03520 ok &= (!osresult1->IsEqual(osresult2));
03521 if (!ok)
03522 throw ErrorClass("setBasisStatus (objectives isFree): osresult objects falsely compare equal!");
03523 ok &= osresult2->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_objectives, ENUM_BASIS_STATUS_isFree, intArray, 3);
03524 if (!ok)
03525 throw ErrorClass("Error during setBasisStatus (objectives isFree)!");
03526 ok &= (osresult1->IsEqual(osresult2));
03527 if (!ok)
03528 throw ErrorClass("setBasisStatus (objectives isFree): osresult objects falsely compare unequal!");
03529
03530
03531 intArray[0] = intArray[0] - 10;
03532 intArray[1] = intArray[1] - 10;
03533 intArray[2] = intArray[2] - 10;
03534
03535 ok &= osresult1->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_objectives, ENUM_BASIS_STATUS_superbasic, intArray, 3);
03536 if (!ok)
03537 throw ErrorClass("Error during setBasisStatus (objectives superbasic)!");
03538 ok &= (!osresult1->IsEqual(osresult2));
03539 if (!ok)
03540 throw ErrorClass("setBasisStatus (objectives superbasic): osresult objects falsely compare equal!");
03541 ok &= osresult2->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_objectives, ENUM_BASIS_STATUS_superbasic, intArray, 3);
03542 if (!ok)
03543 throw ErrorClass("Error during setBasisStatus (objectives superbasic)!");
03544 ok &= (osresult1->IsEqual(osresult2));
03545 if (!ok)
03546 throw ErrorClass("setBasisStatus (objectives superbasic): osresult objects falsely compare unequal!");
03547
03548
03549 intArray[0] = intArray[0] - 10;
03550 intArray[1] = intArray[1] - 10;
03551 intArray[2] = intArray[2] - 10;
03552
03553 ok &= osresult1->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_objectives, ENUM_BASIS_STATUS_unknown, intArray, 3);
03554 if (!ok)
03555 throw ErrorClass("Error during setBasisStatus (objectives unknown)!");
03556 ok &= (!osresult1->IsEqual(osresult2));
03557 if (!ok)
03558 throw ErrorClass("setBasisStatus (objectives unknown): osresult objects falsely compare equal!");
03559 ok &= osresult2->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_objectives, ENUM_BASIS_STATUS_unknown, intArray, 3);
03560 if (!ok)
03561 throw ErrorClass("Error during setBasisStatus (objectives unknown)!");
03562 ok &= (osresult1->IsEqual(osresult2));
03563 if (!ok)
03564 throw ErrorClass("setBasisStatus (objectives unknown): osresult objects falsely compare unequal!");
03565
03566
03567
03568 ok &= osresult1->setNumberOfOtherObjectiveResults(i,3);
03569 if (!ok)
03570 throw ErrorClass("Error during setNumberOfOtherObjectiveResults!");
03571 ok &= (!osresult1->IsEqual(osresult2));
03572 if (!ok)
03573 throw ErrorClass("setNumberOfOtherObjectiveResults: osresult objects falsely compare equal!");
03574 ok &= osresult2->setNumberOfOtherObjectiveResults(i,3);
03575 if (!ok)
03576 throw ErrorClass("Error during setNumberOfOtherObjectiveResults!");
03577 ok &= (osresult1->IsEqual(osresult2));
03578 if (!ok)
03579 throw ErrorClass("setNumberOfOtherObjectiveResults: osresult objects falsely compare unequal!");
03580
03581 for (int j=0; j < 2; ++j)
03582 {
03583 ok &= osresult1->setOtherObjectiveResultName(i,j,"other");
03584 if (!ok)
03585 throw ErrorClass("Error during setOtherObjectiveResultName!");
03586 ok &= (!osresult1->IsEqual(osresult2));
03587 if (!ok)
03588 throw ErrorClass("setOtherObjectiveResultName: osresult objects falsely compare equal!");
03589 ok &= osresult2->setOtherObjectiveResultName(i,j,"other");
03590 if (!ok)
03591 throw ErrorClass("Error during setOtherObjectiveResultName!");
03592 ok &= (osresult1->IsEqual(osresult2));
03593 if (!ok)
03594 throw ErrorClass("setOtherObjectiveResultName: osresult objects falsely compare unequal!");
03595
03596 ok &= osresult1->setOtherObjectiveResultDescription(i,j,"other");
03597 if (!ok)
03598 throw ErrorClass("Error during setOtherObjectiveResultDescription!");
03599 ok &= (!osresult1->IsEqual(osresult2));
03600 if (!ok)
03601 throw ErrorClass("setOtherObjectiveResultDescription: osresult objects falsely compare equal!");
03602 ok &= osresult2->setOtherObjectiveResultDescription(i,j,"other");
03603 if (!ok)
03604 throw ErrorClass("Error during setOtherObjectiveResultDescription!");
03605 ok &= (osresult1->IsEqual(osresult2));
03606 if (!ok)
03607 throw ErrorClass("setOtherObjectiveResultDescription: osresult objects falsely compare unequal!");
03608
03609 ok &= osresult1->setOtherObjectiveResultValue(i,j,"other");
03610 if (!ok)
03611 throw ErrorClass("Error during setOtherObjectiveResultValue!");
03612 ok &= (!osresult1->IsEqual(osresult2));
03613 if (!ok)
03614 throw ErrorClass("setOtherObjectiveResultValue: osresult objects falsely compare equal!");
03615 ok &= osresult2->setOtherObjectiveResultValue(i,j,"other");
03616 if (!ok)
03617 throw ErrorClass("Error during setOtherObjectiveResultValue!");
03618 ok &= (osresult1->IsEqual(osresult2));
03619 if (!ok)
03620 throw ErrorClass("setOtherObjectiveResultValue: osresult objects falsely compare unequal!");
03621
03622 ok &= osresult1->setOtherObjectiveResultNumberOfObj(i,j,2);
03623 if (!ok)
03624 throw ErrorClass("Error during setOtherObjectiveResultNumberOfObj!");
03625 ok &= (!osresult1->IsEqual(osresult2));
03626 if (!ok)
03627 throw ErrorClass("setOtherObjectiveResultNumberOfObj: osresult objects falsely compare equal!");
03628 ok &= osresult2->setOtherObjectiveResultNumberOfObj(i,j,2);
03629 if (!ok)
03630 throw ErrorClass("Error during setOtherObjectiveResultNumberOfObj!");
03631 ok &= (osresult1->IsEqual(osresult2));
03632 if (!ok)
03633 throw ErrorClass("setOtherObjectiveResultNumberOfObj: osresult objects falsely compare unequal!");
03634
03635 for (int k=0; k < 2; ++k)
03636 {
03637 ok &= osresult1->setOtherObjectiveResultObjIdx(i,j,k,-2);
03638 if (!ok)
03639 throw ErrorClass("Error during setOtherObjectiveResultObjIdx!");
03640 ok &= (!osresult1->IsEqual(osresult2));
03641 if (!ok)
03642 throw ErrorClass("setOtherObjectiveResultObjIdx: osresult objects falsely compare equal!");
03643 ok &= osresult2->setOtherObjectiveResultObjIdx(i,j,k,-2);
03644 if (!ok)
03645 throw ErrorClass("Error during setOtherObjectiveResultObjIdx!");
03646 ok &= (osresult1->IsEqual(osresult2));
03647 if (!ok)
03648 throw ErrorClass("setOtherObjectiveResultObjIdx: osresult objects falsely compare unequal!");
03649
03650 ok &= osresult1->setOtherObjectiveResultObj(i,j,k,"value");
03651 if (!ok)
03652 throw ErrorClass("Error during setOtherObjectiveResultObj!");
03653 ok &= (!osresult1->IsEqual(osresult2));
03654 if (!ok)
03655 throw ErrorClass("setOtherObjectiveResultObj: osresult objects falsely compare equal!");
03656 ok &= osresult2->setOtherObjectiveResultObj(i,j,k,"value");
03657 if (!ok)
03658 throw ErrorClass("Error during setOtherObjectiveResultObj!");
03659 ok &= (osresult1->IsEqual(osresult2));
03660 if (!ok)
03661 throw ErrorClass("setOtherObjectiveResultObj: osresult objects falsely compare unequal!");
03662 }
03663 }
03664
03665
03666 ok &= osresult1->setOtherObjectiveResultName(i,2,"other");
03667 if (!ok)
03668 throw ErrorClass("Error during setOtherObjectiveResultName!");
03669 ok &= (!osresult1->IsEqual(osresult2));
03670 if (!ok)
03671 throw ErrorClass("setOtherObjectiveResultName: osresult objects falsely compare equal!");
03672 ok &= osresult2->setOtherObjectiveResultName(i,2,"other");
03673 if (!ok)
03674 throw ErrorClass("Error during setOtherObjectiveResultName!");
03675 ok &= (osresult1->IsEqual(osresult2));
03676 if (!ok)
03677 throw ErrorClass("setOtherObjectiveResultName: osresult objects falsely compare unequal!");
03678
03679 ok &= osresult1->setOtherObjectiveResultDescription(i,2,"other");
03680 if (!ok)
03681 throw ErrorClass("Error during setOtherObjectiveResultDescription!");
03682 ok &= (!osresult1->IsEqual(osresult2));
03683 if (!ok)
03684 throw ErrorClass("setOtherObjectiveResultDescription: osresult objects falsely compare equal!");
03685 ok &= osresult2->setOtherObjectiveResultDescription(i,2,"other");
03686 if (!ok)
03687 throw ErrorClass("Error during setOtherObjectiveResultDescription!");
03688 ok &= (osresult1->IsEqual(osresult2));
03689 if (!ok)
03690 throw ErrorClass("setOtherObjectiveResultDescription: osresult objects falsely compare unequal!");
03691
03692 ok &= osresult1->setOtherObjectiveResultValue(i,2,"other");
03693 if (!ok)
03694 throw ErrorClass("Error during setOtherObjectiveResultValue!");
03695 ok &= (!osresult1->IsEqual(osresult2));
03696 if (!ok)
03697 throw ErrorClass("setOtherObjectiveResultValue: osresult objects falsely compare equal!");
03698 ok &= osresult2->setOtherObjectiveResultValue(i,2,"other");
03699 if (!ok)
03700 throw ErrorClass("Error during setOtherObjectiveResultValue!");
03701 ok &= (osresult1->IsEqual(osresult2));
03702 if (!ok)
03703 throw ErrorClass("setOtherObjectiveResultValue: osresult objects falsely compare unequal!");
03704
03705 ok &= osresult1->setOtherObjectiveResultNumberOfEnumerations(i,2,2);
03706 if (!ok)
03707 throw ErrorClass("Error during setOtherObjectiveResultNumberOfEnumerations!");
03708 ok &= (!osresult1->IsEqual(osresult2));
03709 if (!ok)
03710 throw ErrorClass("setOtherObjectiveResultNumberOfEnumerations: osresult objects falsely compare equal!");
03711 ok &= osresult2->setOtherObjectiveResultNumberOfEnumerations(i,2,2);
03712 if (!ok)
03713 throw ErrorClass("Error during setOtherObjectiveResultNumberOfEnumerations!");
03714 ok &= (osresult1->IsEqual(osresult2));
03715 if (!ok)
03716 throw ErrorClass("setOtherObjectiveResultNumberOfEnumerations: osresult objects falsely compare unequal!");
03717
03718 for (int k=0; k < 2; ++k)
03719 {
03720
03721 intArray[0] = -(1000*i + 1230 + 10*k + 1);
03722 intArray[1] = -(1000*i + 1230 + 10*k + 2);
03723 intArray[2] = -(1000*i + 1230 + 10*k + 3);
03724
03725 ok &= osresult1->setOtherOptionEnumeration(i,2,ENUM_PROBLEM_COMPONENT_objectives,k,"value","description",intArray,3);
03726 if (!ok)
03727 throw ErrorClass("Error during setOtherOptionEnumeration (objective)!");
03728 ok &= (!osresult1->IsEqual(osresult2));
03729 if (!ok)
03730 throw ErrorClass("setOtherOptionEnumeration: osresult objects falsely compare equal!");
03731 ok &= osresult2->setOtherOptionEnumeration(i,2,ENUM_PROBLEM_COMPONENT_objectives,k,"value","description",intArray,3);
03732 if (!ok)
03733 throw ErrorClass("Error during setOtherOptionEnumeration (objective)!");
03734 ok &= (osresult1->IsEqual(osresult2));
03735 if (!ok)
03736 throw ErrorClass("setOtherOptionEnumeration: osresult objects falsely compare unequal!");
03737 }
03738
03739
03740
03741 ok &= osresult1->setNumberOfDualValues(i,3);
03742 if (!ok)
03743 throw ErrorClass("Error during setNumberOfDualValues!");
03744 ok &= (!osresult1->IsEqual(osresult2));
03745 if (!ok)
03746 throw ErrorClass("setNumberOfDualValues: osresult objects falsely compare equal!");
03747 ok &= osresult2->setNumberOfDualValues(i,3);
03748 if (!ok)
03749 throw ErrorClass("Error during setNumberOfDualValues!");
03750 ok &= (osresult1->IsEqual(osresult2));
03751 if (!ok)
03752 throw ErrorClass("setNumberOfDualValues: osresult objects falsely compare unequal!");
03753
03754 for (int j=0; j < 3; ++j)
03755 {
03756 ok &= osresult1->setDualValue(i,j,j,3.14);
03757 if (!ok)
03758 throw ErrorClass("Error during setDualValue!");
03759 ok &= (!osresult1->IsEqual(osresult2));
03760 if (!ok)
03761 throw ErrorClass("setDualValue: osresult objects falsely compare equal!");
03762 ok &= osresult2->setDualValue(i,j,j,3.14);
03763 if (!ok)
03764 throw ErrorClass("Error during setDualValue!");
03765 ok &= (osresult1->IsEqual(osresult2));
03766 if (!ok)
03767 throw ErrorClass("setDualValue: osresult objects falsely compare unequal!");
03768 }
03769
03770
03771
03772 intArray[0] = 1000*i + 1300 + 10 + 1;
03773 intArray[1] = 1000*i + 1300 + 10 + 2;
03774 intArray[2] = 1000*i + 1300 + 10 + 3;
03775
03776 ok &= osresult1->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_constraints, ENUM_BASIS_STATUS_basic, intArray, 3);
03777 if (!ok)
03778 throw ErrorClass("Error during setBasisStatus (constraints basic)!");
03779 ok &= (!osresult1->IsEqual(osresult2));
03780 if (!ok)
03781 throw ErrorClass("setBasisStatus (constraints basic): osresult objects falsely compare equal!");
03782 ok &= osresult2->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_constraints, ENUM_BASIS_STATUS_basic, intArray, 3);
03783 if (!ok)
03784 throw ErrorClass("Error during setBasisStatus (constraints basic)!");
03785 ok &= (osresult1->IsEqual(osresult2));
03786 if (!ok)
03787 throw ErrorClass("setBasisStatus (constraints basic): osresult objects falsely compare unequal!");
03788
03789 intArray[0] = intArray[0] + 10;
03790 intArray[1] = intArray[1] + 10;
03791 intArray[2] = intArray[2] + 10;
03792
03793 ok &= osresult1->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_constraints, ENUM_BASIS_STATUS_atLower, intArray, 3);
03794 if (!ok)
03795 throw ErrorClass("Error during setBasisStatus (constraints atLower)!");
03796 ok &= (!osresult1->IsEqual(osresult2));
03797 if (!ok)
03798 throw ErrorClass("setBasisStatus (constraints atLower): osresult objects falsely compare equal!");
03799 ok &= osresult2->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_constraints, ENUM_BASIS_STATUS_atLower, intArray, 3);
03800 if (!ok)
03801 throw ErrorClass("Error during setBasisStatus (constraints atLower)!");
03802 ok &= (osresult1->IsEqual(osresult2));
03803 if (!ok)
03804 throw ErrorClass("setBasisStatus (constraints atLower): osresult objects falsely compare unequal!");
03805
03806 intArray[0] = intArray[0] + 10;
03807 intArray[1] = intArray[1] + 10;
03808 intArray[2] = intArray[2] + 10;
03809
03810
03811 ok &= osresult1->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_constraints, ENUM_BASIS_STATUS_atUpper, intArray, 3);
03812 if (!ok)
03813 throw ErrorClass("Error during setBasisStatus (constraints atUpper)!");
03814 ok &= (!osresult1->IsEqual(osresult2));
03815 if (!ok)
03816 throw ErrorClass("setBasisStatus (constraints atUpper): osresult objects falsely compare equal!");
03817 ok &= osresult2->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_constraints, ENUM_BASIS_STATUS_atUpper, intArray, 3);
03818 if (!ok)
03819 throw ErrorClass("Error during setBasisStatus (constraints atUpper)!");
03820 ok &= (osresult1->IsEqual(osresult2));
03821 if (!ok)
03822 throw ErrorClass("setBasisStatus (constraints atUpper): osresult objects falsely compare unequal!");
03823
03824
03825 intArray[0] = intArray[0] + 10;
03826 intArray[1] = intArray[1] + 10;
03827 intArray[2] = intArray[2] + 10;
03828
03829 ok &= osresult1->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_constraints, ENUM_BASIS_STATUS_isFree, intArray, 3);
03830 if (!ok)
03831 throw ErrorClass("Error during setBasisStatus (constraints isFree)!");
03832 ok &= (!osresult1->IsEqual(osresult2));
03833 if (!ok)
03834 throw ErrorClass("setBasisStatus (constraints isFree): osresult objects falsely compare equal!");
03835 ok &= osresult2->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_constraints, ENUM_BASIS_STATUS_isFree, intArray, 3);
03836 if (!ok)
03837 throw ErrorClass("Error during setBasisStatus (constraints isFree)!");
03838 ok &= (osresult1->IsEqual(osresult2));
03839 if (!ok)
03840 throw ErrorClass("setBasisStatus (constraints isFree): osresult objects falsely compare unequal!");
03841
03842
03843 intArray[0] = intArray[0] + 10;
03844 intArray[1] = intArray[1] + 10;
03845 intArray[2] = intArray[2] + 10;
03846
03847 ok &= osresult1->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_constraints, ENUM_BASIS_STATUS_superbasic, intArray, 3);
03848 if (!ok)
03849 throw ErrorClass("Error during setBasisStatus (constraints superbasic)!");
03850 ok &= (!osresult1->IsEqual(osresult2));
03851 if (!ok)
03852 throw ErrorClass("setBasisStatus (constraints superbasic): osresult objects falsely compare equal!");
03853 ok &= osresult2->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_constraints, ENUM_BASIS_STATUS_superbasic, intArray, 3);
03854 if (!ok)
03855 throw ErrorClass("Error during setBasisStatus (constraints superbasic)!");
03856 ok &= (osresult1->IsEqual(osresult2));
03857 if (!ok)
03858 throw ErrorClass("setBasisStatus (constraints superbasic): osresult objects falsely compare unequal!");
03859
03860 intArray[0] = intArray[0] + 10;
03861 intArray[1] = intArray[1] + 10;
03862 intArray[2] = intArray[2] + 10;
03863
03864
03865 ok &= osresult1->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_constraints, ENUM_BASIS_STATUS_unknown, intArray, 3);
03866 if (!ok)
03867 throw ErrorClass("Error during setBasisStatus (constraints unknown)!");
03868 ok &= (!osresult1->IsEqual(osresult2));
03869 if (!ok)
03870 throw ErrorClass("setBasisStatus (constraints unknown): osresult objects falsely compare equal!");
03871 ok &= osresult2->setBasisStatus(i, ENUM_PROBLEM_COMPONENT_constraints, ENUM_BASIS_STATUS_unknown, intArray, 3);
03872 if (!ok)
03873 throw ErrorClass("Error during setBasisStatus (constraints unknown)!");
03874 ok &= (osresult1->IsEqual(osresult2));
03875 if (!ok)
03876 throw ErrorClass("setBasisStatus (constraints unknown): osresult objects falsely compare unequal!");
03877
03878 ok &= osresult1->setNumberOfOtherConstraintResults(i,3);
03879 if (!ok)
03880 throw ErrorClass("Error during setNumberOfOtherConstraintResults!");
03881 ok &= (!osresult1->IsEqual(osresult2));
03882 if (!ok)
03883 throw ErrorClass("setNumberOfOtherConstraintResults: osresult objects falsely compare equal!");
03884 ok &= osresult2->setNumberOfOtherConstraintResults(i,3);
03885 if (!ok)
03886 throw ErrorClass("Error during setNumberOfOtherConstraintResults!");
03887 ok &= (osresult1->IsEqual(osresult2));
03888 if (!ok)
03889 throw ErrorClass("setNumberOfOtherConstraintResults: osresult objects falsely compare unequal!");
03890
03891 for (int j=0; j < 2; ++j)
03892 {
03893 ok &= osresult1->setOtherConstraintResultName(i,j,"other");
03894 if (!ok)
03895 throw ErrorClass("Error during setOtherConstraintResultName!");
03896 ok &= (!osresult1->IsEqual(osresult2));
03897 if (!ok)
03898 throw ErrorClass("setOtherConstraintResultName: osresult objects falsely compare equal!");
03899 ok &= osresult2->setOtherConstraintResultName(i,j,"other");
03900 if (!ok)
03901 throw ErrorClass("Error during setOtherConstraintResultName!");
03902 ok &= (osresult1->IsEqual(osresult2));
03903 if (!ok)
03904 throw ErrorClass("setOtherConstraintResultName: osresult objects falsely compare unequal!");
03905
03906 ok &= osresult1->setOtherConstraintResultDescription(i,j,"other");
03907 if (!ok)
03908 throw ErrorClass("Error during setOtherConstraintResultDescription!");
03909 ok &= (!osresult1->IsEqual(osresult2));
03910 if (!ok)
03911 throw ErrorClass("setOtherConstraintResultDescription: osresult objects falsely compare equal!");
03912 ok &= osresult2->setOtherConstraintResultDescription(i,j,"other");
03913 if (!ok)
03914 throw ErrorClass("Error during setOtherConstraintResultDescription!");
03915 ok &= (osresult1->IsEqual(osresult2));
03916 if (!ok)
03917 throw ErrorClass("setOtherConstraintResultDescription: osresult objects falsely compare unequal!");
03918
03919 ok &= osresult1->setOtherConstraintResultValue(i,j,"other");
03920 if (!ok)
03921 throw ErrorClass("Error during setOtherConstraintResultValue!");
03922 ok &= (!osresult1->IsEqual(osresult2));
03923 if (!ok)
03924 throw ErrorClass("setOtherConstraintResultValue: osresult objects falsely compare equal!");
03925 ok &= osresult2->setOtherConstraintResultValue(i,j,"other");
03926 if (!ok)
03927 throw ErrorClass("Error during setOtherConstraintResultValue!");
03928 ok &= (osresult1->IsEqual(osresult2));
03929 if (!ok)
03930 throw ErrorClass("setOtherConstraintResultValue: osresult objects falsely compare unequal!");
03931
03932 ok &= osresult1->setOtherConstraintResultNumberOfCon(i,j,3);
03933 if (!ok)
03934 throw ErrorClass("Error during setOtherConstraintResultNumberOfCon!");
03935 ok &= (!osresult1->IsEqual(osresult2));
03936 if (!ok)
03937 throw ErrorClass("setOtherConstraintResultNumberOfCon: osresult objects falsely compare equal!");
03938 ok &= osresult2->setOtherConstraintResultNumberOfCon(i,j,3);
03939 if (!ok)
03940 throw ErrorClass("Error during setOtherConstraintResultNumberOfCon!");
03941 ok &= (osresult1->IsEqual(osresult2));
03942 if (!ok)
03943 throw ErrorClass("setOtherConstraintResultNumberOfCon: osresult objects falsely compare unequal!");
03944
03945 for (int k=0; k < 3; ++k)
03946 {
03947 ok &= osresult1->setOtherConstraintResultConIdx(i,j,k,k);
03948 if (!ok)
03949 throw ErrorClass("Error during setOtherConstraintResultConIdx!");
03950 ok &= (!osresult1->IsEqual(osresult2));
03951 if (!ok)
03952 throw ErrorClass("setOtherConstraintResultConIdx: osresult objects falsely compare equal!");
03953 ok &= osresult2->setOtherConstraintResultConIdx(i,j,k,k);
03954 if (!ok)
03955 throw ErrorClass("Error during setOtherConstraintResultConIdx!");
03956 ok &= (osresult1->IsEqual(osresult2));
03957 if (!ok)
03958 throw ErrorClass("setOtherConstraintResultConIdx: osresult objects falsely compare unequal!");
03959
03960 ok &= osresult1->setOtherConstraintResultCon(i,j,k,"value");
03961 if (!ok)
03962 throw ErrorClass("Error during setOtherConstraintResultCon!");
03963 ok &= (!osresult1->IsEqual(osresult2));
03964 if (!ok)
03965 throw ErrorClass("setOtherConstraintResultCon: osresult objects falsely compare equal!");
03966 ok &= osresult2->setOtherConstraintResultCon(i,j,k,"value");
03967 if (!ok)
03968 throw ErrorClass("Error during setOtherConstraintResultCon!");
03969 ok &= (osresult1->IsEqual(osresult2));
03970 if (!ok)
03971 throw ErrorClass("setOtherConstraintResultCon: osresult objects falsely compare unequal!");
03972 }
03973 }
03974
03975
03976
03977
03978 ok &= osresult1->setOtherConstraintResultName(i,2,"other");
03979 if (!ok)
03980 throw ErrorClass("Error during setOtherConstraintResultName!");
03981 ok &= (!osresult1->IsEqual(osresult2));
03982 if (!ok)
03983 throw ErrorClass("setOtherConstraintResultName: osresult objects falsely compare equal!");
03984 ok &= osresult2->setOtherConstraintResultName(i,2,"other");
03985 if (!ok)
03986 throw ErrorClass("Error during setOtherConstraintResultName!");
03987 ok &= (osresult1->IsEqual(osresult2));
03988 if (!ok)
03989 throw ErrorClass("setOtherConstraintResultName: osresult objects falsely compare unequal!");
03990
03991 ok &= osresult1->setOtherConstraintResultDescription(i,2,"other");
03992 if (!ok)
03993 throw ErrorClass("Error during setOtherConstraintResultDescription!");
03994 ok &= (!osresult1->IsEqual(osresult2));
03995 if (!ok)
03996 throw ErrorClass("setOtherConstraintResultDescription: osresult objects falsely compare equal!");
03997 ok &= osresult2->setOtherConstraintResultDescription(i,2,"other");
03998 if (!ok)
03999 throw ErrorClass("Error during setOtherConstraintResultDescription!");
04000 ok &= (osresult1->IsEqual(osresult2));
04001 if (!ok)
04002 throw ErrorClass("setOtherConstraintResultDescription: osresult objects falsely compare unequal!");
04003
04004 ok &= osresult1->setOtherConstraintResultValue(i,2,"other");
04005 if (!ok)
04006 throw ErrorClass("Error during setOtherConstraintResultValue!");
04007 ok &= (!osresult1->IsEqual(osresult2));
04008 if (!ok)
04009 throw ErrorClass("setOtherConstraintResultValue: osresult objects falsely compare equal!");
04010 ok &= osresult2->setOtherConstraintResultValue(i,2,"other");
04011 if (!ok)
04012 throw ErrorClass("Error during setOtherConstraintResultValue!");
04013 ok &= (osresult1->IsEqual(osresult2));
04014 if (!ok)
04015 throw ErrorClass("setOtherConstraintResultValue: osresult objects falsely compare unequal!");
04016
04017 ok &= osresult1->setOtherConstraintResultNumberOfEnumerations(i,2,2);
04018 if (!ok)
04019 throw ErrorClass("Error during setOtherConstraintResultNumberOfEnumerations!");
04020 ok &= (!osresult1->IsEqual(osresult2));
04021 if (!ok)
04022 throw ErrorClass("setOtherConstraintResultNumberOfEnumerations: osresult objects falsely compare equal!");
04023 ok &= osresult2->setOtherConstraintResultNumberOfEnumerations(i,2,2);
04024 if (!ok)
04025 throw ErrorClass("Error during setOtherConstraintResultNumberOfEnumerations!");
04026 ok &= (osresult1->IsEqual(osresult2));
04027 if (!ok)
04028 throw ErrorClass("setOtherConstraintResultNumberOfEnumerations: osresult objects falsely compare unequal!");
04029
04030 for (int k=0; k < 2; ++k)
04031 {
04032 intArray[0] = 1000*i + 1330 + 10*k + 1;
04033 intArray[1] = 1000*i + 1330 + 10*k + 2;
04034 intArray[2] = 1000*i + 1330 + 10*k + 3;
04035
04036 ok &= osresult1->setOtherOptionEnumeration(i,2,ENUM_PROBLEM_COMPONENT_constraints,k,"value","description",intArray,3);
04037 if (!ok)
04038 throw ErrorClass("Error during setOtherOptionEnumeration (constraint)!");
04039 ok &= (!osresult1->IsEqual(osresult2));
04040 if (!ok)
04041 throw ErrorClass("setOtherOptionEnumeration: osresult objects falsely compare equal!");
04042 ok &= osresult2->setOtherOptionEnumeration(i,2,ENUM_PROBLEM_COMPONENT_constraints,k,"value","description",intArray,3);
04043 if (!ok)
04044 throw ErrorClass("Error during setOtherOptionEnumeration (constraint)!");
04045 ok &= (osresult1->IsEqual(osresult2));
04046 if (!ok)
04047 throw ErrorClass("setOtherOptionEnumeration: osresult objects falsely compare unequal!");
04048 }
04049
04050
04051
04052
04053 ok &= osresult1->setNumberOfOtherSolutionResults(i,3);
04054 if (!ok)
04055 throw ErrorClass("Error during setNumberOfOtherSolutionResults!");
04056 ok &= (!osresult1->IsEqual(osresult2));
04057 if (!ok)
04058 throw ErrorClass("setNumberOfOtherSolutionResults: osresult objects falsely compare equal!");
04059 ok &= osresult2->setNumberOfOtherSolutionResults(i,3);
04060 if (!ok)
04061 throw ErrorClass("Error during setNumberOfOtherSolutionResults!");
04062 ok &= (osresult1->IsEqual(osresult2));
04063 if (!ok)
04064 throw ErrorClass("setNumberOfOtherSolutionResults: osresult objects falsely compare unequal!");
04065
04066 for (int j=0; j < 3; ++j)
04067 {
04068 ok &= osresult1->setOtherSolutionResultName(i,j,"other");
04069 if (!ok)
04070 throw ErrorClass("Error during setOtherSolutionResultName!");
04071 ok &= (!osresult1->IsEqual(osresult2));
04072 if (!ok)
04073 throw ErrorClass("setOtherSolutionResultName: osresult objects falsely compare equal!");
04074 ok &= osresult2->setOtherSolutionResultName(i,j,"other");
04075 if (!ok)
04076 throw ErrorClass("Error during setOtherSolutionResultName!");
04077 ok &= (osresult1->IsEqual(osresult2));
04078 if (!ok)
04079 throw ErrorClass("setOtherSolutionResultName: osresult objects falsely compare unequal!");
04080
04081 ok &= osresult1->setOtherSolutionResultCategory(i,j,"other");
04082 if (!ok)
04083 throw ErrorClass("Error during setOtherSolutionResultCategory!");
04084 ok &= (!osresult1->IsEqual(osresult2));
04085 if (!ok)
04086 throw ErrorClass("setOtherSolutionResultCategory: osresult objects falsely compare equal!");
04087 ok &= osresult2->setOtherSolutionResultCategory(i,j,"other");
04088 if (!ok)
04089 throw ErrorClass("Error during setOtherSolutionResultCategory!");
04090 ok &= (osresult1->IsEqual(osresult2));
04091 if (!ok)
04092 throw ErrorClass("setOtherSolutionResultCategory: osresult objects falsely compare unequal!");
04093
04094 ok &= osresult1->setOtherSolutionResultDescription(i,j,"other");
04095 if (!ok)
04096 throw ErrorClass("Error during setOtherSolutionResultDescription!");
04097 ok &= (!osresult1->IsEqual(osresult2));
04098 if (!ok)
04099 throw ErrorClass("setOtherSolutionResultDescription: osresult objects falsely compare equal!");
04100 ok &= osresult2->setOtherSolutionResultDescription(i,j,"other");
04101 if (!ok)
04102 throw ErrorClass("Error during setOtherSolutionResultDescription!");
04103 ok &= (osresult1->IsEqual(osresult2));
04104 if (!ok)
04105 throw ErrorClass("setOtherSolutionResultDescription: osresult objects falsely compare unequal!");
04106
04107 ok &= osresult1->setOtherSolutionResultNumberOfItems(i,j,3);
04108 if (!ok)
04109 throw ErrorClass("Error during setOtherSolutionResultNumberOfItems!");
04110 ok &= (!osresult1->IsEqual(osresult2));
04111 if (!ok)
04112 throw ErrorClass("setOtherSolutionResultNumberOfItems: osresult objects falsely compare equal!");
04113 ok &= osresult2->setOtherSolutionResultNumberOfItems(i,j,3);
04114 if (!ok)
04115 throw ErrorClass("Error during setOtherSolutionResultNumberOfItems!");
04116 ok &= (osresult1->IsEqual(osresult2));
04117 if (!ok)
04118 throw ErrorClass("setOtherSolutionResultNumberOfItems: osresult objects falsely compare unequal!");
04119
04120 for (int k=0; k < 3; ++k)
04121 {
04122 ok &= osresult1->setOtherSolutionResultItem(i,j,k,"blabla");
04123 if (!ok)
04124 throw ErrorClass("Error during setOtherSolutionResultItem!");
04125 ok &= (!osresult1->IsEqual(osresult2));
04126 if (!ok)
04127 throw ErrorClass("setOtherSolutionResultItem: osresult objects falsely compare equal!");
04128 ok &= osresult2->setOtherSolutionResultItem(i,j,k,"blabla");
04129 if (!ok)
04130 throw ErrorClass("Error during setOtherSolutionResultItem!");
04131 ok &= (osresult1->IsEqual(osresult2));
04132 if (!ok)
04133 throw ErrorClass("setOtherSolutionResultItem: osresult objects falsely compare unequal!");
04134 }
04135 }
04136 }
04137
04138 ok &= osresult1->setNumberOfSolverOutputs(3);
04139 if (!ok)
04140 throw ErrorClass("Error during setNumberOfSolverOutputs!");
04141 ok &= (!osresult1->IsEqual(osresult2));
04142 if (!ok)
04143 throw ErrorClass("setNumberOfSolverOutputs: osresult objects falsely compare equal!");
04144 ok &= osresult2->setNumberOfSolverOutputs(3);
04145 if (!ok)
04146 throw ErrorClass("Error during setNumberOfSolverOutputs!");
04147 ok &= (osresult1->IsEqual(osresult2));
04148 if (!ok)
04149 throw ErrorClass("setNumberOfSolverOutputs: osresult objects falsely compare unequal!");
04150
04151 for (int i=0; i < 3; ++i)
04152 {
04153 ok &= osresult1->setSolverOutputName(i,"some name");
04154 if (!ok)
04155 throw ErrorClass("Error during setSolverOutputName!");
04156 ok &= (!osresult1->IsEqual(osresult2));
04157 if (!ok)
04158 throw ErrorClass("setSolverOutputName: osresult objects falsely compare equal!");
04159 ok &= osresult2->setSolverOutputName(i,"some name");
04160 if (!ok)
04161 throw ErrorClass("Error during setSolverOutputName!");
04162 ok &= (osresult1->IsEqual(osresult2));
04163 if (!ok)
04164 throw ErrorClass("setSolverOutputName: osresult objects falsely compare unequal!");
04165
04166 ok &= osresult1->setSolverOutputCategory(i,"some name");
04167 if (!ok)
04168 throw ErrorClass("Error during setSolverOutputCategory!");
04169 ok &= (!osresult1->IsEqual(osresult2));
04170 if (!ok)
04171 throw ErrorClass("setSolverOutputCategory: osresult objects falsely compare equal!");
04172 ok &= osresult2->setSolverOutputCategory(i,"some name");
04173 if (!ok)
04174 throw ErrorClass("Error during setSolverOutputCategory!");
04175 ok &= (osresult1->IsEqual(osresult2));
04176 if (!ok)
04177 throw ErrorClass("setSolverOutputCategory: osresult objects falsely compare unequal!");
04178
04179 ok &= osresult1->setSolverOutputDescription(i,"some name");
04180 if (!ok)
04181 throw ErrorClass("Error during setSolverOutputDescription!");
04182 ok &= (!osresult1->IsEqual(osresult2));
04183 if (!ok)
04184 throw ErrorClass("setSolverOutputDescription: osresult objects falsely compare equal!");
04185 ok &= osresult2->setSolverOutputDescription(i,"some name");
04186 if (!ok)
04187 throw ErrorClass("Error during setSolverOutputDescription!");
04188 ok &= (osresult1->IsEqual(osresult2));
04189 if (!ok)
04190 throw ErrorClass("setSolverOutputDescription: osresult objects falsely compare unequal!");
04191
04192 ok &= osresult1->setSolverOutputNumberOfItems(i,3);
04193 if (!ok)
04194 throw ErrorClass("Error during setSolverOutputNumberOfItems!");
04195 ok &= (!osresult1->IsEqual(osresult2));
04196 if (!ok)
04197 throw ErrorClass("setSolverOutputNumberOfItems: osresult objects falsely compare equal!");
04198 ok &= osresult2->setSolverOutputNumberOfItems(i,3);
04199 if (!ok)
04200 throw ErrorClass("Error during setSolverOutputNumberOfItems!");
04201 ok &= (osresult1->IsEqual(osresult2));
04202 if (!ok)
04203 throw ErrorClass("setSolverOutputNumberOfItems: osresult objects falsely compare unequal!");
04204
04205 for (int j=0; j < 3; ++j)
04206 {
04207 ok &= osresult1->setSolverOutputItem(i,j,"other");
04208 if (!ok)
04209 throw ErrorClass("Error during setSolverOutputItem!");
04210 ok &= (!osresult1->IsEqual(osresult2));
04211 if (!ok)
04212 throw ErrorClass("setSolverOutputItem: osresult objects falsely compare equal!");
04213 ok &= osresult2->setSolverOutputItem(i,j,"other");
04214 if (!ok)
04215 throw ErrorClass("Error during setSolverOutputItem!");
04216 ok &= (osresult1->IsEqual(osresult2));
04217 if (!ok)
04218 throw ErrorClass("setSolverOutputItem: osresult objects falsely compare unequal!");
04219 }
04220 }
04221
04222 if (!ok)
04223 throw ErrorClass("Unspecified error while testing set() methods");
04224
04225 unitTestResult << "TEST " << nOfTest << ": Successful test of OSrL set() tools" << std::endl;
04226 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
04227
04228 cout << endl << "TEST " << ++nOfTest << ": OSrLWriter and OSrLReader " << endl << endl;
04229
04230
04231 osrlwriter = new OSrLWriter();
04232 osrlreader = new OSrLReader();
04233 std::string tempOSrL;
04234
04235 tempOSrL = osrlwriter->writeOSrL( osresult1);
04236
04237 std::cout << "Here is the temporary OSrL string produced from OSrLWriter" << std::endl << tempOSrL << std::endl;
04238
04239 osresult3 = osrlreader->readOSrL( tempOSrL);
04240
04241 tempOSrL = osrlwriter->writeOSrL( osresult3);
04242
04243 std::cout << "Here is the temporary OSrL string produced from OSrLReader" << std::endl << tempOSrL << std::endl;
04244
04245
04246 ok &= (osresult1->IsEqual(osresult3));
04247 if (!ok)
04248 throw ErrorClass("Writing an osresult then reading leads to loss of data");
04249
04250 unitTestResult << "TEST " << nOfTest << ": Successful test of OSrLWriter and OSrLReader" << std::endl;
04251 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
04252
04258 cout << endl << "TEST " << ++nOfTest << ": OSrL get() methods" << endl << endl;
04259
04260
04261 if (osresult2 != NULL) delete osresult2;
04262 osresult2 = new OSResult();
04263
04264 std::string tempStr;
04265 double tempDbl;
04266 int tempInt;
04267
04268 tempStr = osresult1->getGeneralStatusType();
04269 ok &= osresult2->setGeneralStatusType(tempStr);
04270 if (!ok)
04271 throw ErrorClass("Error during setGeneralStatusType!");
04272 tempStr = osresult1->getGeneralStatusDescription();
04273 ok &= osresult2->setGeneralStatusDescription(tempStr);
04274 if (!ok)
04275 throw ErrorClass("Error during setGeneralStatusDescription!");
04276
04277 tempInt = osresult1->getNumberOfGeneralSubstatuses();
04278 ok &= osresult2->setNumberOfGeneralSubstatuses(tempInt);
04279 if (!ok)
04280 throw ErrorClass("Error during setNumberOfGeneralSubstatuses!");
04281 for (int i=0; i < tempInt; i++)
04282 {
04283 tempStr = osresult1->getGeneralSubstatusName(i);
04284 ok &= osresult2->setGeneralSubstatusName(i,tempStr);
04285 if (!ok)
04286 throw ErrorClass("Error during setGeneralSubstatusName!");
04287 tempStr = osresult1->getGeneralSubstatusDescription(i);
04288 ok &= osresult2->setGeneralSubstatusDescription(i,tempStr);
04289 if (!ok)
04290 throw ErrorClass("Error during setGeneralSubstatusDescription!");
04291 }
04292
04293 tempStr = osresult1->getGeneralMessage();
04294 ok &= osresult2->setGeneralMessage(tempStr);
04295 if (!ok)
04296 throw ErrorClass("Error during setGeneralMessage!");
04297 tempStr = osresult1->getServiceURI();
04298 ok &= osresult2->setServiceURI(tempStr);
04299 if (!ok)
04300 throw ErrorClass("Error during setServiceURI!");
04301 tempStr = osresult1->getServiceName();
04302 ok &= osresult2->setServiceName(tempStr);
04303 if (!ok)
04304 throw ErrorClass("Error during setServiceName!");
04305 tempStr = osresult1->getInstanceName();
04306 ok &= osresult2->setInstanceName(tempStr);
04307 if (!ok)
04308 throw ErrorClass("Error during setInstanceName!");
04309 tempStr = osresult1->getJobID();
04310 ok &= osresult2->setJobID(tempStr);
04311 if (!ok)
04312 throw ErrorClass("Error during setJobID!");
04313 tempStr = osresult1->getSolverInvoked();
04314 ok &= osresult2->setSolverInvoked(tempStr);
04315 if (!ok)
04316 throw ErrorClass("Error during setSolverInvoked!");
04317 tempStr = osresult1->getTimeStamp();
04318 ok &= osresult2->setTimeStamp(tempStr);
04319 if (!ok)
04320 throw ErrorClass("Error during setTimeStamp!");
04321
04322 tempInt = osresult1->getNumberOfOtherGeneralResults();
04323 ok &= osresult2->setNumberOfOtherGeneralResults(tempInt);
04324 if (!ok)
04325 throw ErrorClass("Error during setNumberOfOtherGeneralResults!");
04326 for (int i=0; i < tempInt; i++)
04327 {
04328 tempStr = osresult1->getOtherGeneralResultName(i);
04329 ok &= osresult2->setOtherGeneralResultName(i,tempStr);
04330 if (!ok)
04331 throw ErrorClass("Error during setOtherGeneralResultName!");
04332 tempStr = osresult1->getOtherGeneralResultValue(i);
04333 ok &= osresult2->setOtherGeneralResultValue(i,tempStr);
04334 if (!ok)
04335 throw ErrorClass("Error during setOtherGeneralResultValue!");
04336 tempStr = osresult1->getOtherGeneralResultDescription(i);
04337 ok &= osresult2->setOtherGeneralResultDescription(i,tempStr);
04338 if (!ok)
04339 throw ErrorClass("Error during setOtherGeneralResultDescription!");
04340 }
04341
04342 tempStr = osresult1->getSystemInformation();
04343 ok &= osresult2->setSystemInformation(tempStr);
04344 if (!ok)
04345 throw ErrorClass("Error during setSystemInformation!");
04346 tempStr = osresult1->getAvailableDiskSpaceUnit();
04347 ok &= osresult2->setAvailableDiskSpaceUnit(tempStr);
04348 if (!ok)
04349 throw ErrorClass("Error during setAvailableDiskSpaceUnit!");
04350 tempStr = osresult1->getAvailableDiskSpaceDescription();
04351 ok &= osresult2->setAvailableDiskSpaceDescription(tempStr);
04352 if (!ok)
04353 throw ErrorClass("Error during setAvailableDiskSpaceDescription!");
04354 tempDbl = osresult1->getAvailableDiskSpaceValue();
04355 ok &= osresult2->setAvailableDiskSpaceValue(tempDbl);
04356 if (!ok)
04357 throw ErrorClass("Error during setAvailableDiskSpaceValue!");
04358 tempStr = osresult1->getAvailableMemoryUnit();
04359 ok &= osresult2->setAvailableMemoryUnit(tempStr);
04360 if (!ok)
04361 throw ErrorClass("Error during setAvailableMemoryUnit!");
04362 tempStr = osresult1->getAvailableMemoryDescription();
04363 ok &= osresult2->setAvailableMemoryDescription(tempStr);
04364 if (!ok)
04365 throw ErrorClass("Error during setAvailableMemoryDescription!");
04366 tempDbl = osresult1->getAvailableMemoryValue();
04367 ok &= osresult2->setAvailableMemoryValue(tempDbl);
04368 if (!ok)
04369 throw ErrorClass("Error during setAvailableMemoryValue!");
04370 tempStr = osresult1->getAvailableCPUSpeedUnit();
04371 ok &= osresult2->setAvailableCPUSpeedUnit(tempStr);
04372 if (!ok)
04373 throw ErrorClass("Error during setAvailableCPUSpeedUnit!");
04374 tempStr = osresult1->getAvailableCPUSpeedDescription();
04375 ok &= osresult2->setAvailableCPUSpeedDescription(tempStr);
04376 if (!ok)
04377 throw ErrorClass("Error during setAvailableCPUSpeedDescription!");
04378 tempDbl = osresult1->getAvailableCPUSpeedValue();
04379 ok &= osresult2->setAvailableCPUSpeedValue(tempDbl);
04380 if (!ok)
04381 throw ErrorClass("Error during setAvailableCPUSpeedValue!");
04382 tempStr = osresult1->getAvailableCPUNumberDescription();
04383 ok &= osresult2->setAvailableCPUNumberDescription(tempStr);
04384 if (!ok)
04385 throw ErrorClass("Error during setAvailableCPUNumberDescription!");
04386 tempInt = osresult1->getAvailableCPUNumberValue();
04387 ok &= osresult2->setAvailableCPUNumberValue(tempInt);
04388 if (!ok)
04389 throw ErrorClass("Error during setAvailableCPUNumberValue!");
04390
04391 tempInt = osresult1->getNumberOfOtherSystemResults();
04392 ok &= osresult2->setNumberOfOtherSystemResults(tempInt);
04393 if (!ok)
04394 throw ErrorClass("Error during setNumberOfOtherSystemResults!");
04395 for (int i=0; i < tempInt; i++)
04396 {
04397 tempStr = osresult1->getOtherSystemResultName(i);
04398 ok &= osresult2->setOtherSystemResultName(i,tempStr);
04399 if (!ok)
04400 throw ErrorClass("Error during setOtherSystemResultName!");
04401 tempStr = osresult1->getOtherSystemResultValue(i);
04402 ok &= osresult2->setOtherSystemResultValue(i,tempStr);
04403 if (!ok)
04404 throw ErrorClass("Error during setOtherSystemResultValue!");
04405 tempStr = osresult1->getOtherSystemResultDescription(i);
04406 ok &= osresult2->setOtherSystemResultDescription(i,tempStr);
04407 if (!ok)
04408 throw ErrorClass("Error during setOtherSystemResultDescription!");
04409 }
04410
04411 tempStr = osresult1->getCurrentState();
04412 ok &= osresult2->setCurrentState(tempStr);
04413 if (!ok)
04414 throw ErrorClass("Error during setCurrentState!");
04415 tempInt = osresult1->getCurrentJobCount();
04416 ok &= osresult2->setCurrentJobCount(tempInt);
04417 if (!ok)
04418 throw ErrorClass("Error during setCurrentJobCount!");
04419 tempInt = osresult1->getTotalJobsSoFar();
04420 ok &= osresult2->setTotalJobsSoFar(tempInt);
04421 if (!ok)
04422 throw ErrorClass("Error during setTotalJobsSoFar!");
04423 tempStr = osresult1->getTimeServiceStarted();
04424 ok &= osresult2->setTimeServiceStarted(tempStr);
04425 if (!ok)
04426 throw ErrorClass("Error during setTimeServiceStarted!");
04427 tempDbl = osresult1->getServiceUtilization();
04428 ok &= osresult2->setServiceUtilization(tempDbl);
04429 if (!ok)
04430 throw ErrorClass("Error during setServiceUtilization!");
04431
04432 tempInt = osresult1->getNumberOfOtherServiceResults();
04433 ok &= osresult2->setNumberOfOtherServiceResults(tempInt);
04434 if (!ok)
04435 throw ErrorClass("Error during setNumberOfOtherServiceResults!");
04436 for (int i=0; i < tempInt; i++)
04437 {
04438 tempStr = osresult1->getOtherServiceResultName(i);
04439 ok &= osresult2->setOtherServiceResultName(i,tempStr);
04440 if (!ok)
04441 throw ErrorClass("Error during setOtherServiceResultName!");
04442 tempStr = osresult1->getOtherServiceResultValue(i);
04443 ok &= osresult2->setOtherServiceResultValue(i,tempStr);
04444 if (!ok)
04445 throw ErrorClass("Error during setOtherServiceResultValue!");
04446 tempStr = osresult1->getOtherServiceResultDescription(i);
04447 ok &= osresult2->setOtherServiceResultDescription(i,tempStr);
04448 if (!ok)
04449 throw ErrorClass("Error during setOtherServiceResultDescription!");
04450 }
04451
04452 tempStr = osresult1->getJobStatus();
04453 ok &= osresult2->setJobStatus(tempStr);
04454 if (!ok)
04455 throw ErrorClass("Error during setJobStatus!");
04456 tempStr = osresult1->getJobSubmitTime();
04457 ok &= osresult2->setJobSubmitTime(tempStr);
04458 if (!ok)
04459 throw ErrorClass("Error during setJobSubmitTime!");
04460 tempStr = osresult1->getScheduledStartTime();
04461 ok &= osresult2->setScheduledStartTime(tempStr);
04462 if (!ok)
04463 throw ErrorClass("Error during setScheduledStartTime!");
04464 tempStr = osresult1->getActualStartTime();
04465 ok &= osresult2->setActualStartTime(tempStr);
04466 if (!ok)
04467 throw ErrorClass("Error during setActualStartTime!");
04468 tempStr = osresult1->getJobEndTime();
04469 ok &= osresult2->setJobEndTime(tempStr);
04470 if (!ok)
04471 throw ErrorClass("Error during setJobEndTime!");
04472
04473 tempInt = osresult1->getNumberOfTimes();
04474 ok &= osresult2->setNumberOfTimes(tempInt);
04475 if (!ok)
04476 throw ErrorClass("Error during setNumberOfTimes!");
04477 for (int i=0; i < tempInt; i++)
04478 {
04479 string tempStr1,tempStr2,tempStr3,tempStr4;
04480 tempStr1 = osresult1->getTimingInfoType(i);
04481 tempStr2 = osresult1->getTimingInfoCategory(i);
04482 tempStr3 = osresult1->getTimingInfoUnit(i);
04483 tempStr4 = osresult1->getTimingInfoDescription(i);
04484 tempDbl = osresult1->getTimingInfoValue(i);
04485 ok &= osresult2->setTimingInformation(i,tempStr1,tempStr2,tempStr3,tempStr4,tempDbl);
04486 if (!ok)
04487 throw ErrorClass("Error during setTimingInformation!");
04488 }
04489
04490 tempStr = osresult1->getUsedDiskSpaceUnit();
04491 ok &= osresult2->setUsedDiskSpaceUnit(tempStr);
04492 if (!ok)
04493 throw ErrorClass("Error during setUsedDiskSpaceUnit!");
04494 tempStr = osresult1->getUsedDiskSpaceDescription();
04495 ok &= osresult2->setUsedDiskSpaceDescription(tempStr);
04496 if (!ok)
04497 throw ErrorClass("Error during setUsedDiskSpaceDescription!");
04498 tempDbl = osresult1->getUsedDiskSpaceValue();
04499 ok &= osresult2->setUsedDiskSpaceValue(tempDbl);
04500 if (!ok)
04501 throw ErrorClass("Error during setUsedDiskSpaceValue!");
04502 tempStr = osresult1->getUsedMemoryUnit();
04503 ok &= osresult2->setUsedMemoryUnit(tempStr);
04504 if (!ok)
04505 throw ErrorClass("Error during setUsedMemoryUnit!");
04506 tempStr = osresult1->getUsedMemoryDescription();
04507 ok &= osresult2->setUsedMemoryDescription(tempStr);
04508 if (!ok)
04509 throw ErrorClass("Error during setUsedMemoryDescription!");
04510 tempDbl = osresult1->getUsedMemoryValue();
04511 ok &= osresult2->setUsedMemoryValue(tempDbl);
04512 if (!ok)
04513 throw ErrorClass("Error during setUsedMemoryValue!");
04514 tempStr = osresult1->getUsedCPUSpeedUnit();
04515 ok &= osresult2->setUsedCPUSpeedUnit(tempStr);
04516 if (!ok)
04517 throw ErrorClass("Error during setUsedCPUSpeedUnit!");
04518 tempStr = osresult1->getUsedCPUSpeedDescription();
04519 ok &= osresult2->setUsedCPUSpeedDescription(tempStr);
04520 if (!ok)
04521 throw ErrorClass("Error during setUsedCPUSpeedDescription!");
04522 tempDbl = osresult1->getUsedCPUSpeedValue();
04523 ok &= osresult2->setUsedCPUSpeedValue(tempDbl);
04524 if (!ok)
04525 throw ErrorClass("Error during setUsedCPUSpeedValue!");
04526 tempStr = osresult1->getUsedCPUNumberDescription();
04527 ok &= osresult2->setUsedCPUNumberDescription(tempStr);
04528 if (!ok)
04529 throw ErrorClass("Error during setUsedCPUNumberDescription!");
04530 tempInt = osresult1->getUsedCPUNumberValue();
04531 ok &= osresult2->setUsedCPUNumberValue(tempInt);
04532 if (!ok)
04533 throw ErrorClass("Error during setUsedCPUNumberValue!");
04534
04535 tempInt = osresult1->getNumberOfOtherJobResults();
04536 ok &= osresult2->setNumberOfOtherJobResults(tempInt);
04537 if (!ok)
04538 throw ErrorClass("Error during setNumberOfOtherJobResults!");
04539 for (int i=0; i < tempInt; i++)
04540 {
04541 tempStr = osresult1->getOtherJobResultName(i);
04542 ok &= osresult2->setOtherJobResultName(i,tempStr);
04543 if (!ok)
04544 throw ErrorClass("Error during setOtherJobResultName!");
04545 tempStr = osresult1->getOtherJobResultValue(i);
04546 ok &= osresult2->setOtherJobResultValue(i,tempStr);
04547 if (!ok)
04548 throw ErrorClass("Error during setOtherJobResultValue!");
04549 tempStr = osresult1->getOtherJobResultDescription(i);
04550 ok &= osresult2->setOtherJobResultDescription(i,tempStr);
04551 if (!ok)
04552 throw ErrorClass("Error during setOtherJobResultDescription!");
04553 }
04554
04555 tempInt = osresult1->getSolutionNumber();
04556 ok &= osresult2->setSolutionNumber(tempInt);
04557 if (!ok)
04558 throw ErrorClass("Error during setSolutionNumber!");
04559 int nSoln = tempInt;
04560 int nVar, nObj, nCon, nOther, nItem;
04561
04562 tempInt = osresult1->getVariableNumber();
04563 ok &= osresult2->setVariableNumber(tempInt);
04564 if (!ok)
04565 throw ErrorClass("Error during setVariableNumber!");
04566 tempInt = osresult1->getObjectiveNumber();
04567 ok &= osresult2->setObjectiveNumber(tempInt);
04568 if (!ok)
04569 throw ErrorClass("Error during setObjectiveNumber!");
04570 tempInt = osresult1->getConstraintNumber();
04571 ok &= osresult2->setConstraintNumber(tempInt);
04572 if (!ok)
04573 throw ErrorClass("Error during setConstraintNumber!");
04574
04575 for (int i=0; i < nSoln; ++i)
04576 {
04577 tempInt = osresult1->getSolutionTargetObjectiveIdx(i);
04578 ok &= osresult2->setSolutionTargetObjectiveIdx(i,tempInt);
04579 if (!ok)
04580 throw ErrorClass("Error during setSolutionTargetObjectiveIdx!");
04581 bool tempLog = osresult1->getSolutionWeightedObjectives(i);
04582 ok &= osresult2->setSolutionWeightedObjectives(i,tempLog);
04583 if (!ok)
04584 throw ErrorClass("Error during setSolutionWeightedObjectives!");
04585 tempStr = osresult1->getSolutionStatusType(i);
04586 ok &= osresult2->setSolutionStatusType(i,tempStr);
04587 if (!ok)
04588 throw ErrorClass("Error during setSolutionStatusType!");
04589 tempStr = osresult1->getSolutionStatusDescription(i);
04590 ok &= osresult2->setSolutionStatusDescription(i,tempStr);
04591 if (!ok)
04592 throw ErrorClass("Error during setSolutionStatusDescription!");
04593
04594 tempInt = osresult1->getNumberOfSolutionSubstatuses(i);
04595 ok &= osresult2->setNumberOfSolutionSubstatuses(i,tempInt);
04596 if (!ok)
04597 throw ErrorClass("Error during setNumberOfSolutionSubstatuses!");
04598
04599 for (int j=0; j < tempInt; ++j)
04600 {
04601 tempStr = osresult1->getSolutionSubstatusType(i,j);
04602 ok &= osresult2->setSolutionSubstatusType(i,j,tempStr);
04603 if (!ok)
04604 throw ErrorClass("Error during setSolutionSubstatusType!");
04605 tempStr = osresult1->getSolutionSubstatusDescription(i,j);
04606 ok &= osresult2->setSolutionSubstatusDescription(i,j,tempStr);
04607 if (!ok)
04608 throw ErrorClass("Error during setSolutionSubstatusDescription!");
04609 }
04610
04611 tempStr = osresult1->getSolutionMessage(i);
04612 ok &= osresult2->setSolutionMessage(i,tempStr);
04613 if (!ok)
04614 throw ErrorClass("Error during setSolutionMessage!");
04615
04616 tempInt = osresult1->getNumberOfVarValues(i);
04617 ok &= osresult2->setNumberOfVarValues(i,tempInt);
04618 if (!ok)
04619 throw ErrorClass("Error during setNumberOfVarValues!");
04620 nVar = tempInt;
04621 for (int j=0; j < nVar; ++j)
04622 {
04623 tempInt = osresult1->getVarValueIdx(i,j);
04624 tempDbl = osresult1->getVarValue(i,j);
04625 ok &= osresult2->setVarValue(i,j,tempInt,tempDbl);
04626 if (!ok)
04627 throw ErrorClass("Error during setVarValue!");
04628 }
04629
04630 tempInt = osresult1->getNumberOfVarValuesString(i);
04631 ok &= osresult2->setNumberOfVarValuesString(i,tempInt);
04632 if (!ok)
04633 throw ErrorClass("Error during setNumberOfVarValuesString!");
04634 nVar = tempInt;
04635 for (int j=0; j < nVar; ++j)
04636 {
04637 tempInt = osresult1->getVarValueStringIdx(i,j);
04638 tempStr = osresult1->getVarValueString(i,j);
04639 ok &= osresult2->setVarValueString(i,j,tempInt,tempStr);
04640 if (!ok)
04641 throw ErrorClass("Error during setVarValueString!");
04642 }
04643
04644
04645 tempInt = osresult1->getBasisStatusNumberOfEl(i,ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_basic);
04646 for (int j=0; j<tempInt; ++j)
04647 tempArray[j] = osresult1->getBasisStatusEl(i,ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_basic,j);
04648 ok &= osresult2->setBasisStatus(i,ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_basic,tempArray,tempInt);
04649 if (!ok)
04650 throw ErrorClass("Error during setBasisStatus (variables basic)!");
04651
04652 tempInt = osresult1->getBasisStatusNumberOfEl(i,ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_atLower);
04653 for (int j=0; j<tempInt; ++j)
04654 tempArray[j] = osresult1->getBasisStatusEl(i,ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_atLower,j);
04655 ok &= osresult2->setBasisStatus(i,ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_atLower,tempArray,tempInt);
04656 if (!ok)
04657 throw ErrorClass("Error during setBasisStatus (variables atLower)!");
04658
04659 tempInt = osresult1->getBasisStatusNumberOfEl(i,ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_atUpper);
04660 for (int j=0; j<tempInt; ++j)
04661 tempArray[j] = osresult1->getBasisStatusEl(i,ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_atUpper,j);
04662 ok &= osresult2->setBasisStatus(i,ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_atUpper,tempArray,tempInt);
04663 if (!ok)
04664 throw ErrorClass("Error during setBasisStatus (variables atUpper)!");
04665
04666 tempInt = osresult1->getBasisStatusNumberOfEl(i,ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_isFree);
04667 for (int j=0; j<tempInt; ++j)
04668 tempArray[j] = osresult1->getBasisStatusEl(i,ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_isFree,j);
04669 ok &= osresult2->setBasisStatus(i,ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_isFree,tempArray,tempInt);
04670 if (!ok)
04671 throw ErrorClass("Error during setBasisStatus (variables isFree)!");
04672
04673 tempInt = osresult1->getBasisStatusNumberOfEl(i,ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_superbasic);
04674 for (int j=0; j<tempInt; ++j)
04675 tempArray[j] = osresult1->getBasisStatusEl(i,ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_superbasic,j);
04676 ok &= osresult2->setBasisStatus(i,ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_superbasic,tempArray,tempInt);
04677 if (!ok)
04678 throw ErrorClass("Error during setBasisStatus (variables superbasic)!");
04679
04680 tempInt = osresult1->getBasisStatusNumberOfEl(i,ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_unknown);
04681 for (int j=0; j<tempInt; ++j)
04682 tempArray[j] = osresult1->getBasisStatusEl(i,ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_unknown,j);
04683 ok &= osresult2->setBasisStatus(i,ENUM_PROBLEM_COMPONENT_variables,ENUM_BASIS_STATUS_unknown,tempArray,tempInt);
04684 if (!ok)
04685 throw ErrorClass("Error during setBasisStatus (variables unknown)!");
04686
04687
04688 tempInt = osresult1->getNumberOfOtherVariableResults(i);
04689 ok &= osresult2->setNumberOfOtherVariableResults(i,tempInt);
04690 if (!ok)
04691 throw ErrorClass("Error during setNumberOfOtherVariableResults!");
04692 nOther = tempInt;
04693 for (int j=0; j < nOther; ++j)
04694 {
04695 tempStr = osresult1->getOtherVariableResultName(i,j);
04696 ok &= osresult2->setOtherVariableResultName(i,j,tempStr);
04697 if (!ok)
04698 throw ErrorClass("Error during setOtherVariableResultName!");
04699 tempStr = osresult1->getOtherVariableResultDescription(i,j);
04700 ok &= osresult2->setOtherVariableResultDescription(i,j,tempStr);
04701 if (!ok)
04702 throw ErrorClass("Error during setOtherVariableResultDescription!");
04703 tempStr = osresult1->getOtherVariableResultValue(i,j);
04704 ok &= osresult2->setOtherVariableResultValue(i,j,tempStr);
04705 if (!ok)
04706 throw ErrorClass("Error during setOtherVariableResultValue!");
04707
04708 tempInt = osresult1->getOtherVariableResultNumberOfVar(i,j);
04709 ok &= osresult2->setOtherVariableResultNumberOfVar(i,j,tempInt);
04710 if (!ok)
04711 throw ErrorClass("Error during setOtherVariableResultNumberOfVar!");
04712
04713 int nVar = tempInt;
04714 for (int k=0; k < nVar; ++k)
04715 {
04716 tempInt = osresult1->getOtherVariableResultVarIdx(i,j,k);
04717 ok &= osresult2->setOtherVariableResultVarIdx(i,j,k,tempInt);
04718 if (!ok)
04719 throw ErrorClass("Error during setOtherVariableResultVarIdx!");
04720 tempStr = osresult1->getOtherVariableResultVar(i,j,k);
04721 ok &= osresult2->setOtherVariableResultVar(i,j,k,tempStr);
04722 if (!ok)
04723 throw ErrorClass("Error during setOtherVariableResultVar!");
04724 }
04725
04726 int nEnum = osresult1->getOtherVariableResultNumberOfEnumerations(i,j);
04727 ok &= osresult2->setOtherVariableResultNumberOfEnumerations(i,j,nEnum);
04728 if (!ok)
04729 throw ErrorClass("Error during setOtherVariableResultNumberOfEnumerations!");
04730
04731 std::string tempStr1, tempStr2;
04732
04733 for (int k=0; k < nEnum; ++k)
04734 {
04735
04736 tempStr1 = osresult1->getOtherVariableResultEnumerationValue(i,j,k);
04737 tempStr2 = osresult1->getOtherVariableResultEnumerationDescription(i,j,k);
04738 tempInt = osresult1->getOtherVariableResultEnumerationNumberOfEl(i,j,k);
04739 for (int l=0; l<tempInt; ++l)
04740 tempArray[l] = osresult1->getOtherVariableResultEnumerationEl(i,j,k,l);
04741 ok &= osresult2->setOtherOptionEnumeration(i,j,ENUM_PROBLEM_COMPONENT_variables,k,tempStr1,tempStr2,tempArray,tempInt);
04742 if (!ok)
04743 throw ErrorClass("Error during setOtherVariableResultEnumeration!");
04744 }
04745 }
04746
04747 tempInt = osresult1->getNumberOfObjValues(i);
04748 ok &= osresult2->setNumberOfObjValues(i,tempInt);
04749 if (!ok)
04750 throw ErrorClass("Error during setNumberOfObjValues!");
04751 nObj = tempInt;
04752 for (int j=0; j < nObj; ++j)
04753 {
04754 tempInt = osresult1->getObjValueIdx(i,j);
04755 tempDbl = osresult1->getObjValue(i,j);
04756 ok &= osresult2->setObjValue(i,j,tempInt,tempDbl);
04757 if (!ok)
04758 throw ErrorClass("Error during setObjValue!");
04759 }
04760
04761
04762 tempInt = osresult1->getBasisStatusNumberOfEl(i,ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_basic);
04763 for (int j=0; j<tempInt; ++j)
04764 tempArray[j] = osresult1->getBasisStatusEl(i,ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_basic,j);
04765 ok &= osresult2->setBasisStatus(i,ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_basic,tempArray,tempInt);
04766 if (!ok)
04767 throw ErrorClass("Error during setBasisStatus (objectives basic)!");
04768
04769 tempInt = osresult1->getBasisStatusNumberOfEl(i,ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_atLower);
04770 for (int j=0; j<tempInt; ++j)
04771 tempArray[j] = osresult1->getBasisStatusEl(i,ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_atLower,j);
04772 ok &= osresult2->setBasisStatus(i,ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_atLower,tempArray,tempInt);
04773 if (!ok)
04774 throw ErrorClass("Error during setBasisStatus (objectives atLower)!");
04775
04776 tempInt = osresult1->getBasisStatusNumberOfEl(i,ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_atUpper);
04777 for (int j=0; j<tempInt; ++j)
04778 tempArray[j] = osresult1->getBasisStatusEl(i,ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_atUpper,j);
04779 ok &= osresult2->setBasisStatus(i,ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_atUpper,tempArray,tempInt);
04780 if (!ok)
04781 throw ErrorClass("Error during setBasisStatus (objectives atUpper)!");
04782
04783 tempInt = osresult1->getBasisStatusNumberOfEl(i,ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_isFree);
04784 for (int j=0; j<tempInt; ++j)
04785 tempArray[j] = osresult1->getBasisStatusEl(i,ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_isFree,j);
04786 ok &= osresult2->setBasisStatus(i,ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_isFree,tempArray,tempInt);
04787 if (!ok)
04788 throw ErrorClass("Error during setBasisStatus (objectives isFree)!");
04789
04790 tempInt = osresult1->getBasisStatusNumberOfEl(i,ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_superbasic);
04791 for (int j=0; j<tempInt; ++j)
04792 tempArray[j] = osresult1->getBasisStatusEl(i,ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_superbasic,j);
04793 ok &= osresult2->setBasisStatus(i,ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_superbasic,tempArray,tempInt);
04794 if (!ok)
04795 throw ErrorClass("Error during setBasisStatus (objectives superbasic)!");
04796
04797 tempInt = osresult1->getBasisStatusNumberOfEl(i,ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_unknown);
04798 for (int j=0; j<tempInt; ++j)
04799 tempArray[j] = osresult1->getBasisStatusEl(i,ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_unknown,j);
04800 ok &= osresult2->setBasisStatus(i,ENUM_PROBLEM_COMPONENT_objectives,ENUM_BASIS_STATUS_unknown,tempArray,tempInt);
04801 if (!ok)
04802 throw ErrorClass("Error during setBasisStatus (objectives unknown)!");
04803
04804
04805
04806 tempInt = osresult1->getNumberOfOtherObjectiveResults(i);
04807 ok &= osresult2->setNumberOfOtherObjectiveResults(i,tempInt);
04808 if (!ok)
04809 throw ErrorClass("Error during setNumberOfOtherObjectiveResults!");
04810 nOther = tempInt;
04811 for (int j=0; j < nOther; ++j)
04812 {
04813 tempStr = osresult1->getOtherObjectiveResultName(i,j);
04814 ok &= osresult2->setOtherObjectiveResultName(i,j,tempStr);
04815 if (!ok)
04816 throw ErrorClass("Error during setOtherObjectiveResultName!");
04817 tempStr = osresult1->getOtherObjectiveResultDescription(i,j);
04818 ok &= osresult2->setOtherObjectiveResultDescription(i,j,tempStr);
04819 if (!ok)
04820 throw ErrorClass("Error during setOtherObjectiveResultDescription!");
04821 tempStr = osresult1->getOtherObjectiveResultValue(i,j);
04822 ok &= osresult2->setOtherObjectiveResultValue(i,j,tempStr);
04823 if (!ok)
04824 throw ErrorClass("Error during setOtherObjectiveResultValue!");
04825
04826 tempInt = osresult1->getOtherObjectiveResultNumberOfObj(i,j);
04827 ok &= osresult2->setOtherObjectiveResultNumberOfObj(i,j,tempInt);
04828 if (!ok)
04829 throw ErrorClass("Error during setOtherObjectiveResultNumberOfObj!");
04830
04831 nObj = tempInt;
04832 for (int k=0; k < nObj; ++k)
04833 {
04834 tempInt = osresult1->getOtherObjectiveResultObjIdx(i,j,k);
04835 ok &= osresult2->setOtherObjectiveResultObjIdx(i,j,k,tempInt);
04836 if (!ok)
04837 throw ErrorClass("Error during setOtherObjectiveResultObjIdx!");
04838 tempStr = osresult1->getOtherObjectiveResultObj(i,j,k);
04839 ok &= osresult2->setOtherObjectiveResultObj(i,j,k,tempStr);
04840 if (!ok)
04841 throw ErrorClass("Error during setOtherObjectiveResultObj!");
04842 }
04843
04844 int nEnum = osresult1->getOtherObjectiveResultNumberOfEnumerations(i,j);
04845 ok &= osresult2->setOtherObjectiveResultNumberOfEnumerations(i,j,nEnum);
04846 if (!ok)
04847 throw ErrorClass("Error during setOtherObjectiveResultNumberOfEnumerations!");
04848 std::string tempStr1, tempStr2;
04849
04850 for (int k=0; k < nEnum; ++k)
04851 {
04852
04853 tempStr1 = osresult1->getOtherObjectiveResultEnumerationValue(i,j,k);
04854 tempStr2 = osresult1->getOtherObjectiveResultEnumerationDescription(i,j,k);
04855 tempInt = osresult1->getOtherObjectiveResultEnumerationNumberOfEl(i,j,k);
04856 for (int l=0; l<tempInt; ++l)
04857 tempArray[l] = osresult1->getOtherObjectiveResultEnumerationEl(i,j,k,l);
04858 ok &= osresult2->setOtherOptionEnumeration(i,j,ENUM_PROBLEM_COMPONENT_objectives,k,tempStr1,tempStr2,tempArray,tempInt);
04859 if (!ok)
04860 throw ErrorClass("Error during setOtherObjectiveResultEnumeration!");
04861 }
04862 }
04863
04864
04865 tempInt = osresult1->getNumberOfDualValues(i);
04866 ok &= osresult2->setNumberOfDualValues(i,tempInt);
04867 if (!ok)
04868 throw ErrorClass("Error during setNumberOfDualValues!");
04869 nCon = tempInt;
04870 for (int j=0; j < nCon; ++j)
04871 {
04872 tempInt = osresult1->getDualValueIdx(i,j);
04873 tempDbl = osresult1->getDualValue(i,j);
04874 ok &= osresult2->setDualValue(i,j,tempInt,tempDbl);
04875 if (!ok)
04876 throw ErrorClass("Error during setDualValue!");
04877 }
04878
04879
04880 tempInt = osresult1->getBasisStatusNumberOfEl(i,ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_basic);
04881 for (int j=0; j<tempInt; ++j)
04882 tempArray[j] = osresult1->getBasisStatusEl(i,ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_basic,j);
04883 ok &= osresult2->setBasisStatus(i,ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_basic,tempArray,tempInt);
04884 if (!ok)
04885 throw ErrorClass("Error during setBasisStatus (constraints basic)!");
04886
04887 tempInt = osresult1->getBasisStatusNumberOfEl(i,ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_atLower);
04888 for (int j=0; j<tempInt; ++j)
04889 tempArray[j] = osresult1->getBasisStatusEl(i,ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_atLower,j);
04890 ok &= osresult2->setBasisStatus(i,ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_atLower,tempArray,tempInt);
04891 if (!ok)
04892 throw ErrorClass("Error during setBasisStatus (constraints atLower)!");
04893
04894 tempInt = osresult1->getBasisStatusNumberOfEl(i,ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_atUpper);
04895 for (int j=0; j<tempInt; ++j)
04896 tempArray[j] = osresult1->getBasisStatusEl(i,ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_atUpper,j);
04897 ok &= osresult2->setBasisStatus(i,ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_atUpper,tempArray,tempInt);
04898 if (!ok)
04899 throw ErrorClass("Error during setBasisStatus (constraints atUpper)!");
04900
04901 tempInt = osresult1->getBasisStatusNumberOfEl(i,ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_isFree);
04902 for (int j=0; j<tempInt; ++j)
04903 tempArray[j] = osresult1->getBasisStatusEl(i,ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_isFree,j);
04904 ok &= osresult2->setBasisStatus(i,ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_isFree,tempArray,tempInt);
04905 if (!ok)
04906 throw ErrorClass("Error during setBasisStatus (constraints isFree)!");
04907
04908 tempInt = osresult1->getBasisStatusNumberOfEl(i,ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_superbasic);
04909 for (int j=0; j<tempInt; ++j)
04910 tempArray[j] = osresult1->getBasisStatusEl(i,ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_superbasic,j);
04911 ok &= osresult2->setBasisStatus(i,ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_superbasic,tempArray,tempInt);
04912 if (!ok)
04913 throw ErrorClass("Error during setBasisStatus (constraints superbasic)!");
04914
04915 tempInt = osresult1->getBasisStatusNumberOfEl(i,ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_unknown);
04916 for (int j=0; j<tempInt; ++j)
04917 tempArray[j] = osresult1->getBasisStatusEl(i,ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_unknown,j);
04918 ok &= osresult2->setBasisStatus(i,ENUM_PROBLEM_COMPONENT_constraints,ENUM_BASIS_STATUS_unknown,tempArray,tempInt);
04919 if (!ok)
04920 throw ErrorClass("Error during setBasisStatus (constraints unknown)!");
04921
04922
04923
04924
04925 tempInt = osresult1->getNumberOfOtherConstraintResults(i);
04926 ok &= osresult2->setNumberOfOtherConstraintResults(i,tempInt);
04927 if (!ok)
04928 throw ErrorClass("Error during setNumberOfOtherConstraintResults!");
04929 nOther = tempInt;
04930 for (int j=0; j < nOther; ++j)
04931 {
04932 tempStr = osresult1->getOtherConstraintResultName(i,j);
04933 ok &= osresult2->setOtherConstraintResultName(i,j,tempStr);
04934 if (!ok)
04935 throw ErrorClass("Error during setOtherConstraintResultName!");
04936 tempStr = osresult1->getOtherConstraintResultDescription(i,j);
04937 ok &= osresult2->setOtherConstraintResultDescription(i,j,tempStr);
04938 if (!ok)
04939 throw ErrorClass("Error during setOtherConstraintResultDescription!");
04940 tempStr = osresult1->getOtherConstraintResultValue(i,j);
04941 ok &= osresult2->setOtherConstraintResultValue(i,j,tempStr);
04942 if (!ok)
04943 throw ErrorClass("Error during setOtherConstraintResultValue!");
04944 tempInt = osresult1->getOtherConstraintResultNumberOfCon(i,j);
04945 ok &= osresult2->setOtherConstraintResultNumberOfCon(i,j,tempInt);
04946 if (!ok)
04947 throw ErrorClass("Error during setOtherConstraintResultNumberOfCon!");
04948
04949 nCon = tempInt;
04950 for (int k=0; k < nCon; ++k)
04951 {
04952 tempInt = osresult1->getOtherConstraintResultConIdx(i,j,k);
04953 ok &= osresult2->setOtherConstraintResultConIdx(i,j,k,tempInt);
04954 if (!ok)
04955 throw ErrorClass("Error during setOtherConstraintResultConIdx!");
04956 tempStr = osresult1->getOtherConstraintResultCon(i,j,k);
04957 ok &= osresult2->setOtherConstraintResultCon(i,j,k,tempStr);
04958 if (!ok)
04959 throw ErrorClass("Error during setOtherConstraintResultCon!");
04960 }
04961
04962
04963
04964 int nEnum = osresult1->getOtherConstraintResultNumberOfEnumerations(i,j);
04965 ok &= osresult2->setOtherConstraintResultNumberOfEnumerations(i,j,nEnum);
04966 if (!ok)
04967 throw ErrorClass("Error during setOtherConstraintResultNumberOfEnumerations!");
04968 std::string tempStr1, tempStr2;
04969
04970 for (int k=0; k < nEnum; ++k)
04971 {
04972
04973 tempStr1 = osresult1->getOtherConstraintResultEnumerationValue(i,j,k);
04974 tempStr2 = osresult1->getOtherConstraintResultEnumerationDescription(i,j,k);
04975 tempInt = osresult1->getOtherConstraintResultEnumerationNumberOfEl(i,j,k);
04976 for (int l=0; l<tempInt; ++l)
04977 tempArray[l] = osresult1->getOtherConstraintResultEnumerationEl(i,j,k,l);
04978 ok &= osresult2->setOtherOptionEnumeration(i,j,ENUM_PROBLEM_COMPONENT_constraints,k,tempStr1,tempStr2,tempArray,tempInt);
04979 if (!ok)
04980 throw ErrorClass("Error during setOtherConstraintResultEnumeration!");
04981 }
04982 }
04983
04984
04985 tempInt = osresult1->getNumberOfOtherSolutionResults(i);
04986 ok &= osresult2->setNumberOfOtherSolutionResults(i,tempInt);
04987 if (!ok)
04988 throw ErrorClass("Error during setNumberOfOtherSolutionResults!");
04989 nOther = tempInt;
04990 for (int j=0; j < nOther; ++j)
04991 {
04992 tempStr = osresult1->getOtherSolutionResultName(i,j);
04993 ok &= osresult2->setOtherSolutionResultName(i,j,tempStr);
04994 if (!ok)
04995 throw ErrorClass("Error during setOtherSolutionResultName!");
04996 tempStr = osresult1->getOtherSolutionResultCategory(i,j);
04997 ok &= osresult2->setOtherSolutionResultCategory(i,j,tempStr);
04998 if (!ok)
04999 throw ErrorClass("Error during setOtherSolutionResultCategory!");
05000 tempStr = osresult1->getOtherSolutionResultDescription(i,j);
05001 ok &= osresult2->setOtherSolutionResultDescription(i,j,tempStr);
05002 if (!ok)
05003 throw ErrorClass("Error during setOtherSolutionResultDescription!");
05004 tempInt = osresult1->getOtherSolutionResultNumberOfItems(i,j);
05005 ok &= osresult2->setOtherSolutionResultNumberOfItems(i,j,tempInt);
05006 if (!ok)
05007 throw ErrorClass("Error during setOtherSolutionResultNumberOfItems!");
05008
05009 nItem = tempInt;
05010 for (int k=0; k < nItem; ++k)
05011 {
05012 tempStr = osresult1->getOtherSolutionResultItem(i,j,k);
05013 ok &= osresult2->setOtherSolutionResultItem(i,j,k,tempStr);
05014 if (!ok)
05015 throw ErrorClass("Error during setSolutionResultItem!");
05016 }
05017 }
05018 }
05019
05020 tempInt = osresult1->getNumberOfSolverOutputs();
05021 ok &= osresult2->setNumberOfSolverOutputs(tempInt);
05022 if (!ok)
05023 throw ErrorClass("Error during setNumberOfSolverOutputs!");
05024 nOther = tempInt;
05025 for (int i=0; i < nOther; ++i)
05026 {
05027 tempStr = osresult1->getSolverOutputName(i);
05028 ok &= osresult2->setSolverOutputName(i,tempStr);
05029 if (!ok)
05030 throw ErrorClass("Error during setSolverOutputName!");
05031 tempStr = osresult1->getSolverOutputCategory(i);
05032 ok &= osresult2->setSolverOutputCategory(i,tempStr);
05033 if (!ok)
05034 throw ErrorClass("Error during setSolverOutputCategory!");
05035 tempStr = osresult1->getSolverOutputDescription(i);
05036 ok &= osresult2->setSolverOutputDescription(i,tempStr);
05037 if (!ok)
05038 throw ErrorClass("Error during setSolverOutputDescription!");
05039 tempInt = osresult1->getSolverOutputNumberOfItems(i);
05040 ok &= osresult2->setSolverOutputNumberOfItems(i,tempInt);
05041 if (!ok)
05042 throw ErrorClass("Error during setSolverOutputNumberOfItems!");
05043 for (int j=0; j < tempInt; ++j)
05044 {
05045 tempStr = osresult1->getSolverOutputItem(i,j);
05046 ok &= osresult2->setSolverOutputItem(i,j,tempStr);
05047 if (!ok)
05048 throw ErrorClass("Error during setSolverOutputItem!");
05049 }
05050 }
05051
05052
05053 ok &= osresult1->IsEqual(osresult2);
05054 if (!ok)
05055 throw ErrorClass("Error duplicating OSResult object using get() and set() methods");
05056
05057 if (osrlwriter != NULL) delete osrlwriter;
05058 osrlwriter = NULL;
05059 if (osrlreader != NULL) delete osrlreader;
05060 osrlreader = NULL;
05061 if (osresult1 != NULL) delete osresult1;
05062 osresult1 = NULL;
05063 if (osresult2 != NULL) delete osresult2;
05064 osresult2 = NULL;
05065
05066
05067 if (tempArray != NULL) delete[] tempArray;
05068 tempArray = NULL;
05069
05070
05071 unitTestResult << "TEST " << nOfTest << ": Successful test of OSrL tools" << std::endl;
05072 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
05073 }
05074
05075 catch(const ErrorClass& eclass){
05076 cout << endl << endl << endl;
05077 if (osrlwriter != NULL) delete osrlwriter;
05078 osrlwriter = NULL;
05079 if (osrlreader != NULL) delete osrlreader;
05080 osrlreader = NULL;
05081 if (osresult1 != NULL) delete osresult1;
05082 osresult1 = NULL;
05083 if (osresult2 != NULL) delete osresult2;
05084 osresult2 = NULL;
05085
05086
05087 if (tempArray != NULL) delete[] tempArray;
05088 tempArray = NULL;
05089
05090 unitTestResultFailure << eclass.errormsg << endl;
05091 unitTestResultFailure << "There was a failure in the test of OSrL get() methods" << endl;
05092 }
05093
05094
05095
05096 try{
05107 cout << endl << "TEST " << ++nOfTest << ": OSrL parser" << endl << endl;
05108 std::string tmpOSrL;
05109 clock_t start, finish;
05110 double duration;
05111 std::string osrl;
05112 osrlwriter = new OSrLWriter();
05113 osrlreader = new OSrLReader();
05114 cout << "Test parsing an OSrL file" << endl;
05115 cout << "First read the OSrL file into a string" << endl;
05116 osrlFileName = dataDir + "osrlFiles" + dirsep + "parserTest.osrl";
05117 start = clock();
05118 osrl = fileUtil->getFileAsString( osrlFileName.c_str() );
05119 finish = clock();
05120 duration = (double) (finish - start) / CLOCKS_PER_SEC;
05121 cout << "Reading the file into a string took (seconds): "<< duration << endl;
05122 cout << osrl << endl;
05123 start = clock();
05124 cout << "PARSE THE OSRL STRING INTO AN OSRESULT OBJECT" << endl;
05125 osresult = osrlreader->readOSrL( osrl);
05126 cout << "Finished read; write OSResult object to temporary string" << endl;
05127
05128 tmpOSrL = osrlwriter->writeOSrL( osresult);
05129
05130 cout << tmpOSrL << endl;
05131
05132
05133
05134 delete osrlreader;
05135 osrlreader = new OSrLReader();
05136 osrlreader->readOSrL( tmpOSrL);
05137
05138 delete osrlwriter;
05139 osrlwriter = NULL;
05140 delete osrlreader;
05141 osrlreader = NULL;
05142
05143
05144
05145
05146
05147
05148
05149
05150
05151
05152
05153
05154
05155
05156
05157
05158
05159
05160
05161
05162
05163
05164
05165
05166
05167
05168
05169
05170
05171
05172
05173
05174
05175
05176
05177
05178
05179
05180
05181
05182
05183
05184
05185
05186
05187
05188
05189
05190
05191
05192
05193
05194
05195
05196
05197
05198
05199
05200
05201
05202
05203
05204
05205
05206
05207
05208
05209
05210
05211
05212
05213
05214
05215
05216
05217
05218
05219
05220
05221
05222
05223
05224
05225
05226
05227
05228
05229
05230
05231
05232
05233
05234
05235
05236
05237
05238
05239
05240
05241
05242
05243
05244
05245
05246
05247
05248
05249
05250
05251
05252
05253
05254
05255
05256
05257
05258
05259
05260
05261
05262
05263
05264
05265
05266
05267
05268
05269
05270
05271
05272
05273
05274
05275
05276
05277
05278
05279
05280
05281
05282
05283
05284
05285
05286
05287
05288
05289
05290
05291
05292
05293
05294
05295
05296
05297
05298
05299
05300
05301
05302
05303
05304
05305
05306
05307
05308
05309
05310
05311
05312
05313
05314
05315
05316
05317
05318
05319
05320
05321
05322
05323
05324
05325
05326
05327
05328
05329
05330
05331
05332
05333
05334
05335
05336
05337
05338
05339
05340
05341
05342
05343
05344
05345
05346
05347
05348
05349
05350
05351
05352
05353
05354
05355
05356
05357
05358
05359
05360
05361
05362
05363
05364
05365
05366
05367
05368
05369
05370
05371
05372
05373
05374
05375
05376
05377
05378
05379
05380
05381
05382
05383
05384
05385
05386
05387
05388
05389
05390
05391
05392
05393
05394
05395
05396
05397
05398
05399
05400
05401
05402
05403
05404
05405
05406 unitTestResult <<
05407 "TEST " << nOfTest << ": Successful test of OSrL parser on file parserTest.osrl"
05408 << std::endl;
05409 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
05410 }
05411 catch(const ErrorClass& eclass){
05412
05413 cout << endl << endl << endl;
05414 if(osrlwriter != NULL) delete osrlwriter;
05415 osrlwriter = NULL;
05416 if(osrlreader != NULL) delete osrlreader;
05417 osrlreader = NULL;
05418
05419 unitTestResultFailure << eclass.errormsg << endl;
05420 unitTestResultFailure << "There was a failure in the test for reading OSrL" << endl;
05421 }
05422
05423 if (intArray !=NULL)
05424 {
05425 delete[] intArray;
05426 intArray = NULL;
05427 }
05428
05429 }
05430
05431
05432 if (SOLVER_TESTS){
05433 try{
05434 cout << endl << "TEST " << ++nOfTest << ": Clp solver on parincLinearByRow.osil" << endl << endl;
05435 ok = true;
05436 std::cout << "create a new COIN Clp for OSiL string solution" << std::endl;
05437 osilFileName = dataDir + "osilFiles" + dirsep + "parincLinearByRow.osil";
05438 osolFileName = dataDir + "osolFiles" + dirsep + "parincLinearByRow_clp.osol";
05439 osil = fileUtil->getFileAsString( osilFileName.c_str());
05440 osol = fileUtil->getFileAsString( osolFileName.c_str());
05441
05442 std::cout << "create a new Solver object" << std::endl;
05443 osilreader = new OSiLReader();
05444 osolreader = new OSoLReader();
05445 solver = new CoinSolver();
05446 solver->sSolverName = "clp";
05447 solver->osinstance = osilreader->readOSiL( osil);
05448 std::cout << " Done reading the OSiL" << std::endl;
05449
05450 OSiLWriter *osilwriter;
05451 osilwriter = new OSiLWriter();
05452 osilwriter->m_bWhiteSpace = true;
05453 std::cout << " Write the OSiL" << std::endl;
05454 osil = osilwriter->writeOSiL( solver->osinstance) ;
05455
05456 std::cout << " Done writing the OSiL" << std::endl;
05457 solver->osoption = osolreader->readOSoL( osol);
05458 cout << "call the COIN - clp Solver for parincLinearbyRow" << endl;
05459
05460 std::cout << "call solver" << std::endl;
05461 solver->solve();
05462 std::cout << "returned from solver" << std::endl;
05463 check = 7668;
05464 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
05465 if (ok)
05466 {
05467 #ifdef DEBUG
05468 cout << solver->osrl << endl;
05469 #endif
05470 cout << "COIN clp solver solution for parincLinearByRow checks." << endl;
05471 }
05472 else
05473 { cout << "COIN clp solver solution for parincLinearByRow in error:" << endl;
05474 cout << solver->osrl << endl;
05475 }
05476 if(ok == false) throw ErrorClass(" Fail unit test with clp on parincLinearByRow.osil");
05477
05478 osrlreader = new OSrLReader();
05479 #ifdef DEBUG
05480 cout << "\nThe osrl file:\n" << solver->osrl << endl;
05481 cout << "Start parsing the file" << endl;
05482 #endif
05483 osrlreader->readOSrL( solver->osrl);
05484 #ifdef DEBUG
05485 cout << "read successfully" << endl;
05486 #endif
05487 delete osilreader;
05488 osilreader = NULL;
05489 #ifdef DEBUG
05490 cout << "osilreader successfully deleted" << endl;
05491 #endif
05492 delete osolreader;
05493 osolreader = NULL;
05494 #ifdef DEBUG
05495 cout << "osolreader successfully deleted" << endl;
05496 #endif
05497 delete solver;
05498 solver = NULL;
05499 #ifdef DEBUG
05500 cout << "solver successfully deleted" << endl;
05501 #endif
05502 delete osilwriter;
05503 osilwriter = NULL;
05504 #ifdef DEBUG
05505 cout << "osilwriter successfully deleted" << endl;
05506 #endif
05507 delete osrlreader;
05508 osrlreader = NULL;
05509 #ifdef DEBUG
05510 cout << "osrlreader successfully deleted" << endl;
05511 #endif
05512 unitTestResult << "TEST " << nOfTest << ": Solved problem parincLinearByRow.osil with Clp" << std::endl;
05513 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
05514 }
05515 catch(const ErrorClass& eclass){
05516 unitTestResultFailure << "Sorry Unit Test Failed Testing Clp Solver:" + eclass.errormsg<< endl;
05517
05518 if (osilreader != NULL)
05519 delete osilreader;
05520 osilreader = NULL;
05521 if (osolreader != NULL)
05522 delete osolreader;
05523 osolreader = NULL;
05524 if (solver != NULL)
05525 delete solver;
05526 solver = NULL;
05527 if (osilwriter != NULL)
05528 delete osilwriter;
05529 osilwriter = NULL;
05530 if (osrlreader != NULL)
05531 delete osrlreader;
05532 osrlreader = NULL;
05533 }
05534
05535
05536 try{
05537 cout << endl << "TEST " << ++nOfTest << ": Cbc solver on p0033.osil" << endl << endl;
05538 std::cout << "create a new COIN Cbc for OSiL string solution" << std::endl;
05539 ok = true;
05540 osilFileName = dataDir + "osilFiles" + dirsep + "p0033.osil";
05541
05542 osil = fileUtil->getFileAsString( osilFileName.c_str());
05543
05544 osol = "";
05545 osilreader = new OSiLReader();
05546 osolreader = new OSoLReader();
05547 solver = new CoinSolver();
05548 solver->sSolverName ="cbc";
05549 solver->osil = osil;
05550 solver->osol = osol;
05551 solver->osinstance = NULL;
05552 solver->osoption = NULL;
05553 cout << "call the COIN - Cbc Solver for p0033" << endl;
05554 solver->buildSolverInstance();
05555 solver->solve();
05556 check = 3089;
05557 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
05558 if (ok)
05559 {
05560 #ifdef DEBUG
05561 cout << solver->osrl << endl;
05562 #endif
05563 cout << "Coin cbc solution for p0033 checks" << endl;
05564 }
05565 else
05566 { cout << "Coin cbc solution for p0033 in error:" << endl;
05567 cout << solver->osrl << endl;
05568 }
05569 if (ok == false) throw ErrorClass(" Fail unit test with Cbc on p0033.osil");
05570 delete solver;
05571 solver = NULL;
05572 delete osilreader;
05573 osilreader = NULL;
05574 delete osolreader;
05575 osolreader = NULL;
05576 unitTestResult << "TEST " << nOfTest << ": Solved problem p0033.osil with Cbc" << std::endl;
05577 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
05578 }
05579 catch(const ErrorClass& eclass){
05580 unitTestResultFailure << "Sorry Unit Test Failed Testing Cbc Solver:" + eclass.errormsg<< endl;
05581 if (solver != NULL)
05582 delete solver;
05583 solver = NULL;
05584 if (osilreader != NULL)
05585 delete osilreader;
05586 osilreader = NULL;
05587 if (osolreader != NULL)
05588 delete osolreader;
05589 osolreader = NULL;
05590 }
05591
05592 if( THOROUGH == true){
05593
05594
05595 try{
05596 cout << endl << "TEST " << ++nOfTest << ": Cbc solver on p0033MULT.osil" << endl << endl;
05597 std::cout << "create a new COIN Cbc for OSiL string solution" << std::endl;
05598 ok = true;
05599 osilFileName = dataDir + "osilFiles" + dirsep + "p0033MULT.osil";
05600
05601 osil = fileUtil->getFileAsString( osilFileName.c_str());
05602
05603 osol = "";
05604 osilreader = new OSiLReader();
05605 osolreader = new OSoLReader();
05606 solver = new CoinSolver();
05607 solver->sSolverName ="cbc";
05608 solver->osil = osil;
05609 solver->osol = osol;
05610 solver->osinstance = NULL;
05611 solver->osoption = NULL;
05612 cout << "call the COIN - Cbc Solver for p0033MULT" << endl;
05613 solver->buildSolverInstance();
05614 solver->solve();
05615 check = 3089;
05616 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
05617 if (ok)
05618 {
05619 #ifdef DEBUG
05620 cout << solver->osrl << endl;
05621 #endif
05622 cout << "Coin cbc solution for p0033MULT checks" << endl;
05623 }
05624 else
05625 { cout << "Coin cbc solution for p0033MULT in error:" << endl;
05626 cout << solver->osrl << endl;
05627 }
05628 if (ok == false) throw ErrorClass(" Fail unit test with Cbc on p0033MULT.osil");
05629 delete solver;
05630 solver = NULL;
05631 delete osilreader;
05632 osilreader = NULL;
05633 delete osolreader;
05634 osolreader = NULL;
05635 unitTestResult << "TEST " << nOfTest << ": Solved problem p0033MULT.osil with Cbc" << std::endl;
05636 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
05637 }
05638 catch(const ErrorClass& eclass){
05639 unitTestResultFailure << "Sorry Unit Test Failed Testing Cbc Solver:" + eclass.errormsg<< endl;
05640 if (solver != NULL)
05641 delete solver;
05642 solver = NULL;
05643 if (osilreader != NULL)
05644 delete osilreader;
05645 osilreader = NULL;
05646 if (osolreader != NULL)
05647 delete osolreader;
05648 osolreader = NULL;
05649 }
05650
05651
05652
05653 try{
05654 cout << endl << "TEST " << ++nOfTest << ": Cbc solver on p0033.osil - node limit set" << endl << endl;
05655
05656 ok = true;
05657 osilFileName = dataDir + "osilFiles" + dirsep + "p0033.osil";
05658 osolFileName = dataDir + "osolFiles" + dirsep + "p0033_cbc.osol";
05659 osil = fileUtil->getFileAsString( osilFileName.c_str());
05660 osol = fileUtil->getFileAsString( osolFileName.c_str());
05661 osilreader = new OSiLReader();
05662 osolreader = new OSoLReader();
05663 solver = new CoinSolver();
05664 solver->sSolverName ="cbc";
05665 solver->osil = osil;
05666 solver->osol = osol;
05667 solver->osinstance = NULL;
05668 solver->osoption = NULL;
05669 cout << "call the COIN - Cbc Solver for p0033" << endl;
05670 solver->buildSolverInstance();
05671 solver->solve();
05672
05673
05674 if( solver->osrl.find("node limit reached") != std::string::npos)
05675 ok = true;
05676 else
05677 ok = false;
05678 if (ok == false) throw ErrorClass(" node limit option on p0033.osil not processed properly");
05679 delete solver;
05680 solver = NULL;
05681 delete osilreader;
05682 osilreader = NULL;
05683 delete osolreader;
05684 osolreader = NULL;
05685 unitTestResult << "TEST " << nOfTest << ": Solved problem p0033.osil with Cbc node limit" << std::endl;
05686 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
05687 }
05688 catch(const ErrorClass& eclass){
05689 unitTestResultFailure << "Sorry Unit Test Failed Testing Cbc Solver:" + eclass.errormsg<< endl;
05690 if (solver != NULL)
05691 delete solver;
05692 solver = NULL;
05693 if (osilreader != NULL)
05694 delete osilreader;
05695 osilreader = NULL;
05696 if (osolreader != NULL)
05697 delete osolreader;
05698 osolreader = NULL;
05699 }
05700
05701
05702 try{
05703 cout << endl << "TEST " << ++nOfTest << ": Cbc solver on p0201.osil" << endl << endl;
05704 ok = true;
05705 osilFileName = dataDir + "osilFiles" + dirsep + "p0201.osil";
05706 osolFileName = dataDir + "osolFiles" + dirsep + "p0201_cbc.osol";
05707 osil = fileUtil->getFileAsString( osilFileName.c_str());
05708 osol = fileUtil->getFileAsString( osolFileName.c_str());
05709 solver = new CoinSolver();
05710 solver->sSolverName ="cbc";
05711 solver->osil = osil;
05712 osilreader = new OSiLReader();
05713 osolreader = new OSoLReader();
05714 solver->osol = osol;
05715 solver->osinstance = NULL;
05716 solver->osoption = NULL;
05717 cout << "call the COIN - Cbc Solver for p0201" << endl;
05718 solver->solve();
05719 cout << "Here is the COIN Cbc solver solution for p0201" << endl;
05720 std::cout << solver->osrl << std::endl;
05721 check = 7615;
05722
05723
05724 string::size_type pos;
05725 pos = solver->osrl.find( "node limit");
05726 if(pos == std::string::npos) throw ErrorClass(" Error with p0201 on Cbc");
05727
05728
05729
05730 delete solver;
05731 solver = NULL;
05732 delete osilreader;
05733 osilreader = NULL;
05734 delete osolreader;
05735 osolreader = NULL;
05736 unitTestResult << "TEST " << nOfTest << ": Solved problem p0201.osil with Cbc" << std::endl;
05737 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
05738 }
05739 catch(const ErrorClass& eclass){
05740 unitTestResultFailure << "Sorry Unit Test Failed Testing Cbc Solver:" + eclass.errormsg<< endl;
05741 if (solver != NULL)
05742 delete solver;
05743 solver = NULL;
05744 if (osilreader != NULL)
05745 delete osilreader;
05746 osilreader = NULL;
05747 if (osolreader != NULL)
05748 delete osolreader;
05749 osolreader = NULL;
05750 }
05751
05752 try{
05753 cout << endl << "TEST " << ++nOfTest << ": Cbc solver on parincInteger.osil" << endl << endl;
05754 ok = true;
05755 osilFileName = dataDir + "osilFiles" + dirsep + "parincInteger.osil";
05756 osolFileName = dataDir + "osolFiles" + dirsep + "parincInteger_cbc.osol";
05757 osil = fileUtil->getFileAsString( osilFileName.c_str());
05758 osol = fileUtil->getFileAsString( osolFileName.c_str());
05759 osilreader = new OSiLReader();
05760 osolreader = new OSoLReader();
05761
05762 solver = new CoinSolver();
05763 solver->sSolverName ="cbc";
05764 cout << "parse OSiL file" << endl;
05765 solver->osinstance = osilreader->readOSiL( osil);
05766 solver->osol = osol;
05767 cout << "call the COIN - Cbc Solver for parincInteger" << endl;
05768
05769 solver->solve();
05770 check = 7668;
05771 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
05772 if (ok)
05773 {
05774 #ifdef DEBUG
05775 cout << solver->osrl << endl;
05776 #endif
05777 cout << "COIN cbc solver solution for parincInteger checks." << endl;
05778 }
05779 else
05780 { cout << "COIN cbc solver solution for parincInteger in error:" << endl;
05781 cout << solver->osrl << endl;
05782 }
05783 if(ok == false) throw ErrorClass(" Fail unit test with Cbc on parincInteger.osil");
05784 delete osilreader;
05785 osilreader = NULL;
05786 delete osolreader;
05787 osolreader = NULL;
05788 delete solver;
05789 solver = NULL;
05790 unitTestResult << "TEST " << nOfTest << ": Solved problem parincInteger.osil with Cbc" << std::endl;
05791 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
05792 }
05793 catch(const ErrorClass& eclass){
05794 unitTestResultFailure << "Sorry Unit Test Failed Testing Cbc Solver:" + eclass.errormsg<< endl;
05795 if (solver != NULL)
05796 delete solver;
05797 solver = NULL;
05798 if (osilreader != NULL)
05799 delete osilreader;
05800 osilreader = NULL;
05801 if (osolreader != NULL)
05802 delete osolreader;
05803 osolreader = NULL;
05804 }
05805 }
05806
05807 #ifdef COIN_HAS_SYMPHONY
05808 try{
05809 cout << endl << "TEST " << ++nOfTest << ": SYMPHONY solver on p0033.osil" << endl << endl;
05810 ok = true;
05811 osilFileName = dataDir + "osilFiles" + dirsep + "p0033.osil";
05812 osolFileName = dataDir + "osolFiles" + dirsep + "p0033_sym.osol";
05813 osil = fileUtil->getFileAsString( osilFileName.c_str());
05814 osol = fileUtil->getFileAsString( osolFileName.c_str());
05815 osolreader = new OSoLReader();
05816 solver = new CoinSolver();
05817 solver->sSolverName = "symphony";
05818 solver->osil = osil;
05819 solver->osinstance = NULL;
05820 solver->osoption = osolreader->readOSoL( osol);
05821 cout << "build the solver instance for COIN - SYMPHONY" << endl;
05822 solver->buildSolverInstance();
05823
05824 solver->solve();
05825 check = 3089;
05826
05827 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
05828 if (ok)
05829 {
05830 #ifdef DEBUG
05831 cout << solver->osrl << endl;
05832 #endif
05833 cout << "COIN SYMPHONY solver solution for p0033 checks." << endl;
05834 }
05835 else
05836 { cout << "COIN SYMPHONY solver solution for p0033 in error:" << endl;
05837 cout << solver->osrl << endl;
05838 }
05839 if(ok == false) throw ErrorClass(" Fail unit test with SYMPHONY on p0033.osil");
05840 delete solver;
05841 solver = NULL;
05842 delete osolreader;
05843 osolreader = NULL;
05844 unitTestResult << "TEST " << nOfTest << ": Solved problem p0033.osil with SYMPHONY" << std::endl;
05845 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
05846 }
05847 catch(const ErrorClass& eclass){
05848 unitTestResultFailure << "Sorry Unit Test Failed Testing the SYMPHONY Solver:" + eclass.errormsg << endl;
05849 if (solver != NULL)
05850 delete solver;
05851 solver = NULL;
05852 if (osolreader != NULL)
05853 delete osolreader;
05854 osolreader = NULL;
05855 }
05856 #endif
05857
05858
05859
05860 #ifdef COIN_HAS_DYLP
05861 try{
05862 cout << endl << "TEST " << ++nOfTest << ": DyLP solver on parincLinear.osil" << endl << endl;
05863 ok = true;
05864 osilFileName = dataDir + "osilFiles" + dirsep + "parincLinear.osil";
05865 osolFileName = dataDir + "osolFiles" + dirsep + "parincLinear_dylp.osol";
05866 osil = fileUtil->getFileAsString( osilFileName.c_str());
05867 osol = fileUtil->getFileAsString( osolFileName.c_str());
05868 osilreader = new OSiLReader();
05869 solver = new CoinSolver();
05870 solver->sSolverName = "dylp";
05871 solver->osol = osol;
05872 solver->osinstance = osilreader->readOSiL( osil);
05873 cout << "call the COIN - DyLP solver for parincLinear" << endl;
05874 solver->buildSolverInstance();
05875 solver->solve();
05876 check = 7668;
05877
05878 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
05879 if (ok)
05880 {
05881 #ifdef DEBUG
05882 cout << solver->osrl << endl;
05883 #endif
05884 cout << "COIN DyLP solver solution for parincLinear checks." << endl;
05885 }
05886 else
05887 { cout << "COIN DyLP solver solution for parincLinear in error:" << endl;
05888 cout << solver->osrl << endl;
05889 }
05890 if(ok == false) throw ErrorClass(" Fail unit test with DyLP on parincLinear.osil");
05891 delete solver;
05892 solver = NULL;
05893 delete osilreader;
05894 osilreader = NULL;
05895 unitTestResult << "TEST " << nOfTest << ": Solved problem parincLinear.osil with DyLP" << std::endl;
05896 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
05897 }
05898 catch(const ErrorClass& eclass){
05899 cout << "OSrL = " << solver->osrl << endl;
05900 cout << endl << endl << endl;
05901 unitTestResultFailure <<"Sorry Unit Test Failed Testing the DyLP Solver:" + eclass.errormsg << endl;
05902 if (solver != NULL)
05903 delete solver;
05904 solver = NULL;
05905 if (osilreader != NULL)
05906 delete osilreader;
05907 osilreader = NULL;
05908 }
05909 #endif
05910
05911
05912 #ifdef COIN_HAS_VOL
05913 try{
05914 cout << endl << "TEST " << ++nOfTest << ": Vol solver on volumeTest.osil" << endl << endl;
05915 ok = true;
05916 osilFileName = dataDir + "osilFiles" + dirsep + "volumeTest.osil";
05917 osolFileName = dataDir + "osolFiles" + dirsep + "volumeTest_vol.osol";
05918 osil = fileUtil->getFileAsString( osilFileName.c_str());
05919 osol = fileUtil->getFileAsString( osolFileName.c_str());
05920 osolreader = new OSoLReader();
05921 solver = new CoinSolver();
05922 solver->sSolverName = "vol";
05923 solver->osil = osil;
05924 solver->osinstance = NULL;
05925 solver->osoption = osolreader->readOSoL( osol);
05926 cout << "call the COIN - Vol solver for volumeTest" << endl;
05927 solver->buildSolverInstance();
05928 solver->solve();
05929 check = 7;
05930
05931 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
05932 if (ok)
05933 {
05934 #ifdef DEBUG
05935 cout << solver->osrl << endl;
05936 #endif
05937 cout << "COIN Vol solver solution for parincLinear checks." << endl;
05938 }
05939 else
05940 { cout << "COIN Vol solver solution for parincLinear in error:" << endl;
05941 cout << solver->osrl << endl;
05942 }
05943 if(ok == false) throw ErrorClass(" Fail unit test with Vol on volumeTest.osil");
05944 delete solver;
05945 solver = NULL;
05946 delete osolreader;
05947 osolreader = NULL;
05948 unitTestResult << "TEST " << nOfTest << ": Solved problem volumeTest.osil with Vol" << std::endl;
05949 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
05950 }
05951 catch(const ErrorClass& eclass){
05952 cout << "OSrL = " << solver->osrl << endl;
05953 cout << endl << endl << endl;
05954 unitTestResultFailure <<"Sorry Unit Test Failed Testing the Vol Solver:" + eclass.errormsg << endl;
05955 if (solver != NULL)
05956 delete solver;
05957 solver = NULL;
05958 if (osolreader != NULL)
05959 delete osolreader;
05960 osolreader = NULL;
05961 }
05962 #endif
05963
05964 #ifdef COIN_HAS_GLPK
05965 try{
05966 cout << endl << "TEST " << ++nOfTest << ": GLPK solver on p0033.osil" << endl << endl;
05967 ok = true;
05968 osilFileName = dataDir + "osilFiles" + dirsep + "p0033.osil";
05969 osolFileName = dataDir + "osolFiles" + dirsep + "p0033_glpk.osol";
05970 osil = fileUtil->getFileAsString( osilFileName.c_str());
05971 osol = fileUtil->getFileAsString( osolFileName.c_str());
05972 osilreader = new OSiLReader();
05973 osolreader = new OSoLReader();
05974 solver = new CoinSolver();
05975 solver->sSolverName = "glpk";
05976 solver->osinstance = osilreader->readOSiL( osil);
05977 solver->osoption = osolreader->readOSoL( osol);
05978 cout << "call the GLPK Solver for p0033" << endl;
05979 solver->buildSolverInstance();
05980 solver->solve();
05981 check = 3089;
05982
05983 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
05984 if (ok)
05985 {
05986 #ifdef DEBUG
05987 cout << solver->osrl << endl;
05988 #endif
05989 cout << "GLPK solver solution for p0033 checks." << endl;
05990 }
05991 else
05992 { cout << "GLPK solver solution for p0033 in error:" << endl;
05993 cout << solver->osrl << endl;
05994 }
05995 if(ok == false) throw ErrorClass(" Fail unit test with GLPK on p0033.osil");
05996 delete solver;
05997 solver = NULL;
05998 delete osilreader;
05999 osilreader = NULL;
06000 delete osolreader;
06001 osolreader = NULL;
06002 unitTestResult << "TEST " << nOfTest << ": Solved problem p0033.osil with GLPK" << std::endl;
06003 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
06004 }
06005 catch(const ErrorClass& eclass){
06006 cout << "OSrL = " << solver->osrl << endl;
06007 cout << endl << endl << endl;
06008 unitTestResultFailure <<"Sorry Unit Test Failed Testing the Glpk Solver:" + eclass.errormsg << endl;
06009 if (solver != NULL)
06010 delete solver;
06011 solver = NULL;
06012 if (osilreader != NULL)
06013 delete osilreader;
06014 osilreader = NULL;
06015 if (osolreader != NULL)
06016 delete osolreader;
06017 osolreader = NULL;
06018 }
06019 #endif
06020
06021
06022
06023 #ifdef COIN_HAS_CPX
06024 try{
06025 cout << endl << "TEST " << ++nOfTest << ": Cplex solver on p0033.osil" << endl << endl;
06026 ok = true;
06027 osilFileName = dataDir + "osilFiles" + dirsep + "p0033.osil";
06028 osolFileName = dataDir + "osolFiles" + dirsep + "p0033_cpx.osol";
06029 osil = fileUtil->getFileAsString( osilFileName.c_str());
06030 osol = fileUtil->getFileAsString( osolFileName.c_str());
06031 solver = new CoinSolver();
06032 solver->sSolverName = "cplex";
06033 solver->osil = osil;
06034 solver->osol = osol;
06035 solver->osinstance = NULL;
06036 cout << "call the CPLEX Solver for p0033" << endl;
06037 solver->buildSolverInstance();
06038 solver->solve();
06039 check = 3089;
06040
06041 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
06042 if (ok)
06043 {
06044 #ifdef DEBUG
06045 cout << solver->osrl << endl;
06046 #endif
06047 cout << "CPLEX solver solution for p0033 checks." << endl;
06048 }
06049 else
06050 { cout << "CPLEX solver solution for p0033 in error:" << endl;
06051 cout << solver->osrl << endl;
06052 }
06053 if(ok == false) throw ErrorClass(" Fail unit test with CPLEX on p0033.osil");
06054 delete solver;
06055 solver = NULL;
06056 unitTestResult << "TEST " << nOfTest << ": Solved problem p0033.osil with CPLEX" << std::endl;
06057 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
06058 }
06059 catch(const ErrorClass& eclass){
06060 cout << "OSrL = " << solver->osrl << endl;
06061 cout << endl << endl << endl;
06062 unitTestResultFailure <<"Sorry Unit Test Failed Testing the Cplex Solver:" + eclass.errormsg << endl;
06063 if (solver != NULL)
06064 delete solver;
06065 solver = NULL;
06066 }
06067 #endif
06068
06069
06070
06071 #ifdef COIN_HAS_IPOPT
06072 IpoptSolver *ipoptSolver = NULL;
06073 try{
06074 cout << endl << "TEST " << ++nOfTest << ": Ipopt solver with avion2.osil" << endl << endl;
06075 ipoptSolver = new IpoptSolver();
06076 cout << "create a new IPOPT Solver for OSiL string solution" << endl;
06077 ok = true;
06078
06079 #ifndef XLC_
06080 osilFileName = dataDir + "osilFiles" + dirsep + "avion2.osil";
06081 osolFileName = dataDir + "osolFiles" + dirsep + "avion2_ipopt.osol";
06082 osil = fileUtil->getFileAsString( osilFileName.c_str());
06083 osol = fileUtil->getFileAsString( osolFileName.c_str());
06084 cout << "IPOPT Solver created for OSiL string solution" << endl;
06085 ipoptSolver->osol = osol;
06086 osilreader = new OSiLReader();
06087 osolreader = new OSoLReader();
06088 ipoptSolver->osinstance = osilreader->readOSiL( osil);
06089 ipoptSolver->osol = osol;
06090 cout << "call the IPOPT Solver" << endl;
06091 ipoptSolver->buildSolverInstance();
06092 ipoptSolver->solve();
06093 check = 9.46801e+07;
06094
06095 ok = ( fabs(check - getObjVal( ipoptSolver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
06096 if (ok)
06097 {
06098 #ifdef DEBUG
06099 cout << ipoptSolver->osrl << endl;
06100 #endif
06101 cout << "IPOPT solver solution for avion2 checks." << endl;
06102 }
06103 else
06104 { cout << "IPOPT solver solution for avion2 in error:" << endl;
06105 cout << ipoptSolver->osrl << endl;
06106 }
06107 if(ok == false) throw ErrorClass(" Fail unit test with Ipopt on avion2.osil");
06108 delete osilreader;
06109 osilreader = NULL;
06110 delete osolreader;
06111 osolreader = NULL;
06112 delete ipoptSolver;
06113 ipoptSolver = NULL;
06114 unitTestResult << "TEST " << nOfTest << ": Solved problem avion2.osil with Ipopt" << std::endl;
06115 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
06116 #endif
06117 }
06118 catch(const ErrorClass& eclass){
06119 unitTestResultFailure << "Sorry Unit Test Failed Testing the Ipopt Solver:" + eclass.errormsg<< endl;
06120 if (osilreader != NULL)
06121 delete osilreader;
06122 osilreader = NULL;
06123 if (osolreader != NULL)
06124 delete osolreader;
06125 osolreader = NULL;
06126 if (ipoptSolver != NULL)
06127 delete ipoptSolver;
06128 ipoptSolver = NULL;
06129 }
06130
06131 if(THOROUGH == true){
06132
06133 try{
06134 cout << endl << "TEST " << ++nOfTest << ": Ipopt solver with HS071_NLPMod.osil" << endl << endl;
06135 cout << "create a new IPOPT Solver for OSiL string solution" << endl;
06136 ipoptSolver = new IpoptSolver();
06137
06138 osilFileName = dataDir + "osilFiles" + dirsep + "HS071_NLPMod.osil";
06139 osolFileName = dataDir + "osolFiles" + dirsep + "HS071_NLPMod_ipopt.osol";
06140 osil = fileUtil->getFileAsString( osilFileName.c_str());
06141 osol = fileUtil->getFileAsString( osolFileName.c_str());
06142 cout << "IPOPT Solver created for OSiL string solution" << endl;
06143
06144 osilreader = new OSiLReader();
06145 osolreader = new OSoLReader();
06146 ipoptSolver->osinstance = osilreader->readOSiL( osil);
06147 ipoptSolver->osoption = osolreader->readOSoL( osol);
06148 ipoptSolver->osol = osol;
06149 ipoptSolver->buildSolverInstance();
06150 ipoptSolver->solve();
06151 cout << "Here is the IPOPT solver solution for HS071_NLP" << endl;
06152 check = 17.014;
06153
06154 ok = ( fabs(check - getObjVal( ipoptSolver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
06155 if (ok)
06156 {
06157 #ifdef DEBUG
06158 cout << ipoptSolver->osrl << endl;
06159 #endif
06160 cout << "IPOPT solver solution for HS071_NLP checks." << endl;
06161 }
06162 else
06163 { cout << "IPOPT solver solution for HS071_NLP in error:" << endl;
06164 cout << ipoptSolver->osrl << endl;
06165 }
06166 delete osilreader;
06167 osilreader = NULL;
06168 delete osolreader;
06169 osolreader = NULL;
06170 delete ipoptSolver;
06171 ipoptSolver = NULL;
06172 if(ok == false) throw ErrorClass(" Fail unit test with Ipopt on HS071_NLP.osil");
06173 unitTestResult << "TEST " << nOfTest << ": Solved problem HS071.osil with Ipopt" << std::endl;
06174 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
06175 }
06176 catch(const ErrorClass& eclass){
06177 unitTestResultFailure << "Sorry Unit Test Failed Testing the Ipopt Solver:" + eclass.errormsg<< endl;
06178 if (osilreader != NULL)
06179 delete osilreader;
06180 osilreader = NULL;
06181 if (osolreader != NULL)
06182 delete osolreader;
06183 osolreader = NULL;
06184 if (ipoptSolver != NULL)
06185 delete ipoptSolver;
06186 ipoptSolver = NULL;
06187 }
06188
06189 try{
06190 cout << endl << "TEST " << ++nOfTest << ": Ipopt solver on rosenbrockmod.osil" << endl << endl;
06191 cout << "create a new IPOPT Solver for OSiL string solution" << endl;
06192 ipoptSolver = new IpoptSolver();
06193
06194
06195 osilFileName = dataDir + "osilFiles" + dirsep + "rosenbrockmod.osil";
06196 osolFileName = dataDir + "osolFiles" + dirsep + "rosenbrockmod_ipopt.osol";
06197 osil = fileUtil->getFileAsString( osilFileName.c_str());
06198 osol = fileUtil->getFileAsString( osolFileName.c_str());
06199 cout << "IPOPT Solver created for OSiL string solution" << endl;
06200 osilreader = new OSiLReader();
06201 osolreader = new OSoLReader();
06202 ipoptSolver->osil = osil;
06203 ipoptSolver->osoption = osolreader->readOSoL( osol);
06204 cout << "call the IPOPT Solver" << endl;
06205 ipoptSolver->buildSolverInstance();
06206 ipoptSolver->solve();
06207 check = 6.7279;
06208
06209 ok = ( fabs(check - getObjVal( ipoptSolver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
06210 if (ok)
06211 {
06212 #ifdef DEBUG
06213 cout << ipoptSolver->osrl << endl;
06214 #endif
06215 cout << "Ipopt solver solution for rosenbrockmod checks." << endl;
06216 }
06217 else
06218 { cout << "Ipopt solver solution for rosenbrockmod in error:" << endl;
06219 cout << ipoptSolver->osrl << endl;
06220 }
06221 if(ok == false)
06222 throw ErrorClass(" Fail unit test with Ipopt on rosenbrockmod.osil");
06223 delete osilreader;
06224 osilreader = NULL;
06225 delete osolreader;
06226 osolreader = NULL;
06227 delete ipoptSolver;
06228 ipoptSolver = NULL;
06229 unitTestResult << "TEST " << nOfTest << ": Solved problem rosenbrockmod.osil with Ipopt" << std::endl;
06230 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
06231
06232 }
06233 catch(const ErrorClass& eclass){
06234 unitTestResultFailure << "Sorry Unit Test Failed Testing the Ipopt Solver:" + eclass.errormsg<< endl;
06235 if (osilreader != NULL)
06236 delete osilreader;
06237 osilreader = NULL;
06238 if (osolreader != NULL)
06239 delete osolreader;
06240 osolreader = NULL;
06241 if (ipoptSolver != NULL)
06242 delete ipoptSolver;
06243 ipoptSolver = NULL;
06244 }
06245
06246 try{
06247 cout << endl << "TEST " << ++nOfTest << ": Ipopt solver on parincQuadratic.osil" << endl << endl;
06248 cout << "create a new IPOPT Solver for OSiL string solution" << endl;
06249 ipoptSolver = new IpoptSolver();
06250
06251
06252 osilFileName = dataDir + "osilFiles" + dirsep + "parincQuadratic.osil";
06253 osolFileName = dataDir + "osolFiles" + dirsep + "parincQuadratic_ipopt.osol";
06254 osil = fileUtil->getFileAsString( osilFileName.c_str());
06255 osol = fileUtil->getFileAsString( osolFileName.c_str());
06256 cout << "IPOPT Solver created for OSiL string solution" << endl;
06257 osilreader = new OSiLReader();
06258 osolreader = new OSoLReader();
06259 ipoptSolver->osinstance = osilreader->readOSiL( osil);
06260 ipoptSolver->osil = osil;
06261 ipoptSolver->osol = osol;
06262 cout << "call the IPOPT Solver" << endl;
06263 ipoptSolver->buildSolverInstance();
06264 ipoptSolver->solve();
06265 check = 49920.5;
06266
06267 ok = ( fabs(check - getObjVal( ipoptSolver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
06268 if (ok)
06269 {
06270 #ifdef DEBUG
06271 cout << ipoptSolver->osrl << endl;
06272 #endif
06273 cout << "IPOPT solver solution for parincQuadratic checks." << endl;
06274 }
06275 else
06276 { cout << "IPOPT solver solution for parincQuadratic in error:" << endl;
06277 cout << ipoptSolver->osrl << endl;
06278 }
06279 if(ok == false) throw ErrorClass(" Fail unit test with Ipopt on parincQuadradic.osil");
06280 delete osilreader;
06281 osilreader = NULL;
06282 delete osolreader;
06283 osolreader = NULL;
06284 delete ipoptSolver;
06285 ipoptSolver = NULL;
06286 unitTestResult << "TEST " << nOfTest << ": Solved problem parincQuadratic.osil with Ipopt" << std::endl;
06287 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
06288 }
06289 catch(const ErrorClass& eclass){
06290 unitTestResultFailure << "Sorry Unit Test Failed Testing the Ipopt Solver:" + eclass.errormsg<< endl;
06291 if (osilreader != NULL)
06292 delete osilreader;
06293 osilreader = NULL;
06294 if (osolreader != NULL)
06295 delete osolreader;
06296 osolreader = NULL;
06297 if (ipoptSolver != NULL)
06298 delete ipoptSolver;
06299 ipoptSolver = NULL;
06300 }
06301
06302 try{
06303 cout << endl << "TEST " << ++nOfTest << ": Ipopt solver on parincLinear.osil" << endl << endl;
06304 cout << "create a new IPOPT Solver for OSiL string solution" << endl;
06305 ipoptSolver = new IpoptSolver();
06306
06307
06308 osilFileName = dataDir + "osilFiles" + dirsep + "parincLinear.osil";
06309 osolFileName = dataDir + "osolFiles" + dirsep + "parincLinear_ipopt.osol";
06310 osil = fileUtil->getFileAsString( osilFileName.c_str());
06311 osol = fileUtil->getFileAsString( osolFileName.c_str());
06312 cout << "IPOPT Solver created for OSiL string solution" << endl;
06313 osilreader = new OSiLReader();
06314 osolreader = new OSoLReader();
06315 ipoptSolver->osinstance = osilreader->readOSiL( osil);
06316 ipoptSolver->osoption = NULL;
06317 ipoptSolver->osol = "";
06318 cout << "call the IPOPT Solver" << endl;
06319 ipoptSolver->buildSolverInstance();
06320 ipoptSolver->solve();
06321 check = 7668;
06322
06323 ok = ( fabs(check - getObjVal( ipoptSolver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
06324 if (ok)
06325 {
06326 #ifdef DEBUG
06327 cout << ipoptSolver->osrl << endl;
06328 #endif
06329 cout << "IPOPT solver solution for parincLinear checks." << endl;
06330 }
06331 else
06332 { cout << "IPOPT solver solution for parincLinear in error:" << endl;
06333 cout << ipoptSolver->osrl << endl;
06334 }
06335 if(ok == false) throw ErrorClass(" Fail unit test with Ipopt on parincLinear.osil");
06336 delete osilreader;
06337 osilreader = NULL;
06338 delete osolreader;
06339 osolreader = NULL;
06340 delete ipoptSolver;
06341 ipoptSolver = NULL;
06342 unitTestResult << "TEST " << nOfTest << ": Solved problem parincLinear.osil with Ipopt" << std::endl;
06343 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
06344 }
06345 catch(const ErrorClass& eclass){
06346 unitTestResultFailure << "Sorry Unit Test Failed Testing the Ipopt Solver:" + eclass.errormsg<< endl;
06347 if (osilreader != NULL)
06348 delete osilreader;
06349 osilreader = NULL;
06350 if (osolreader != NULL)
06351 delete osolreader;
06352 osolreader = NULL;
06353 if (ipoptSolver != NULL)
06354 delete ipoptSolver;
06355 ipoptSolver = NULL;
06356 }
06357
06358 try{
06359 cout << endl << "TEST " << ++nOfTest << ": Ipopt solver on callBackTest.osil" << endl << endl;
06360 cout << "create a new IPOPT Solver for OSiL string solution" << endl;
06361 ipoptSolver = new IpoptSolver();
06362
06363
06364 osilFileName = dataDir + "osilFiles" + dirsep + "callBackTest.osil";
06365 osolFileName = dataDir + "osolFiles" + dirsep + "callBackTest_ipopt.osol";
06366 osil = fileUtil->getFileAsString( osilFileName.c_str());
06367 osol = fileUtil->getFileAsString( osolFileName.c_str());
06368 cout << "IPOPT Solver created for OSiL string solution" << endl;
06369 osilreader = new OSiLReader();
06370 osolreader = new OSoLReader();
06371 ipoptSolver->osinstance = osilreader->readOSiL( osil);
06372 ipoptSolver->osoption = osolreader->readOSoL( osol);
06373 ipoptSolver->osol = osol;
06374 cout << "call the IPOPT Solver" << endl;
06375 ipoptSolver->buildSolverInstance();
06376 ipoptSolver->solve();
06377 check = 1.00045e+06;
06378
06379 ok = ( fabs(check - getObjVal( ipoptSolver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
06380 if (ok)
06381 {
06382 #ifdef DEBUG
06383 cout << ipoptSolver->osrl << endl;
06384 #endif
06385 cout << "IPOPT solver solution for callBackTest checks." << endl;
06386 }
06387 else
06388 { cout << "IPOPT solver solution for callBackTest in error:" << endl;
06389 cout << ipoptSolver->osrl << endl;
06390 }
06391 if(ok == false) throw ErrorClass(" Fail unit test with Ipopt on callBackTest.osil");
06392 delete osilreader;
06393 osilreader = NULL;
06394 delete osolreader;
06395 osolreader = NULL;
06396 delete ipoptSolver;
06397 ipoptSolver = NULL;
06398 unitTestResult << "TEST " << nOfTest << ": Solved problem callBackTest.osil with Ipopt" << std::endl;
06399 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
06400 }
06401 catch(const ErrorClass& eclass){
06402 unitTestResultFailure << "Sorry Unit Test Failed Testing the Ipopt Solver:" + eclass.errormsg<< endl;
06403 if (osilreader != NULL)
06404 delete osilreader;
06405 osilreader = NULL;
06406 if (osolreader != NULL)
06407 delete osolreader;
06408 osolreader = NULL;
06409 if (ipoptSolver != NULL)
06410 delete ipoptSolver;
06411 ipoptSolver = NULL;
06412 }
06413
06414 try{
06415 cout << endl << "TEST " << ++nOfTest << ": Ipopt solver on callBackTestRowMajor.osil" << endl << endl;
06416 cout << "create a new IPOPT Solver for OSiL string solution" << endl;
06417 ipoptSolver = new IpoptSolver();
06418
06419
06420 osilFileName = dataDir + "osilFiles" + dirsep + "callBackTestRowMajor.osil";
06421 osolFileName = dataDir + "osolFiles" + dirsep + "callBackTestRowMajor_ipopt.osol";
06422 osil = fileUtil->getFileAsString( osilFileName.c_str());
06423 osol = fileUtil->getFileAsString( osolFileName.c_str());
06424 cout << "IPOPT Solver created for OSiL string solution" << endl;
06425 osilreader = new OSiLReader();
06426 osolreader = new OSoLReader();
06427 ipoptSolver->osinstance = NULL;
06428 ipoptSolver->osoption = NULL;
06429 ipoptSolver->osil = osil;
06430 ipoptSolver->osol = osol;
06431 cout << "call the IPOPT Solver" << endl;
06432
06433 ipoptSolver->solve();
06434 check = 1.00045e+06;
06435
06436 ok = ( fabs(check - getObjVal( ipoptSolver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
06437 if (ok)
06438 {
06439 #ifdef DEBUG
06440 cout << ipoptSolver->osrl << endl;
06441 #endif
06442 cout << "IPOPT solver solution for callBackTestRowMajor checks." << endl;
06443 }
06444 else
06445 { cout << "IPOPT solver solution for callBackTestRowMajor in error:" << endl;
06446 cout << ipoptSolver->osrl << endl;
06447 }
06448 if(ok == false) throw ErrorClass(" Fail unit test with Ipopt on callBackTestRowMajor.osil");
06449 delete osilreader;
06450 osilreader = NULL;
06451 delete osolreader;
06452 osolreader = NULL;
06453 delete ipoptSolver;
06454 ipoptSolver = NULL;
06455 unitTestResult << "TEST " << nOfTest << ": Solved problem callBackRowMajor.osil with Ipopt" << std::endl;
06456 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
06457 }
06458 catch(const ErrorClass& eclass){
06459 unitTestResultFailure << "Sorry Unit Test Failed Testing the Ipopt Solver:" + eclass.errormsg<< endl;
06460 if (osilreader != NULL)
06461 delete osilreader;
06462 osilreader = NULL;
06463 if (osolreader != NULL)
06464 delete osolreader;
06465 osolreader = NULL;
06466 if (ipoptSolver != NULL)
06467 delete ipoptSolver;
06468 ipoptSolver = NULL;
06469 }
06470
06471 try{
06472 cout << endl << "TEST " << ++nOfTest << ": Ipopt solver on rosenbrockorig.osil" << endl << endl;
06473
06474 osilreader = new OSiLReader();
06475 osolreader = new OSoLReader();
06476 ok = true;
06477 osilFileName = dataDir + "osilFiles" + dirsep + "rosenbrockorig.osil";
06478
06479 osil = fileUtil->getFileAsString( osilFileName.c_str());
06480
06481 osol = "";
06482 ipoptSolver = new IpoptSolver();
06483 ipoptSolver->sSolverName = "ipopt";
06484 ipoptSolver->osil = osil;
06485 ipoptSolver->osol = osol;
06486
06487
06488 cout << "call the COIN - Ipopt Solver for rosenbrockorig" << endl;
06489 cout << endl << endl << osil << endl << endl;
06490 ipoptSolver->buildSolverInstance();
06491
06492 cout << ipoptSolver->osinstance->printModel() << endl << endl;
06493
06494
06495 std::cout << " CALL SOLVE " << std::endl;
06496 ipoptSolver->solve();
06497 check = 0;
06498 ok = ( fabs(check - getObjVal( ipoptSolver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
06499 if (ok)
06500 {
06501 #ifdef DEBUG
06502 cout << ipoptSolver->osrl << endl;
06503 #endif
06504 cout << "Ipopt solver solution for rosenbrockorig checks." << endl;
06505 }
06506 else
06507 { cout << "Ipopt solver solution for rosenbrockorig in error:" << endl;
06508 cout << ipoptSolver->osrl << endl;
06509 }
06510 if(ok == false) throw ErrorClass(" Fail unit test with Ipopt on rosenbrockorig.osil");
06511
06512 delete ipoptSolver;
06513 ipoptSolver = NULL;
06514 delete osilreader;
06515 osilreader = NULL;
06516 delete osolreader;
06517 osolreader = NULL;
06518 unitTestResult << "TEST " << nOfTest << ": Solved problem rosenbrockorig.osil with Ipopt" << std::endl;
06519 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
06520 }
06521 catch(const ErrorClass& eclass){
06522 unitTestResultFailure << "Sorry Unit Test Failed Testing the Ipopt Solver:" + eclass.errormsg<< endl;
06523 if (osilreader != NULL)
06524 delete osilreader;
06525 osilreader = NULL;
06526 if (osolreader != NULL)
06527 delete osolreader;
06528 osolreader = NULL;
06529 if (ipoptSolver != NULL)
06530 delete ipoptSolver;
06531 ipoptSolver = NULL;
06532 }
06533
06534 try{
06535 cout << endl << "TEST " << ++nOfTest << ": Ipopt solver on HS071_feas.osil" << endl << endl;
06536 try {
06537
06538
06539 ok = true;
06540 osilFileName = dataDir + "osilFiles" + dirsep + "HS071_feas.osil";
06541
06542 osil = fileUtil->getFileAsString( osilFileName.c_str());
06543
06544 osol = "";
06545 ipoptSolver = new IpoptSolver();
06546 ipoptSolver->sSolverName = "ipopt";
06547 ipoptSolver->osil = osil;
06548 ipoptSolver->osol = osol;
06549
06550
06551 ipoptSolver->buildSolverInstance();
06552
06553 cout << "call the COIN - Ipopt Solver for HS071_feas.osil" << endl;
06554 ipoptSolver->solve();
06555 }
06556 catch(const ErrorClass& eclass)
06557 {
06558 ok = (ipoptSolver->osresult->getGeneralMessage() == "Ipopt NEEDS AN OBJECTIVE FUNCTION");
06559 if(ok == false)
06560 { cout << "Ipopt solver returns:" << endl;
06561 cout << ipoptSolver->osrl << endl;
06562 throw ErrorClass(" Fail unit test with Ipopt on HS071_feas.osil");
06563 }
06564 }
06565
06566 cout << "Received error message from Ipopt: \"Ipopt NEEDS AN OBJECTIVE FUNCTION\"" << endl;
06567
06568 delete ipoptSolver;
06569 ipoptSolver = NULL;
06570
06571 osilreader = NULL;
06572
06573 osolreader = NULL;
06574
06575 unitTestResult << "TEST " << nOfTest << ": Correctly diagnosed problem HS071_feas with Ipopt" << std::endl;
06576 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
06577 }
06578 catch(const ErrorClass& eclass){
06579 unitTestResultFailure << "Sorry Unit Test Failed Testing the Ipopt Solver:" + eclass.errormsg<< endl;
06580 if (osilreader != NULL)
06581 delete osilreader;
06582 osilreader = NULL;
06583 if (osolreader != NULL)
06584 delete osolreader;
06585 osolreader = NULL;
06586 if (ipoptSolver != NULL)
06587 delete ipoptSolver;
06588 ipoptSolver = NULL;
06589 }
06590 }
06591 #endif // end of #ifdef COIN_HAS_IPOPT
06592
06593
06594 #ifdef COIN_HAS_BONMIN
06595 try{
06596 cout << endl << "TEST " << ++nOfTest << ": Bonmin solver on bonminEx1.osil" << endl << endl;
06597
06598 osilreader = new OSiLReader();
06599 osolreader = new OSoLReader();
06600 ok = true;
06601 osilFileName = dataDir + "osilFiles" + dirsep + "bonminEx1.osil";
06602 osolFileName = dataDir + "osolFiles" + dirsep + "bonminEx1_Bonmin.osol";
06603 osil = fileUtil->getFileAsString( osilFileName.c_str());
06604 osol = fileUtil->getFileAsString( osolFileName.c_str());
06605 solver = new BonminSolver();
06606
06607
06608 solver->osil = osil;
06609 solver->osoption = osolreader->readOSoL( osol);
06610 cout << "call the COIN - Bonmin Solver for bonminEx1" << endl;
06611
06612 solver->solve();
06613 check = -17.07106795327683;
06614
06615 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
06616 if (ok)
06617 {
06618 #ifdef DEBUG
06619 cout << solver->osrl << endl;
06620 #endif
06621 cout << "Bonmin solver solution for bonminEx1 checks." << endl;
06622 }
06623 else
06624 { cout << "Bonmin solver solution for bonminEx1 in error:" << endl;
06625 cout << solver->osrl << endl;
06626 }
06627 if(ok == false) throw ErrorClass(" Fail unit test with Bonmin on bonminEx1.osil");
06628 delete solver;
06629 solver = NULL;
06630 delete osilreader;
06631 osilreader = NULL;
06632 delete osolreader;
06633 osolreader = NULL;
06634 unitTestResult << "TEST " << nOfTest << ": Solved problem bonminEx1.osil with Bonmin" << std::endl;
06635 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
06636 }
06637 catch(const ErrorClass& eclass){
06638 unitTestResultFailure << "Sorry Unit Test Failed Testing the Bonmin Solver:" + eclass.errormsg << endl;
06639 if (solver != NULL)
06640 delete solver;
06641 solver = NULL;
06642 if (osilreader != NULL)
06643 delete osilreader;
06644 osilreader = NULL;
06645 if (osolreader != NULL)
06646 delete osolreader;
06647 osolreader = NULL;
06648 }
06649
06650 if (THOROUGH == true){
06651 try{
06652 cout << endl << "TEST " << ++nOfTest << ": Bonmin solver on wayneQuadratic.osil" << endl << endl;
06653 ok = true;
06654 osilFileName = dataDir + "osilFiles" + dirsep + "wayneQuadratic.osil";
06655 osolFileName = dataDir + "osolFiles" + dirsep + "wayneQuadratic_Bonmin1.osol";
06656 osil = fileUtil->getFileAsString( osilFileName.c_str());
06657 osol = fileUtil->getFileAsString( osolFileName.c_str());
06658 osilreader = new OSiLReader();
06659 solver = new BonminSolver();
06660 solver->osol = osol;
06661 solver->osinstance = osilreader->readOSiL( osil);
06662 cout << "call the Bonmin Solver for wayneQuadratic" << endl;
06663 solver->buildSolverInstance();
06664
06665 solver->solve();
06666 check = 2.925;
06667
06668 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
06669 if (ok)
06670 {
06671 #ifdef DEBUG
06672 cout << solver->osrl << endl;
06673 #endif
06674 cout << "Bonmin solver solution for wayneQuadratic checks." << endl;
06675 }
06676 else
06677 { cout << "Bonmin solver solution for wayneQuadratic in error:" << endl;
06678 cout << solver->osrl << endl;
06679 }
06680 if(ok == false) throw ErrorClass(" Fail unit test with Bonmin on wayneQuadratic.osil");
06681 delete solver;
06682 solver = NULL;
06683 delete osilreader;
06684 osilreader = NULL;
06685 unitTestResult << "TEST " << nOfTest << ": Solved problem wayneQuadratic.osil with Bonmin" << std::endl;
06686 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
06687 }
06688 catch(const ErrorClass& eclass){
06689 unitTestResultFailure << "Sorry Unit Test Failed Testing the Bonmin Solver:" + eclass.errormsg << endl;
06690 if (solver != NULL)
06691 delete solver;
06692 solver = NULL;
06693 if (osilreader != NULL)
06694 delete osilreader;
06695 osilreader = NULL;
06696 }
06697
06698 try{
06699 cout << endl << "TEST " << ++nOfTest << ": Bonmin solver on wayneQuadratic.osil" << endl << endl;
06700 ok = true;
06701 osilFileName = dataDir + "osilFiles" + dirsep + "wayneQuadratic.osil";
06702 osolFileName = dataDir + "osolFiles" + dirsep + "wayneQuadratic_Bonmin2.osol";
06703 osil = fileUtil->getFileAsString( osilFileName.c_str());
06704 osol = fileUtil->getFileAsString( osolFileName.c_str());
06705 osilreader = new OSiLReader();
06706 osolreader = new OSoLReader();
06707 solver = new BonminSolver();
06708 solver->osol = osol;
06709 solver->osinstance = osilreader->readOSiL( osil);
06710 solver->osoption = osolreader->readOSoL( osol);
06711 cout << "call the Bonmin Solver for wayneQuadratic" << endl;
06712 solver->buildSolverInstance();
06713
06714 solver->solve();
06715 check = 2.925;
06716
06717 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
06718 if (ok)
06719 {
06720 #ifdef DEBUG
06721 cout << solver->osrl << endl;
06722 #endif
06723 cout << "Bonmin solver solution for wayneQuadratic checks." << endl;
06724 }
06725 else
06726 { cout << "Bonmin solver solution for wayneQuadratic in error:" << endl;
06727 cout << solver->osrl << endl;
06728 }
06729 if(ok == false) throw ErrorClass(" Fail unit test with Bonmin on wayneQuadratic.osil");
06730 delete solver;
06731 solver = NULL;
06732 delete osilreader;
06733 osilreader = NULL;
06734 delete osolreader;
06735 osolreader = NULL;
06736 unitTestResult << "TEST " << nOfTest << ": Solved problem wayneQuadratic.osil with Bonmin" << std::endl;
06737 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
06738 }
06739 catch(const ErrorClass& eclass){
06740 unitTestResultFailure << "Sorry Unit Test Failed Testing the Bonmin Solver:" + eclass.errormsg << endl;
06741 if (solver != NULL)
06742 delete solver;
06743 solver = NULL;
06744 if (osilreader != NULL)
06745 delete osilreader;
06746 osilreader = NULL;
06747 if (osolreader != NULL)
06748 delete osolreader;
06749 osolreader = NULL;
06750 }
06751
06752 try{
06753 cout << endl << "TEST " << ++nOfTest << ": Bonmin solver on rosenbrockorig.osil" << endl << endl;
06754 ok = true;
06755 osilFileName = dataDir + "osilFiles" + dirsep + "rosenbrockorig.osil";
06756 osil = fileUtil->getFileAsString( osilFileName.c_str());
06757
06758 osilreader = new OSiLReader();
06759
06760 solver = new BonminSolver();
06761 solver->osol = "";
06762 solver->osinstance = osilreader->readOSiL( osil);
06763
06764 cout << "build solver instance" << endl;
06765 solver->buildSolverInstance();
06766 cout << "call the Bonmin Solver for rosenbrockorig" << endl;
06767 solver->solve();
06768 check = 0;
06769 cout << "Verify solution" <<endl;
06770
06771 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
06772 if (ok)
06773 {
06774 #ifdef DEBUG
06775 cout << solver->osrl << endl;
06776 #endif
06777 cout << "Bonmin solver solution for rosenbrockorig checks." << endl;
06778 }
06779 else
06780 { cout << "Bonmin solver solution for rosenbrockorig in error:" << endl;
06781 cout << solver->osrl << endl;
06782 }
06783 if(ok == false) throw ErrorClass(" Fail unit test with Bonmin on rosenbrockorig.osil");
06784 delete solver;
06785 solver = NULL;
06786 delete osilreader;
06787 osilreader = NULL;
06788 delete osolreader;
06789 osolreader = NULL;
06790 unitTestResult << "TEST " << nOfTest << ": Solved problem rosenbrockorig.osil with Bonmin" << std::endl;
06791 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
06792 }
06793 catch(const ErrorClass& eclass){
06794 unitTestResultFailure << "Sorry Unit Test Failed Testing the Bonmin Solver:" + eclass.errormsg << endl;
06795 if (solver != NULL)
06796 delete solver;
06797 solver = NULL;
06798 if (osilreader != NULL)
06799 delete osilreader;
06800 osilreader = NULL;
06801 if (osolreader != NULL)
06802 delete osolreader;
06803 osolreader = NULL;
06804 }
06805
06806 try{
06807 cout << endl << "TEST " << ++nOfTest << ": Bonmin solver on rosenbrockorigInt.osil" << endl << endl;
06808 ok = true;
06809 osilFileName = dataDir + "osilFiles" + dirsep + "rosenbrockorigInt.osil";
06810
06811 osil = fileUtil->getFileAsString( osilFileName.c_str());
06812
06813 osilreader = new OSiLReader();
06814
06815 solver = new BonminSolver();
06816 solver->osol = "";
06817 solver->osinstance = osilreader->readOSiL( osil);
06818
06819 cout << "call the Bonmin Solver for rosenbrockinteger" << endl;
06820 solver->buildSolverInstance();
06821 solver->solve();
06822 check = 0;
06823 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
06824 if (ok)
06825 {
06826 #ifdef DEBUG
06827 cout << solver->osrl << endl;
06828 #endif
06829 cout << "Bonmin solver solution for rosenbrockorigInt checks." << endl;
06830 }
06831 else
06832 { cout << "Bonmin solver solution for rosenbrockorigInt in error:" << endl;
06833 cout << solver->osrl << endl;
06834 }
06835 if(ok == false) throw ErrorClass(" Fail unit test with Bonmin on rosenbrockorigInt.osil");
06836 delete solver;
06837 solver = NULL;
06838 delete osilreader;
06839 osilreader = NULL;
06840 delete osolreader;
06841 osolreader = NULL;
06842 unitTestResult << "TEST " << nOfTest << ": Solved problem rosenbrockorigInt.osil with Bonmin" << std::endl;
06843 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
06844 }
06845 catch(const ErrorClass& eclass){
06846 unitTestResultFailure << "Sorry Unit Test Failed Testing the Bonmin Solver:" + eclass.errormsg << endl;
06847 if (solver != NULL)
06848 delete solver;
06849 solver = NULL;
06850 if (osilreader != NULL)
06851 delete osilreader;
06852 osilreader = NULL;
06853 if (osolreader != NULL)
06854 delete osolreader;
06855 osolreader = NULL;
06856 }
06857 }
06858 #endif // end of #ifdef COIN_HAS_BONMIN
06859
06860
06861
06862 #ifdef COIN_HAS_COUENNE
06863 try{
06864 cout << endl << "TEST " << ++nOfTest << ": Couenne solver on bonminEx1.osil" << endl << endl;
06865 CouenneSolver *solver = NULL;
06866
06867
06868 osilreader = new OSiLReader();
06869 osolreader = new OSoLReader();
06870 ok = true;
06871 osilFileName = dataDir + "osilFiles" + dirsep + "bonminEx1.osil";
06872 osolFileName = dataDir + "osolFiles" + dirsep + "bonminEx1_Couenne.osol";
06873 osil = fileUtil->getFileAsString( osilFileName.c_str());
06874 osol = fileUtil->getFileAsString( osolFileName.c_str());
06875 solver = new CouenneSolver();
06876 solver->sSolverName = "bonmin";
06877 solver->osil = osil;
06878 solver->osol = osol;
06879
06880
06881 cout << "call the COIN - Couenne Solver for bonminEx1" << endl;
06882 solver->buildSolverInstance();
06883
06884 std::cout << " CALL SOLVE " << std::endl;
06885 solver->solve();
06886
06887 check = -17.07106795327683;
06888
06889 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
06890 if (ok)
06891 {
06892 #ifdef DEBUG
06893 cout << solver->osrl << endl;
06894 #endif
06895 cout << "Couenne solver solution for bonminEx1 checks." << endl;
06896 }
06897 else
06898 { cout << "Couenne solver solution for bonminEx1 in error:" << endl;
06899 cout << solver->osrl << endl;
06900 }
06901 if(ok == false) throw ErrorClass(" Fail unit test with Couenne on bonminEx1.osil");
06902
06903 delete solver;
06904 solver = NULL;
06905 delete osilreader;
06906 osilreader = NULL;
06907 delete osolreader;
06908 osolreader = NULL;
06909 unitTestResult << "TEST " << nOfTest << ": Solved problem bonminEx1.osil with Couenne" << std::endl;
06910 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
06911 }
06912 catch(const ErrorClass& eclass){
06913 cout << "OSrL = " << solver->osrl << endl;
06914 cout << endl << endl << endl;
06915 unitTestResultFailure << "Sorry Unit Test Failed Testing the Couenne Solver:" + eclass.errormsg << endl;
06916 if (solver != NULL)
06917 delete solver;
06918
06919 solver = NULL;
06920 if (osilreader != NULL)
06921 delete osilreader;
06922 osilreader = NULL;
06923 if (osolreader != NULL)
06924 delete osolreader;
06925 osolreader = NULL;
06926 }
06927
06928 if( THOROUGH == true){
06929 try{
06930 cout << endl << "TEST " << ++nOfTest << ": Couenne solver on bonminEx1_Nonlinear.osil" << endl << endl;
06931
06932 osilreader = new OSiLReader();
06933 osolreader = new OSoLReader();
06934 ok = true;
06935 osilFileName = dataDir + "osilFiles" + dirsep + "bonminEx1_Nonlinear.osil";
06936
06937 osil = fileUtil->getFileAsString( osilFileName.c_str());
06938
06939 osol = "";
06940 solver = new CouenneSolver();
06941 solver->osil = osil;
06942 solver->osol = osol;
06943
06944
06945 cout << "call the COIN - Couenne Solver for bonminEx1_Nonlinear" << endl;
06946 solver->buildSolverInstance();
06947
06948 std::cout << " CALL SOLVE " << std::endl;
06949 solver->solve();
06950
06951 check = -1.707107;
06952
06953 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
06954 if (ok)
06955 {
06956 #ifdef DEBUG
06957 cout << solver->osrl << endl;
06958 #endif
06959 cout << "Couenne solver solution for bonminEx1_Nonlinear checks." << endl;
06960 }
06961 else
06962 { cout << "Couenne solver solution for bonminEx1_Nonlinear in error:" << endl;
06963 cout << solver->osrl << endl;
06964 }
06965 if(ok == false) throw ErrorClass(" Fail unit test with Couenne on bonminEx1_Nonlinear.osil");
06966
06967 delete solver;
06968 solver = NULL;
06969 delete osilreader;
06970 osilreader = NULL;
06971 delete osolreader;
06972 osolreader = NULL;
06973 unitTestResult << "TEST " << nOfTest << ": Solved problem bonminEx1_Nonlinear with Couenne" << std::endl;
06974 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
06975 }
06976 catch(const ErrorClass& eclass){
06977 unitTestResultFailure << "Sorry Unit Test Failed Testing the Couenne Solver:" + eclass.errormsg << endl;
06978 if (solver != NULL)
06979 delete solver;
06980 solver = NULL;
06981 if (osilreader != NULL)
06982 delete osilreader;
06983 osilreader = NULL;
06984 if (osolreader != NULL)
06985 delete osolreader;
06986 osolreader = NULL;
06987 }
06988
06989 try{
06990 cout << endl << "TEST " << ++nOfTest << ": Couenne solver on nonconvex.osil" << endl << endl;
06991
06992 osilreader = new OSiLReader();
06993 osolreader = new OSoLReader();
06994 ok = true;
06995 osilFileName = dataDir + "osilFiles" + dirsep + "nonconvex.osil";
06996
06997 osil = fileUtil->getFileAsString( osilFileName.c_str());
06998
06999 osol = "";
07000 solver = new CouenneSolver();
07001 solver->osil = osil;
07002 solver->osol = osol;
07003
07004
07005 cout << "call the COIN - Couenne Solver for nonconvex.osil" << endl;
07006 solver->buildSolverInstance();
07007
07008 std::cout << " CALL SOLVE " << std::endl;
07009 solver->solve();
07010
07011 check = -6.551133;
07012
07013 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
07014 if (ok)
07015 {
07016 #ifdef DEBUG
07017 cout << solver->osrl << endl;
07018 #endif
07019 cout << "Couenne solver solution for nonconvex.osil checks." << endl;
07020 }
07021 else
07022 { cout << "Couenne solver solution for nonconvex.osil in error:" << endl;
07023 cout << solver->osrl << endl;
07024 }
07025 if(ok == false) throw ErrorClass(" Fail unit test with Couenne on nonconvex.osil");
07026
07027 delete solver;
07028 solver = NULL;
07029 delete osilreader;
07030 osilreader = NULL;
07031 delete osolreader;
07032 osolreader = NULL;
07033 unitTestResult << "TEST " << nOfTest << ": Solved problem nonconvex.osil with Couenne" << std::endl;
07034 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
07035 }
07036 catch(const ErrorClass& eclass){
07037 unitTestResultFailure << "Sorry Unit Test Failed Testing the Couenne Solver:" + eclass.errormsg << endl;
07038 if (solver != NULL)
07039 delete solver;
07040 solver = NULL;
07041 if (osilreader != NULL)
07042 delete osilreader;
07043 osilreader = NULL;
07044 if (osolreader != NULL)
07045 delete osolreader;
07046 osolreader = NULL;
07047 }
07048
07049 try{
07050 cout << endl << "TEST " << ++nOfTest << ": Couenne solver on rosenbrockorig.osil" << endl << endl;
07051
07052 osilreader = new OSiLReader();
07053 osolreader = new OSoLReader();
07054 ok = true;
07055 osilFileName = dataDir + "osilFiles" + dirsep + "rosenbrockorig.osil";
07056
07057 osil = fileUtil->getFileAsString( osilFileName.c_str());
07058
07059 osol = "";
07060 solver = new CouenneSolver();
07061 solver->osil = osil;
07062 solver->osol = osol;
07063
07064
07065 cout << "call the COIN - Couenne Solver for rosenbrockorig" << endl;
07066 solver->buildSolverInstance();
07067
07068 std::cout << " CALL SOLVE " << std::endl;
07069 solver->solve();
07070
07071 check = 0;
07072
07073 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
07074 if (ok)
07075 {
07076 #ifdef DEBUG
07077 cout << solver->osrl << endl;
07078 #endif
07079 cout << "Couenne solver solution for rosenbrockorig checks." << endl;
07080 }
07081 else
07082 { cout << "Couenne solver solution for rosenbrockorig in error:" << endl;
07083 cout << solver->osrl << endl;
07084 }
07085 if(ok == false) throw ErrorClass(" Fail unit test with Couenne on rosenbrockorig.osil");
07086
07087 delete solver;
07088 solver = NULL;
07089 delete osilreader;
07090 osilreader = NULL;
07091 delete osolreader;
07092 osolreader = NULL;
07093 unitTestResult << "TEST " << nOfTest << ": Solved problem rosenbrockorig.osil with Couenne" << std::endl;
07094 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
07095 }
07096 catch(const ErrorClass& eclass){
07097 unitTestResultFailure << "Sorry Unit Test Failed Testing the Couenne Solver:" + eclass.errormsg << endl;
07098 if (solver != NULL)
07099 delete solver;
07100 solver = NULL;
07101 if (osilreader != NULL)
07102 delete osilreader;
07103 osilreader = NULL;
07104 if (osolreader != NULL)
07105 delete osolreader;
07106 osolreader = NULL;
07107 }
07108
07109 try{
07110 cout << endl << "TEST " << ++nOfTest << ": Couenne solver on wayneQuadratic.osil" << endl << endl;
07111
07112 osilreader = new OSiLReader();
07113 osolreader = new OSoLReader();
07114 ok = true;
07115 osilFileName = dataDir + "osilFiles" + dirsep + "wayneQuadratic.osil";
07116
07117
07118 osil = fileUtil->getFileAsString( osilFileName.c_str());
07119
07120 osol = "";
07121 solver = new CouenneSolver();
07122 solver->osinstance = NULL;
07123 solver->osil = osil;
07124 solver->osol = osol;
07125
07126
07127 cout << "call the COIN - Couenne Solver for wayneQuadraticr" << endl;
07128
07129 std::cout << " CALL SOLVE " << std::endl;
07130 solver->buildSolverInstance();
07131 solver->setSolverOptions();
07132 solver->solve();
07133 check = 2.925;
07134
07135 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
07136 if (ok)
07137 {
07138 #ifdef DEBUG
07139 cout << solver->osrl << endl;
07140 #endif
07141 cout << "Couenne solver solution for wayneQuadratic checks." << endl;
07142 }
07143 else
07144 { cout << "Couenne solver solution for wayneQuadratic in error:" << endl;
07145 cout << solver->osrl << endl;
07146 }
07147 if(ok == false) throw ErrorClass(" Fail unit test with Couenne on rosenbrockinteger.osil");
07148
07149 delete solver;
07150 solver = NULL;
07151 delete osilreader;
07152 osilreader = NULL;
07153 delete osolreader;
07154 osolreader = NULL;
07155 unitTestResult << "TEST " << nOfTest << ": Solved problem wayneQuadratic.osil with Couenne" << std::endl;
07156 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
07157 }
07158 catch(const ErrorClass& eclass){
07159 unitTestResultFailure << "Sorry Unit Test Failed Testing the Couenne Solver:" + eclass.errormsg << endl;
07160 if (solver != NULL)
07161 delete solver;
07162 solver = NULL;
07163 if (osilreader != NULL)
07164 delete osilreader;
07165 osilreader = NULL;
07166 if (osolreader != NULL)
07167 delete osolreader;
07168 osolreader = NULL;
07169 }
07170
07171 OSrLWriter *tmp_writer = NULL;
07172 try{
07173 cout << endl << "TEST " << ++nOfTest << ": Couenne solver on wayneQuadratic.osil" << endl << endl;
07174
07175 osilreader = new OSiLReader();
07176 osolreader = new OSoLReader();
07177 ok = true;
07178 osilFileName = dataDir + "osilFiles" + dirsep + "wayneQuadratic.osil";
07179 osolFileName = dataDir + "osolFiles" + dirsep + "wayneQuadratic_Couenne.osol";
07180 osil = fileUtil->getFileAsString( osilFileName.c_str());
07181 osol = fileUtil->getFileAsString( osolFileName.c_str());
07182 solver = new CouenneSolver();
07183 solver->osil = osil;
07184 solver->osol = osol;
07185 cout << "call the COIN - Couenne Solver for wayneQuadratic.osil" << endl;
07186 solver->buildSolverInstance();
07187
07188 std::cout << " CALL SOLVE " << std::endl;
07189 solver->solve();
07190
07191 cout << "Here is the Couenne solver solution for wayneQuadratic" << endl;
07192
07193
07194 tmp_writer = new OSrLWriter();
07195 solver->osrl = tmp_writer->writeOSrL(solver->osresult);
07196 delete tmp_writer;
07197 tmp_writer = NULL;
07198
07199 string::size_type pos;
07200 pos = solver->osrl.find( "LIMIT_EXCEEDED[COUENNE]");
07201 if(pos == std::string::npos)
07202 {
07203 cout << solver->osrl << endl << endl;
07204 throw ErrorClass(" Error with wayneQuadratic running on Couenne");
07205 }
07206 #ifdef DEBUG
07207 else
07208 {
07209 cout << solver->osrl << endl << endl;
07210 }
07211 #endif
07212 delete solver;
07213 solver = NULL;
07214 delete osilreader;
07215 osilreader = NULL;
07216 delete osolreader;
07217 osolreader = NULL;
07218 unitTestResult << "TEST " << nOfTest << ": Solved problem wayneQuadratic with Couenne" << std::endl;
07219 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
07220 }
07221 catch(const ErrorClass& eclass){
07222 unitTestResultFailure << "Sorry Unit Test Failed Testing the Couenne Solver:" + eclass.errormsg << endl;
07223 if (solver != NULL)
07224 delete solver;
07225 solver = NULL;
07226 if (osilreader != NULL)
07227 delete osilreader;
07228 osilreader = NULL;
07229 if (osolreader != NULL)
07230 delete osolreader;
07231 osolreader = NULL;
07232 }
07233 }
07234 #endif // end of #ifdef COIN_HAS_COUENNE
07235
07236
07237
07238 #ifdef COIN_HAS_LINDO
07239 try{
07240 cout << endl << "TEST " << ++nOfTest << ": Lindo solver on lindoapiaddins.osil" << endl << endl;
07241 ok = true;
07242 osilFileName = dataDir + "osilFiles" + dirsep + "lindoapiaddins.osil";
07243 osolFileName = dataDir + "osolFiles" + dirsep + "lindoapiaddins_lindo.osol";
07244 osil = fileUtil->getFileAsString( osilFileName.c_str());
07245 osol = fileUtil->getFileAsString( osolFileName.c_str());
07246 osilreader = new OSiLReader();
07247 cout << "create a new LINDO Solver for OSiL string solution" << endl;
07248 solver = new LindoSolver();
07249 solver->osinstance = osilreader->readOSiL( osil);
07250 solver->osol = osol;
07251 cout << "call the LINDO Solver" << endl;
07252 solver->buildSolverInstance();
07253 solver->solve();
07254 check = 99;
07255
07256 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
07257 if (ok)
07258 {
07259 #ifdef DEBUG
07260 cout << solver->osrl << endl;
07261 #endif
07262 cout << "LINDO solver solution for lindoapiaddins checks." << endl;
07263 }
07264 else
07265 { cout << "LINDO solver solution for lindoapiaddins in error:" << endl;
07266 cout << solver->osrl << endl;
07267 }
07268 if(ok == false) throw ErrorClass(" Fail unit test with LINDO on lindoapiaddins.osil");
07269 solver->osinstance = NULL;
07270 delete solver;
07271 solver = NULL;
07272 delete osilreader;
07273 osilreader = NULL;
07274 unitTestResult << "TEST " << nOfTest << ": Solved problem lindoapiaddins.osil with Lindo" << std::endl;
07275 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
07276 }
07277 catch(const ErrorClass& eclass){
07278
07279 cout << endl << endl << endl;
07280 unitTestResultFailure <<"Sorry Unit Test Failed Testing the LINDO Solver:" + eclass.errormsg << endl << endl;
07281 if (solver != NULL)
07282 delete solver;
07283 solver = NULL;
07284 if (osilreader != NULL)
07285 delete osilreader;
07286 osilreader = NULL;
07287 }
07288
07289 if (THOROUGH == true){
07290 try{
07291
07292 cout << endl << "TEST " << ++nOfTest << ": Lindo solver on rosenbrockmod.osil" << endl << endl;
07293 osilFileName = dataDir + "osilFiles" + dirsep + "rosenbrockmod.osil";
07294 osolFileName = dataDir + "osolFiles" + dirsep + "rosenbrockmod_lindo.osol";
07295 osil = fileUtil->getFileAsString( osilFileName.c_str());
07296 osol = fileUtil->getFileAsString( osolFileName.c_str());
07297 solver = new LindoSolver();
07298 solver->osil = osil;
07299 solver->osol = osol;
07300 solver->osinstance = NULL;
07301 cout << "call the LINDO Solver" << endl;
07302 solver->buildSolverInstance();
07303 solver->solve();
07304 check = 6.7279;
07305
07306 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
07307 if (ok)
07308 {
07309 #ifdef DEBUG
07310 cout << solver->osrl << endl;
07311 #endif
07312 cout << "LINDO solver solution for rosenbrockmod checks." << endl;
07313 }
07314 else
07315 { cout << "LINDO solver solution for rosenbrockmod in error:" << endl;
07316 cout << solver->osrl << endl;
07317 }
07318 if(ok == false) throw ErrorClass(" Fail unit test with LINDO on rosenbrockmod.osil");
07319 solver->osinstance = NULL;
07320 delete solver;
07321 solver = NULL;
07322 unitTestResult << "TEST " << nOfTest << ": Solved problem rosenbrockmod.osil with Lindo" << std::endl;
07323 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
07324 }
07325 catch(const ErrorClass& eclass){
07326 unitTestResultFailure << "Sorry Unit Test Failed Testing the Lindo Solver:" + eclass.errormsg << endl;
07327 if (solver != NULL)
07328 delete solver;
07329 solver = NULL;
07330 }
07331
07332 try{
07333
07334 cout << endl << "TEST " << ++nOfTest << ": Lindo solver on parincQuadratic.osil" << endl << endl;
07335 osilFileName = dataDir + "osilFiles" + dirsep + "parincQuadratic.osil";
07336 osolFileName = dataDir + "osolFiles" + dirsep + "parincQuadratic_lindo.osol";
07337 osil = fileUtil->getFileAsString( osilFileName.c_str());
07338 osol = fileUtil->getFileAsString( osolFileName.c_str());
07339 osolreader = new OSoLReader();
07340 solver = new LindoSolver();
07341 solver->osil = osil;
07342 solver->osol = osol;
07343 solver->osinstance = NULL;
07344 solver->osoption = osolreader->readOSoL( osol);
07345 cout << "call the LINDO Solver" << endl;
07346 solver->buildSolverInstance();
07347 solver->solve();
07348 check = 49920.5;
07349
07350 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
07351 if (ok)
07352 {
07353 #ifdef DEBUG
07354 cout << solver->osrl << endl;
07355 #endif
07356 cout << "LINDO solver solution for parincQuadratic checks." << endl;
07357 }
07358 else
07359 { cout << "LINDO solver solution for parincQuadratic in error:" << endl;
07360 cout << solver->osrl << endl;
07361 }
07362 if(ok == false) throw ErrorClass(" Fail unit test with LINDO on parincQuadratic.osil");
07363 delete solver;
07364 solver = NULL;
07365 delete osolreader;
07366 osolreader = NULL;
07367 unitTestResult << "TEST " << nOfTest << ": Solved problem parincQuadratic.osil with Lindo" << std::endl;
07368 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
07369 }
07370 catch(const ErrorClass& eclass){
07371 unitTestResultFailure << "Sorry Unit Test Failed Testing the LINDO Solver:" + eclass.errormsg << endl;
07372 if (solver != NULL)
07373 delete solver;
07374 solver = NULL;
07375 if (osolreader != NULL)
07376 delete osolreader;
07377 osolreader = NULL;
07378 }
07379
07380 try{
07381
07382
07383
07384
07385
07386
07387
07388
07389
07390
07391
07392
07393
07394
07395
07396
07397
07398
07399
07400
07401
07402
07403
07404
07405
07406
07407
07408
07409
07410
07411
07412
07413
07414
07415
07416
07417
07418
07419
07420
07421
07422
07423
07424
07425
07426
07427
07428
07429
07430
07431
07432 }
07433 #endif // end of #ifdef COIN_HAS_LINDO
07434 }
07435
07436
07437
07438
07439 if (OTHER_TESTS){
07440 try{
07441 cout << endl << "TEST " << ++nOfTest << ": Cbc solver using MPS file" << endl << endl;
07442 ok = true;
07443
07444
07445 cout << "create a COIN Solver for MPS - OSInstance solution" << endl;
07446 solver = new CoinSolver();
07447 solver->sSolverName = "cbc";
07448 mpsFileName = dataDir + "mpsFiles" + dirsep + "parinc.mps";
07449 mps2osil = new OSmps2osil( mpsFileName);
07450 mps2osil->createOSInstance() ;
07451 solver->osinstance = mps2osil->osinstance;
07452 osol = "<osol></osol>";
07453 solver->osol = osol;
07454 cout << "call COIN Solve" << endl;
07455 solver->buildSolverInstance();
07456 solver->solve();
07457 check = -7668;
07458
07459 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
07460 if (ok)
07461 {
07462 #ifdef DEBUG
07463 cout << solver->osrl << endl;
07464 #endif
07465 cout << "COIN solver solution for parinc.mps checks." << endl;
07466 }
07467 else
07468 { cout << "COIN solver solution for parinc.mps in error:" << endl;
07469 cout << solver->osrl << endl;
07470 }
07471 if(ok == false) throw ErrorClass(" Fail unit test with COIN Solver on MPS test problem parincLinear.mps");
07472 delete solver;
07473 solver = NULL;
07474 delete mps2osil;
07475 mps2osil = NULL;
07476
07477
07478 unitTestResult << "TEST " << nOfTest << ": Test the MPS -> OSiL converter on parinc.mps using Cbc" << std::endl;
07479 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
07480 }
07481 catch(const ErrorClass& eclass){
07482 cout << "OSrL = " << solver->osrl << endl;
07483 cout << endl << endl << endl;
07484 unitTestResultFailure <<"Sorry Unit Test Failed Testing the MPS converter:" + eclass.errormsg << endl;
07485
07486 if (solver != NULL)
07487 delete solver;
07488 solver = NULL;
07489 if (mps2osil != NULL)
07490 delete mps2osil;
07491 mps2osil = NULL;
07492 }
07493
07494
07495
07496
07497 #if 0
07498 #ifdef COIN_HAS_GAMSUTILS
07499 try{
07500 std::cout << "Working with GAMSIO " << std::endl;
07501
07502 std::string gmsControlFile = "/home/kmartin/bin/gams/23.2/225a/gamscntr.dat";
07503
07504
07505 OSgams2osil *gams2osil;
07506 gams2osil = new OSgams2osil( gmsControlFile);
07507 gams2osil->createOSInstance();
07508 std::cout << gams2osil->osinstance->printModel() << std::endl;
07509 std::cout << "Done Working with GAMSIO " << std::endl;
07510 delete gams2osil;
07511 gams2osil = NULL;
07512 }
07513 catch(const ErrorClass& eclass){
07514 unitTestResultFailure << "Sorry Unit Test Failed Testing the GAMS interface:" + eclass.errormsg << endl;
07515 if (gams2osil != NULL)
07516 delete gams2osil;
07517 gams2osil = NULL;
07518 }
07519 #endif
07520 #endif
07521
07522
07523 #ifdef COIN_HAS_ASL
07524 try{
07525 cout << endl << "TEST " << ++nOfTest << ": AMPL solver interface" << endl << endl;
07526 ok = true;
07527 cout << "create a cbc Solver for AMPL nl - OSInstance solution" << endl;
07528 solver = new CoinSolver();
07529 solver->sSolverName = "cbc";
07530 nlFileName = dataDir + "amplFiles" + dirsep + "parinc.nl";
07531 nl2osil = new OSnl2osil( nlFileName);
07532 nl2osil->createOSInstance() ;
07533 solver->osinstance = nl2osil->osinstance;
07534
07535 OSiLWriter tmp_osil_writer;
07536 tmp_osil_writer.m_bWhiteSpace = true;
07537
07538
07539 osol = "";
07540 solver->osol = osol;
07541 cout << "call Cbc Solve" << endl;
07542 solver->buildSolverInstance();
07543 solver->solve();
07544 check = 7668;
07545
07546 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
07547 if (ok)
07548 {
07549 #ifdef DEBUG
07550 cout << solver->osrl << endl;
07551 #endif
07552 cout << "COIN cbc solver solution for parinc.nl checks." << endl;
07553 }
07554 else
07555 { cout << "COIN cbc solver solution for parinc.nl in error:" << endl;
07556 cout << solver->osrl << endl;
07557 }
07558 if(ok == false) throw ErrorClass(" Fail unit test with OSnl2osil on problem parinc.nl");
07559 solver->osinstance = NULL;
07560 delete solver;
07561 solver = NULL;
07562
07563 delete nl2osil;
07564 nl2osil = NULL;
07565 unitTestResult << "TEST " << nOfTest << ": Test the AMPL nl -> OSiL converter on parinc.nl using Cbc" << std::endl;
07566 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
07567 }
07568 catch(const ErrorClass& eclass){
07569 cout << "OSrL = " << solver->osrl << endl;
07570 cout << endl << endl << endl;
07571 unitTestResultFailure <<"Sorry Unit Test Failed Testing AMPL:" + eclass.errormsg << endl;
07572
07573 if (solver != NULL)
07574 delete solver;
07575 solver = NULL;
07576 if (nl2osil != NULL)
07577 delete nl2osil;
07578 nl2osil = NULL;
07579 }
07580 #endif
07581
07582
07583
07584
07585 try{
07586 cout << endl << "TEST " << ++nOfTest << ": b64 operations" << endl << endl;
07587 ok = true;
07588 OSiLWriter osilwriter;
07589 osilwriter.m_bWriteBase64 = true;
07590 solver = new CoinSolver();
07591 solver->sSolverName = "cbc";
07592 mpsFileName = dataDir + "mpsFiles" + dirsep + "parinc.mps";
07593 mps2osil = new OSmps2osil( mpsFileName);
07594 solver->osinstance = NULL;
07595 osol = "<osol></osol>";
07596 solver->osol = osol;
07597 mps2osil->createOSInstance() ;
07598 solver->osil = osilwriter.writeOSiL( mps2osil->osinstance) ;
07599
07600 solver->buildSolverInstance();
07601 solver->solve();
07602 cout << endl << endl;
07603 check = -7668;
07604
07605 ok = ( fabs(check - getObjVal( solver->osrl) )/(fabs( check) + OS_NEAR_EQUAL) <= OS_NEAR_EQUAL) ? true : false;
07606 if (ok)
07607 { cout << "COIN solution of an OSiL string in b64 format." << endl;
07608 #ifdef DEBUG
07609 cout << solver->osrl << endl;
07610 #endif
07611 }
07612 else
07613 { cout << "COIN solution of a OSiL string in b64 format:" << endl;
07614 cout << solver->osrl << endl;
07615 }
07616 if(ok == false) throw ErrorClass(" Fail unit test with COIN Cbc Solver on b64 test problem parincLinear.mps");
07617 solver->osinstance = NULL;
07618 delete solver;
07619 solver = NULL;
07620 delete mps2osil;
07621 mps2osil = NULL;
07622 unitTestResult << "TEST " << nOfTest << ": Test a problem written in b64 and then converted to OSInstance" << std::endl;
07623 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
07624 }
07625 catch(const ErrorClass& eclass){
07626 cout << endl << endl;
07627 cout << eclass.errormsg << endl << endl;
07628 cout << "OSrL = " << solver->osrl << endl;
07629 cout << endl << endl << endl;
07630 unitTestResultFailure << "Sorry Unit Test Failed Testing Use of Base 64" << endl;
07631
07632 if (solver != NULL)
07633 delete solver;
07634 solver = NULL;
07635 if (mps2osil != NULL)
07636 delete mps2osil;
07637 mps2osil = NULL;
07638 }
07639
07640
07641
07642 try{
07643 cout << endl << "TEST " << ++nOfTest << ": postfix and prefix routines" << endl << endl;
07644 std::string expTreeTest = dataDir + "osilFiles" + dirsep + "rosenbrockmod.osil";
07645 osil = fileUtil->getFileAsString( expTreeTest.c_str() ) ;
07646 OSInstance *osinstance = NULL;
07647
07648 OSiLReader *osilreader = NULL;
07649 osilreader = new OSiLReader();
07650
07651 osinstance = osilreader->readOSiL( osil);
07652 OSExpressionTree* expTree = osinstance->getNonlinearExpressionTree( -1);
07653 if(expTree == NULL) throw ErrorClass(" Null expression tree when testing prefix and postfix routines");
07654 std::vector<OSnLNode*> postfixVec;
07655
07656 postfixVec = osinstance->getNonlinearExpressionTreeInPostfix( -1);
07657
07658 unsigned int n = postfixVec.size();
07659 unsigned int i;
07660 nodeNames1 = new std::string[ n];
07661 nodeNames2 = new std::string[ n];
07662 for (i = 0 ; i < n; i++){
07663
07664 nodeNames1[i] = postfixVec[i]->getTokenName();
07665 }
07666
07667
07668 expTree->m_treeRoot = postfixVec[ n - 1]->createExpressionTreeFromPostfix( postfixVec);
07669
07670
07671 std::vector<OSnLNode*> prefixVec;
07672
07673 prefixVec = osinstance->getNonlinearExpressionTreeInPrefix( -1);
07674
07675
07676 expTree->m_treeRoot = prefixVec[ 0]->createExpressionTreeFromPrefix( prefixVec);
07677
07678
07679 postfixVec = expTree->m_treeRoot->getPostfixFromExpressionTree();
07680
07681 if(postfixVec.size() != n) throw ErrorClass(" Problem with creating expression trees");
07682
07683 for (i = 0 ; i < n; i++){
07684
07685 nodeNames2[i] = postfixVec[i]->getTokenName();
07686 if( nodeNames1[i] != nodeNames2[ i]) throw ErrorClass(" Problem with creating expression trees");
07687 }
07688
07689
07690 delete[] nodeNames1;
07691 nodeNames1 = NULL;
07692 delete[] nodeNames2;
07693 nodeNames2 = NULL;
07694
07695 delete osilreader;
07696 osilreader = NULL;
07697 osinstance = NULL;
07698 unitTestResult << "TEST " << nOfTest << ": Successful test of prefix and postfix conversion routines" << std::endl;
07699 cout << endl << "TEST " << nOfTest << ": Completed successfully" << endl << endl;
07700
07701 }
07702 catch(const ErrorClass& eclass){
07703 cout << endl << endl << endl;
07704 unitTestResultFailure << eclass.errormsg << endl;
07705 if (osilreader != NULL)
07706 delete osilreader;
07707 osilreader = NULL;
07708 if (nodeNames1 != NULL)
07709 delete[] nodeNames1;
07710 nodeNames1 = NULL;
07711 if (nodeNames2 != NULL)
07712 delete[] nodeNames2;
07713 nodeNames2 = NULL;
07714 }
07715
07716 }
07717
07718 delete fileUtil;
07719 fileUtil = NULL;
07720
07721 if(unitTestResultFailure.str().length() > 0){
07722 cout << endl << "THE UNIT TEST PASSED THE FOLLOWING:" << endl << endl;
07723 cout << unitTestResult.str() << endl << endl;
07724 cout << "UNFORTUNATELY, YOU FAILED ON THE FOLLOWING:" << endl << endl;
07725 cout << unitTestResultFailure.str() << endl << endl;
07726 cout << "Conclusion: FAILURE" << endl;
07727 return 1;
07728 }
07729 else{
07730 cout << endl << "THE UNIT TEST PASSED THE FOLLOWING:" << endl << endl;
07731 cout << unitTestResult.str() << endl << endl;
07732 cout << "All tests completed successfully" << endl << endl;
07733 #ifdef GUS_DEBUG
07734 cout << "Make sure to #undef GUS_DEBUG before committing!!!" << endl << endl;
07735 #endif
07736 return 0;
07737 }
07738 }
07739
07740 double getObjVal( std::string osrl){
07741 std::string sObjVal;
07742 double dObjVal;
07743 string::size_type pos2;
07744 string::size_type pos1 = osrl.find( "<obj ");
07745 if(pos1 != std::string::npos){
07746
07747 pos1 = osrl.find(">", pos1 + 1);
07748 if(pos1 != std::string::npos){
07749
07750 pos2 = osrl.find( "</obj", pos1 + 1);
07751 if( pos2 != std::string::npos){
07752
07753 sObjVal = osrl.substr( pos1 + 1, pos2 - pos1 - 1);
07754
07755
07756 return dObjVal = os_strtod(sObjVal.c_str(), NULL);
07757 }
07758 else return OSNAN;
07759 }
07760 else return OSNAN;
07761 }
07762 else return OSNAN;
07763 }
07764
07765
07766 void tempPrintArrays(OSResult* os)
07767 {
07768 std::cout << "Print out array content" << std::endl;
07769 for (int i=0; i < os->optimization->numberOfSolutions; ++i)
07770 {
07771 std::cout << "solution " << i << std::endl << std::endl;
07772 std::cout << "variables basic ";
07773 std::cout << os->optimization->solution[i]->variables->basisStatus->basic->el[0] << " ";
07774 std::cout << os->optimization->solution[i]->variables->basisStatus->basic->el[1] << " ";
07775 std::cout << os->optimization->solution[i]->variables->basisStatus->basic->el[2] << endl;
07776 std::cout << "variables atLower ";
07777 std::cout << os->optimization->solution[i]->variables->basisStatus->atLower->el[0] << " ";
07778 std::cout << os->optimization->solution[i]->variables->basisStatus->atLower->el[1] << " ";
07779 std::cout << os->optimization->solution[i]->variables->basisStatus->atLower->el[2] << endl;
07780 std::cout << "variables atUpper ";
07781 std::cout << os->optimization->solution[i]->variables->basisStatus->atUpper->el[0] << " ";
07782 std::cout << os->optimization->solution[i]->variables->basisStatus->atUpper->el[1] << " ";
07783 std::cout << os->optimization->solution[i]->variables->basisStatus->atUpper->el[2] << endl;
07784 std::cout << "variables isFree ";
07785 std::cout << os->optimization->solution[i]->variables->basisStatus->isFree->el[0] << " ";
07786 std::cout << os->optimization->solution[i]->variables->basisStatus->isFree->el[1] << " ";
07787 std::cout << os->optimization->solution[i]->variables->basisStatus->isFree->el[2] << endl;
07788 std::cout << "variables superbasic ";
07789 std::cout << os->optimization->solution[i]->variables->basisStatus->superbasic->el[0] << " ";
07790 std::cout << os->optimization->solution[i]->variables->basisStatus->superbasic->el[1] << " ";
07791 std::cout << os->optimization->solution[i]->variables->basisStatus->superbasic->el[2] << endl;
07792 std::cout << "variables unknown ";
07793 std::cout << os->optimization->solution[i]->variables->basisStatus->unknown->el[0] << " ";
07794 std::cout << os->optimization->solution[i]->variables->basisStatus->unknown->el[1] << " ";
07795 std::cout << os->optimization->solution[i]->variables->basisStatus->unknown->el[2] << endl;
07796
07797 std::cout << std::endl;
07798
07799
07800 std::cout << "objectives basic ";
07801 std::cout << os->optimization->solution[i]->objectives->basisStatus->basic->el[0] << " ";
07802 std::cout << os->optimization->solution[i]->objectives->basisStatus->basic->el[1] << " ";
07803 std::cout << os->optimization->solution[i]->objectives->basisStatus->basic->el[2] << endl;
07804 std::cout << "objectives atLower ";
07805 std::cout << os->optimization->solution[i]->objectives->basisStatus->atLower->el[0] << " ";
07806 std::cout << os->optimization->solution[i]->objectives->basisStatus->atLower->el[1] << " ";
07807 std::cout << os->optimization->solution[i]->objectives->basisStatus->atLower->el[2] << endl;
07808 std::cout << "objectives atUpper ";
07809 std::cout << os->optimization->solution[i]->objectives->basisStatus->atUpper->el[0] << " ";
07810 std::cout << os->optimization->solution[i]->objectives->basisStatus->atUpper->el[1] << " ";
07811 std::cout << os->optimization->solution[i]->objectives->basisStatus->atUpper->el[2] << endl;
07812 std::cout << "objectives isFree ";
07813 std::cout << os->optimization->solution[i]->objectives->basisStatus->isFree->el[0] << " ";
07814 std::cout << os->optimization->solution[i]->objectives->basisStatus->isFree->el[1] << " ";
07815 std::cout << os->optimization->solution[i]->objectives->basisStatus->isFree->el[2] << endl;
07816 std::cout << "objectives superbasic ";
07817 std::cout << os->optimization->solution[i]->objectives->basisStatus->superbasic->el[0] << " ";
07818 std::cout << os->optimization->solution[i]->objectives->basisStatus->superbasic->el[1] << " ";
07819 std::cout << os->optimization->solution[i]->objectives->basisStatus->superbasic->el[2] << endl;
07820 std::cout << "objectives unknown ";
07821 std::cout << os->optimization->solution[i]->objectives->basisStatus->unknown->el[0] << " ";
07822 std::cout << os->optimization->solution[i]->objectives->basisStatus->unknown->el[1] << " ";
07823 std::cout << os->optimization->solution[i]->objectives->basisStatus->unknown->el[2] << endl;
07824
07825 std::cout << std::endl;
07826
07827 std::cout << "constraints basic ";
07828 std::cout << os->optimization->solution[i]->constraints->basisStatus->basic->el[0] << " ";
07829 std::cout << os->optimization->solution[i]->constraints->basisStatus->basic->el[1] << " ";
07830 std::cout << os->optimization->solution[i]->constraints->basisStatus->basic->el[2] << endl;
07831 std::cout << "constraints atLower ";
07832 std::cout << os->optimization->solution[i]->constraints->basisStatus->atLower->el[0] << " ";
07833 std::cout << os->optimization->solution[i]->constraints->basisStatus->atLower->el[1] << " ";
07834 std::cout << os->optimization->solution[i]->constraints->basisStatus->atLower->el[2] << endl;
07835 std::cout << "constraints atUpper ";
07836 std::cout << os->optimization->solution[i]->constraints->basisStatus->atUpper->el[0] << " ";
07837 std::cout << os->optimization->solution[i]->constraints->basisStatus->atUpper->el[1] << " ";
07838 std::cout << os->optimization->solution[i]->constraints->basisStatus->atUpper->el[2] << endl;
07839 std::cout << "constraints isFree ";
07840 std::cout << os->optimization->solution[i]->constraints->basisStatus->isFree->el[0] << " ";
07841 std::cout << os->optimization->solution[i]->constraints->basisStatus->isFree->el[1] << " ";
07842 std::cout << os->optimization->solution[i]->constraints->basisStatus->isFree->el[2] << endl;
07843 std::cout << "constraints superbasic ";
07844 std::cout << os->optimization->solution[i]->constraints->basisStatus->superbasic->el[0] << " ";
07845 std::cout << os->optimization->solution[i]->constraints->basisStatus->superbasic->el[1] << " ";
07846 std::cout << os->optimization->solution[i]->constraints->basisStatus->superbasic->el[2] << endl;
07847 std::cout << "constraints unknown ";
07848 std::cout << os->optimization->solution[i]->constraints->basisStatus->unknown->el[0] << " ";
07849 std::cout << os->optimization->solution[i]->constraints->basisStatus->unknown->el[1] << " ";
07850 std::cout << os->optimization->solution[i]->constraints->basisStatus->unknown->el[2] << endl;
07851
07852 std::cout << std::endl;
07853
07854 for (int k=0; k < os->optimization->solution[i]->variables->other[2]->numberOfEnumerations; k++)
07855 {
07856 std::cout << "other variable results --- enum " << k;
07857 std::cout << " " << os->optimization->solution[i]->variables->other[2]->enumeration[k]->el[0];
07858 std::cout << " " << os->optimization->solution[i]->variables->other[2]->enumeration[k]->el[1];
07859 std::cout << " " << os->optimization->solution[i]->variables->other[2]->enumeration[k]->el[2];
07860
07861 std::cout << std::endl;
07862 }
07863
07864 std::cout << std::endl;
07865
07866 for (int k=0; k < os->optimization->solution[i]->objectives->other[2]->numberOfEnumerations; k++)
07867 {
07868 std::cout << "other objective results --- enum " << k;
07869 std::cout << " " << os->optimization->solution[i]->objectives->other[2]->enumeration[k]->el[0];
07870 std::cout << " " << os->optimization->solution[i]->objectives->other[2]->enumeration[k]->el[1];
07871 std::cout << " " << os->optimization->solution[i]->objectives->other[2]->enumeration[k]->el[2];
07872
07873 std::cout << std::endl;
07874 }
07875
07876 std::cout << std::endl;
07877
07878 for (int k=0; k < os->optimization->solution[i]->constraints->other[2]->numberOfEnumerations; k++)
07879 {
07880 std::cout << "other constraint results --- enum " << k;
07881 std::cout << " " << os->optimization->solution[i]->constraints->other[2]->enumeration[k]->el[0];
07882 std::cout << " " << os->optimization->solution[i]->constraints->other[2]->enumeration[k]->el[1];
07883 std::cout << " " << os->optimization->solution[i]->constraints->other[2]->enumeration[k]->el[2];
07884
07885 std::cout << std::endl;
07886 }
07887 return;
07888 }
07889 }
07890