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