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