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