fixed and added tests for SetSelectedOutputFileName

git-svn-id: svn://136.177.114.72/svn_GW/IPhreeqc/trunk@8036 1feff8c3-07ed-0310-ac33-dd36852eb9cd
This commit is contained in:
Scott R Charlton 2013-09-14 03:46:01 +00:00
parent 83a3be18b8
commit 5b9b110386
5 changed files with 107 additions and 27 deletions

View File

@ -897,13 +897,12 @@ void IPhreeqc::SetSelectedOutputFileName(const char *filename)
{
// Can't use this->PhreeqcPtr->SelectedOutput_map since it's necessary
// to override the default filename "selected_output_%d.%d.sel"
this->SelectedOutputFileNameMap[1] = std::string(filename);
this->SelectedOutputFileNameMap[this->CurrentSelectedOutputUserNumber] = std::string(filename);
}
}
void IPhreeqc::SetSelectedOutputFileOn(bool bValue)
{
// COMMENT: {9/12/2013 6:40:50 PM} this->SelectedOutputFileOn = bValue;
if (0 <= this->CurrentSelectedOutputUserNumber)
{
this->SelectedOutputFileOnMap[this->CurrentSelectedOutputUserNumber] = bValue;
@ -1147,18 +1146,6 @@ void IPhreeqc::do_run(const char* sz_routine, std::istream* pis, PFN_PRERUN_CALL
// TRUE ???
//
//
// COMMENT: {9/12/2013 6:47:53 PM} if (!this->SelectedOutputFileOn)
// COMMENT: {9/12/2013 6:47:53 PM} {
// COMMENT: {9/12/2013 6:47:53 PM} std::map< int, SelectedOutput >::iterator it = this->PhreeqcPtr->SelectedOutput_map.begin();
// COMMENT: {9/12/2013 6:47:53 PM} for (; it != this->PhreeqcPtr->SelectedOutput_map.end(); ++it)
// COMMENT: {9/12/2013 6:47:53 PM} {
// COMMENT: {9/12/2013 6:47:53 PM} ASSERT((*it).second.Get_punch_ostream() == 0);
// COMMENT: {9/12/2013 6:47:53 PM} }
// COMMENT: {9/12/2013 6:47:53 PM} }
// COMMENT: {9/12/2013 6:47:53 PM} else
// COMMENT: {9/12/2013 6:47:53 PM} {
// COMMENT: {9/12/2013 6:47:53 PM} ASSERT(TRUE);
// COMMENT: {9/12/2013 6:47:53 PM} }
std::map< int, SelectedOutput >::iterator ai = this->PhreeqcPtr->SelectedOutput_map.begin();
for (; ai != this->PhreeqcPtr->SelectedOutput_map.end(); ++ai)
{
@ -1182,7 +1169,6 @@ void IPhreeqc::do_run(const char* sz_routine, std::istream* pis, PFN_PRERUN_CALL
std::map< int, SelectedOutput >::iterator it = this->PhreeqcPtr->SelectedOutput_map.begin();
for (; it != this->PhreeqcPtr->SelectedOutput_map.end(); ++it)
{
// COMMENT: {9/12/2013 6:42:03 PM} if (this->SelectedOutputFileOn && !(*it).second.Get_punch_ostream())
if (this->SelectedOutputFileOnMap[(*it).first] && !(*it).second.Get_punch_ostream())
{
//
@ -1225,7 +1211,6 @@ void IPhreeqc::do_run(const char* sz_routine, std::istream* pis, PFN_PRERUN_CALL
std::map< int, SelectedOutput >::iterator it = this->PhreeqcPtr->SelectedOutput_map.begin();
for (; it != this->PhreeqcPtr->SelectedOutput_map.end(); ++it)
{
// COMMENT: {9/12/2013 6:53:23 PM} if (this->SelectedOutputFileOn)
if (this->SelectedOutputFileOnMap[(*it).first])
{
ASSERT((*it).second.Get_punch_ostream());

View File

@ -3540,6 +3540,7 @@ void TestIPhreeqc::TestRunFileMultiPunchNoSet(void)
obj.SetCurrentSelectedOutputUserNumber(3);
obj.SetSelectedOutputFileOn(true);
obj.SetCurrentSelectedOutputUserNumber(1);
obj.SetSelectedOutputFileName(set.GetName().c_str());
CPPUNIT_ASSERT_EQUAL(0, obj.RunFile("multi_punch_no_set"));
@ -3704,11 +3705,11 @@ void TestIPhreeqc::TestMultiPunchCSelectedOutput(void)
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(5, 1, &var)); CPPUNIT_ASSERT_EQUAL(std::string("react"), std::string(var.sVal));
// pH
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(1, 6, &var)); CPPUNIT_ASSERT_DOUBLES_EQUAL( 7.30475, var.dVal, ::pow(10., -5) );
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(2, 6, &var)); CPPUNIT_ASSERT_DOUBLES_EQUAL( 7.29765, var.dVal, ::pow(10., -5) );
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(3, 6, &var)); CPPUNIT_ASSERT_DOUBLES_EQUAL( 6.99738, var.dVal, ::pow(10., -5) );
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(4, 6, &var)); CPPUNIT_ASSERT_DOUBLES_EQUAL( 6.99698, var.dVal, ::pow(10., -5) );
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(5, 6, &var)); CPPUNIT_ASSERT_DOUBLES_EQUAL( 7.2942 , var.dVal, ::pow(10., -5) );
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(1, 6, &var)); CPPUNIT_ASSERT_DOUBLES_EQUAL( 7.30475, var.dVal, ::pow(10., -2) );
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(2, 6, &var)); CPPUNIT_ASSERT_DOUBLES_EQUAL( 7.29765, var.dVal, ::pow(10., -2) );
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(3, 6, &var)); CPPUNIT_ASSERT_DOUBLES_EQUAL( 6.99738, var.dVal, ::pow(10., -2) );
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(4, 6, &var)); CPPUNIT_ASSERT_DOUBLES_EQUAL( 6.99698, var.dVal, ::pow(10., -2) );
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(5, 6, &var)); CPPUNIT_ASSERT_DOUBLES_EQUAL( 7.2942 , var.dVal, ::pow(10., -2) );
// V_TOTAL_C
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(1, 34, &var)); CPPUNIT_ASSERT_DOUBLES_EQUAL( 4.3729e-003, var.dVal, ::pow(10., -6) );
@ -4017,5 +4018,48 @@ void TestIPhreeqc::TestGetCurrentSelectedOutputUserNumber(void)
CPPUNIT_ASSERT_EQUAL(0, obj.LoadDatabase("../database/phreeqc.dat"));
CPPUNIT_ASSERT_EQUAL(1, obj.GetCurrentSelectedOutputUserNumber());
CPPUNIT_ASSERT_EQUAL(0, obj.GetSelectedOutputCount());
}
void TestIPhreeqc::TestMultiSetSelectedOutputFileName(void)
{
FileTest set1("state.sel");
CPPUNIT_ASSERT( set1.RemoveExisting() );
FileTest set2("si.sel");
CPPUNIT_ASSERT( set2.RemoveExisting() );
IPhreeqc obj;
CPPUNIT_ASSERT_EQUAL(0, obj.LoadDatabase("../database/phreeqc.dat"));
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.SetCurrentSelectedOutputUserNumber(1));
obj.SetSelectedOutputStringOn(true);
obj.SetSelectedOutputFileOn(true);
obj.SetSelectedOutputFileName(set1.GetName().c_str());
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.SetCurrentSelectedOutputUserNumber(2));
obj.SetSelectedOutputStringOn(true);
obj.SetSelectedOutputFileOn(true);
obj.SetSelectedOutputFileName(set2.GetName().c_str());
obj.AccumulateLine("TITLE Temperature dependence of solubility");
obj.AccumulateLine(" of gypsum and anhydrite ");
obj.AccumulateLine("SOLUTION 1 Pure water ");
obj.AccumulateLine(" pH 7.0 ");
obj.AccumulateLine(" temp 25.0 ");
obj.AccumulateLine("EQUILIBRIUM_PHASES 1 ");
obj.AccumulateLine(" Gypsum 0.0 1.0 ");
obj.AccumulateLine(" Anhydrite 0.0 1.0 ");
obj.AccumulateLine("REACTION_TEMPERATURE 1 ");
obj.AccumulateLine(" 25.0 75.0 in 51 steps ");
obj.AccumulateLine("SELECTED_OUTPUT 1 ");
obj.AccumulateLine(" -temperature ");
obj.AccumulateLine("SELECTED_OUTPUT 2 ");
obj.AccumulateLine(" -si anhydrite gypsum ");
obj.AccumulateLine("END ");
CPPUNIT_ASSERT_EQUAL(0, obj.RunAccumulated());
CPPUNIT_ASSERT( set1.VerifyExists() );
CPPUNIT_ASSERT( set2.VerifyExists() );
}

View File

@ -73,6 +73,7 @@ class TestIPhreeqc : public CppUnit::TestFixture
CPPUNIT_TEST( TestGetSelectedOutputCount );
CPPUNIT_TEST( TestGetNthSelectedOutputUserNumber );
CPPUNIT_TEST( TestGetCurrentSelectedOutputUserNumber );
CPPUNIT_TEST( TestMultiSetSelectedOutputFileName );
CPPUNIT_TEST_SUITE_END();
public:
@ -146,6 +147,7 @@ public:
void TestGetSelectedOutputCount(void);
void TestGetNthSelectedOutputUserNumber(void);
void TestGetCurrentSelectedOutputUserNumber(void);
void TestMultiSetSelectedOutputFileName(void);
protected:
void TestFileOnOff(const char* FILENAME, bool output_file_on, bool error_file_on, bool log_file_on, bool selected_output_file_on, bool dump_file_on);

View File

@ -13,6 +13,8 @@
#include <cfloat>
#include <stdlib.h>
#include "FileTest.h"
#if defined(_WIN32) || defined(__CYGWIN32__)
// DeleteFile defined in <windows.h>
#else
@ -4039,11 +4041,11 @@ void TestIPhreeqcLib::TestMultiPunchCSelectedOutput(void)
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(id, 5, 1, &var)); CPPUNIT_ASSERT_EQUAL(std::string("react"), std::string(var.sVal));
// pH
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(id, 1, 6, &var)); CPPUNIT_ASSERT_DOUBLES_EQUAL( 7.30475, var.dVal, ::pow(10., -5) );
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(id, 2, 6, &var)); CPPUNIT_ASSERT_DOUBLES_EQUAL( 7.29765, var.dVal, ::pow(10., -5) );
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(id, 3, 6, &var)); CPPUNIT_ASSERT_DOUBLES_EQUAL( 6.99738, var.dVal, ::pow(10., -5) );
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(id, 4, 6, &var)); CPPUNIT_ASSERT_DOUBLES_EQUAL( 6.99698, var.dVal, ::pow(10., -5) );
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(id, 5, 6, &var)); CPPUNIT_ASSERT_DOUBLES_EQUAL( 7.2942 , var.dVal, ::pow(10., -5) );
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(id, 1, 6, &var)); CPPUNIT_ASSERT_DOUBLES_EQUAL( 7.30475, var.dVal, ::pow(10., -2) );
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(id, 2, 6, &var)); CPPUNIT_ASSERT_DOUBLES_EQUAL( 7.29765, var.dVal, ::pow(10., -2) );
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(id, 3, 6, &var)); CPPUNIT_ASSERT_DOUBLES_EQUAL( 6.99738, var.dVal, ::pow(10., -2) );
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(id, 4, 6, &var)); CPPUNIT_ASSERT_DOUBLES_EQUAL( 6.99698, var.dVal, ::pow(10., -2) );
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(id, 5, 6, &var)); CPPUNIT_ASSERT_DOUBLES_EQUAL( 7.2942 , var.dVal, ::pow(10., -2) );
// V_TOTAL_C
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(id, 1, 34, &var)); CPPUNIT_ASSERT_DOUBLES_EQUAL( 4.3729e-003, var.dVal, ::pow(10., -6) );
@ -4356,3 +4358,48 @@ void TestIPhreeqcLib::TestGetCurrentSelectedOutputUserNumber(void)
CPPUNIT_ASSERT_EQUAL(0, ::LoadDatabase(id, "../database/phreeqc.dat"));
CPPUNIT_ASSERT_EQUAL(1, ::GetCurrentSelectedOutputUserNumber(id));
}
void TestIPhreeqcLib::TestMultiSetSelectedOutputFileName(void)
{
FileTest set1("state.sel");
CPPUNIT_ASSERT( set1.RemoveExisting() );
FileTest set2("si.sel");
CPPUNIT_ASSERT( set2.RemoveExisting() );
int id = ::CreateIPhreeqc();
CPPUNIT_ASSERT(id >= 0);
CPPUNIT_ASSERT_EQUAL(0, ::LoadDatabase(id, "../database/phreeqc.dat"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::SetCurrentSelectedOutputUserNumber(id, 1));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::SetSelectedOutputStringOn(id, true));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::SetSelectedOutputFileOn(id, true));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::SetSelectedOutputFileName(id, set1.GetName().c_str()));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::SetCurrentSelectedOutputUserNumber(id, 2));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::SetSelectedOutputStringOn(id, true));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::SetSelectedOutputFileOn(id, true));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::SetSelectedOutputFileName(id, set2.GetName().c_str()));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "TITLE Temperature dependence of solubility"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, " of gypsum and anhydrite "));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "SOLUTION 1 Pure water "));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, " pH 7.0 "));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, " temp 25.0 "));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "EQUILIBRIUM_PHASES 1 "));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, " Gypsum 0.0 1.0 "));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, " Anhydrite 0.0 1.0 "));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "REACTION_TEMPERATURE 1 "));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, " 25.0 75.0 in 51 steps "));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "SELECTED_OUTPUT 1 "));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, " -temperature "));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "SELECTED_OUTPUT 2 "));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, " -si anhydrite gypsum "));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "END "));
CPPUNIT_ASSERT_EQUAL(0, ::RunAccumulated(id));
CPPUNIT_ASSERT( set1.VerifyExists() );
CPPUNIT_ASSERT( set2.VerifyExists() );
}

View File

@ -75,6 +75,7 @@ class TestIPhreeqcLib : public CppUnit::TestFixture
CPPUNIT_TEST( TestGetSelectedOutputCount );
CPPUNIT_TEST( TestGetNthSelectedOutputUserNumber );
CPPUNIT_TEST( TestGetCurrentSelectedOutputUserNumber );
CPPUNIT_TEST( TestMultiSetSelectedOutputFileName );
CPPUNIT_TEST_SUITE_END();
public:
@ -150,6 +151,7 @@ public:
void TestGetSelectedOutputCount(void);
void TestGetNthSelectedOutputUserNumber(void);
void TestGetCurrentSelectedOutputUserNumber(void);
void TestMultiSetSelectedOutputFileName(void);
protected:
void TestFileOnOff(const char* FILENAME, int output_file_on, int error_file_on, int log_file_on, int selected_output_file_on, int dump_file_on);