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