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