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