mirror of
https://git.gfz-potsdam.de/naaice/iphreeqc.git
synced 2025-12-16 00:28:23 +01:00
All tests passing on windows; before inverse change
git-svn-id: svn://136.177.114.72/svn_GW/IPhreeqc/branches/multi_punch@7952 1feff8c3-07ed-0310-ac33-dd36852eb9cd
This commit is contained in:
parent
187f8598b3
commit
7bdca161c8
135
src/IPhreeqc.cpp
135
src/IPhreeqc.cpp
@ -22,6 +22,8 @@ const char DUMP_FILENAME_FORMAT[] = "dump.%d.out";
|
||||
std::map<size_t, IPhreeqc*> IPhreeqc::Instances;
|
||||
size_t IPhreeqc::InstancesIndex = 0;
|
||||
|
||||
static const char empty[] = "";
|
||||
|
||||
|
||||
IPhreeqc::IPhreeqc(void)
|
||||
: DatabaseLoaded(false)
|
||||
@ -39,7 +41,8 @@ IPhreeqc::IPhreeqc(void)
|
||||
, ErrorReporter(0)
|
||||
, WarningStringOn(true)
|
||||
, WarningReporter(0)
|
||||
, SelectedOutput(0)
|
||||
, PtrSelectedOutput(0)
|
||||
, CurrentSelectedOutputUserNumber(1)
|
||||
, SelectedOutputStringOn(false)
|
||||
, PhreeqcPtr(0)
|
||||
, input_file(0)
|
||||
@ -49,7 +52,7 @@ IPhreeqc::IPhreeqc(void)
|
||||
|
||||
this->ErrorReporter = new CErrorReporter<std::ostringstream>;
|
||||
this->WarningReporter = new CErrorReporter<std::ostringstream>;
|
||||
this->SelectedOutput = new CSelectedOutput();
|
||||
this->PtrSelectedOutput = new CSelectedOutput();
|
||||
this->PhreeqcPtr = new Phreeqc(this);
|
||||
|
||||
ASSERT(this->PhreeqcPtr->phast == 0);
|
||||
@ -83,7 +86,7 @@ IPhreeqc::~IPhreeqc(void)
|
||||
this->OutputFileOn = false;
|
||||
#endif
|
||||
delete this->PhreeqcPtr;
|
||||
delete this->SelectedOutput;
|
||||
delete this->PtrSelectedOutput;
|
||||
delete this->WarningReporter;
|
||||
delete this->ErrorReporter;
|
||||
|
||||
@ -329,13 +332,13 @@ bool IPhreeqc::GetOutputStringOn(void)const
|
||||
|
||||
int IPhreeqc::GetSelectedOutputColumnCount(void)const
|
||||
{
|
||||
return (int)this->SelectedOutput->GetColCount();
|
||||
return (int)this->PtrSelectedOutput->GetColCount();
|
||||
}
|
||||
|
||||
const char* IPhreeqc::GetSelectedOutputFileName(void)const
|
||||
{
|
||||
static const char* empty = "";
|
||||
std::map< int, std::string >::const_iterator ci = this->SelectedOutputFileNameMap.find(1);
|
||||
static const char empty[] = "";
|
||||
std::map< int, std::string >::const_iterator ci = this->SelectedOutputFileNameMap.find(this->CurrentSelectedOutputUserNumber);
|
||||
if (ci != this->SelectedOutputFileNameMap.end())
|
||||
{
|
||||
return (*ci).second.c_str();
|
||||
@ -350,7 +353,7 @@ bool IPhreeqc::GetSelectedOutputFileOn(void)const
|
||||
|
||||
int IPhreeqc::GetSelectedOutputRowCount(void)const
|
||||
{
|
||||
return (int)this->SelectedOutput->GetRowCount();
|
||||
return (int)this->PtrSelectedOutput->GetRowCount();
|
||||
}
|
||||
|
||||
const char* IPhreeqc::GetSelectedOutputString(void)const
|
||||
@ -360,7 +363,12 @@ const char* IPhreeqc::GetSelectedOutputString(void)const
|
||||
{
|
||||
return err_msg;
|
||||
}
|
||||
return this->SelectedOutputString.c_str();
|
||||
std::map< int, std::string >::const_iterator cit = this->SelectedOutputStringMap.find(this->CurrentSelectedOutputUserNumber);
|
||||
if (cit != this->SelectedOutputStringMap.end())
|
||||
{
|
||||
return (*cit).second.c_str();
|
||||
}
|
||||
return empty;
|
||||
}
|
||||
|
||||
const char* IPhreeqc::GetSelectedOutputStringLine(int n)
|
||||
@ -370,12 +378,17 @@ const char* IPhreeqc::GetSelectedOutputStringLine(int n)
|
||||
{
|
||||
return empty;
|
||||
}
|
||||
return this->SelectedOutputLines[n].c_str();
|
||||
return this->SelectedOutputLinesMap[this->CurrentSelectedOutputUserNumber][n].c_str();
|
||||
}
|
||||
|
||||
int IPhreeqc::GetSelectedOutputStringLineCount(void)const
|
||||
{
|
||||
return (int)this->SelectedOutputLines.size();
|
||||
std::map< int, std::vector < std::string > >::const_iterator cit = this->SelectedOutputLinesMap.find(this->CurrentSelectedOutputUserNumber);
|
||||
if (cit != this->SelectedOutputLinesMap.end())
|
||||
{
|
||||
return (*cit).second.size();
|
||||
}
|
||||
return (int)0;
|
||||
}
|
||||
|
||||
bool IPhreeqc::GetSelectedOutputStringOn(void)const
|
||||
@ -393,7 +406,7 @@ VRESULT IPhreeqc::GetSelectedOutputValue(int row, int col, VAR* pVAR)
|
||||
return VR_INVALIDARG;
|
||||
}
|
||||
|
||||
VRESULT v = this->SelectedOutput->Get(row, col, pVAR);
|
||||
VRESULT v = this->PtrSelectedOutput->Get(row, col, pVAR);
|
||||
switch (v)
|
||||
{
|
||||
case VR_OK:
|
||||
@ -501,7 +514,7 @@ int IPhreeqc::LoadDatabase(const char* filename)
|
||||
// cleanup
|
||||
//
|
||||
this->UnLoadDatabase();
|
||||
this->SelectedOutput->Clear();
|
||||
this->PtrSelectedOutput->Clear();
|
||||
|
||||
// open file
|
||||
//
|
||||
@ -551,7 +564,7 @@ int IPhreeqc::LoadDatabaseString(const char* input)
|
||||
//
|
||||
this->UnLoadDatabase();
|
||||
|
||||
this->SelectedOutput->Clear();
|
||||
this->PtrSelectedOutput->Clear();
|
||||
|
||||
std::string s(input);
|
||||
std::istringstream iss(s);
|
||||
@ -735,6 +748,11 @@ int IPhreeqc::RunString(const char* input)
|
||||
return this->PhreeqcPtr->get_input_errors();
|
||||
}
|
||||
|
||||
void IPhreeqc::SetCurrentSelectedOutputUserNumber(int n)
|
||||
{
|
||||
this->CurrentSelectedOutputUserNumber = n;
|
||||
}
|
||||
|
||||
void IPhreeqc::SetDumpFileName(const char *filename)
|
||||
{
|
||||
if (filename && ::strlen(filename))
|
||||
@ -850,10 +868,20 @@ void IPhreeqc::UnLoadDatabase(void)
|
||||
|
||||
// clear selectedoutput
|
||||
//
|
||||
ASSERT(this->SelectedOutput);
|
||||
this->SelectedOutput->Clear();
|
||||
this->SelectedOutputString.clear();
|
||||
this->SelectedOutputLines.clear();
|
||||
ASSERT(this->PtrSelectedOutput);
|
||||
this->PtrSelectedOutput->Clear();
|
||||
|
||||
std::map< int, std::string >::iterator mit = SelectedOutputStringMap.begin();
|
||||
for (; mit != SelectedOutputStringMap.begin(); ++mit)
|
||||
{
|
||||
(*mit).second.clear();
|
||||
}
|
||||
std::map< int, std::vector< std::string > >::iterator it = this->SelectedOutputLinesMap.begin();
|
||||
for (; it != this->SelectedOutputLinesMap.begin(); ++it)
|
||||
{
|
||||
(*it).second.clear();
|
||||
}
|
||||
|
||||
|
||||
// clear dump string
|
||||
//
|
||||
@ -871,7 +899,7 @@ void IPhreeqc::UnLoadDatabase(void)
|
||||
|
||||
int IPhreeqc::EndRow(void)
|
||||
{
|
||||
if (this->SelectedOutput->GetRowCount() <= 1)
|
||||
if (this->PtrSelectedOutput->GetRowCount() <= 1)
|
||||
{
|
||||
// ensure all user_punch headings are included
|
||||
ASSERT(this->PhreeqcPtr->n_user_punch_index >= 0);
|
||||
@ -879,17 +907,17 @@ int IPhreeqc::EndRow(void)
|
||||
{
|
||||
for (size_t i = this->PhreeqcPtr->n_user_punch_index; i < this->PhreeqcPtr->current_user_punch->Get_headings().size(); ++i)
|
||||
{
|
||||
this->SelectedOutput->PushBackEmpty(this->PhreeqcPtr->current_user_punch->Get_headings()[i].c_str());
|
||||
this->PtrSelectedOutput->PushBackEmpty(this->PhreeqcPtr->current_user_punch->Get_headings()[i].c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
return this->SelectedOutput->EndRow();
|
||||
return this->PtrSelectedOutput->EndRow();
|
||||
}
|
||||
|
||||
void IPhreeqc::check_database(const char* sz_routine)
|
||||
{
|
||||
this->ErrorReporter->Clear();
|
||||
this->SelectedOutput->Clear();
|
||||
this->PtrSelectedOutput->Clear();
|
||||
|
||||
if (!this->DatabaseLoaded)
|
||||
{
|
||||
@ -912,13 +940,24 @@ void IPhreeqc::do_run(const char* sz_routine, std::istream* pis, PFN_PRERUN_CALL
|
||||
pfn_pre(cookie);
|
||||
}
|
||||
|
||||
///{{{ REPLACE WITH A CLEAR ROUTINE
|
||||
// release
|
||||
this->LogString.clear();
|
||||
this->LogLines.clear();
|
||||
this->OutputString.clear();
|
||||
this->OutputLines.clear();
|
||||
this->SelectedOutputString.clear();
|
||||
this->SelectedOutputLines.clear();
|
||||
|
||||
std::map< int, std::string >::iterator mit = SelectedOutputStringMap.begin();
|
||||
for (; mit != SelectedOutputStringMap.begin(); ++mit)
|
||||
{
|
||||
(*mit).second.clear();
|
||||
}
|
||||
std::map< int, std::vector< std::string > >::iterator it = this->SelectedOutputLinesMap.begin();
|
||||
for (; it != this->SelectedOutputLinesMap.begin(); ++it)
|
||||
{
|
||||
(*it).second.clear();
|
||||
}
|
||||
///}}}
|
||||
|
||||
/*
|
||||
* set read callback
|
||||
@ -953,15 +992,31 @@ void IPhreeqc::do_run(const char* sz_routine, std::istream* pis, PFN_PRERUN_CALL
|
||||
if (this->PhreeqcPtr->read_input() == EOF)
|
||||
break;
|
||||
|
||||
std::map< int, class SelectedOutput >::iterator mit = this->PhreeqcPtr->SelectedOutput_map.begin();
|
||||
bool bWarning = false;
|
||||
std::map< int, SelectedOutput >::iterator mit = this->PhreeqcPtr->SelectedOutput_map.begin();
|
||||
for (; mit != this->PhreeqcPtr->SelectedOutput_map.end(); ++mit)
|
||||
{
|
||||
if (this->PhreeqcPtr->simulation > 1 && save_punch_in && (*mit).second.Get_new_def())
|
||||
if (this->CurrentSelectedOutputMap.find(&(*mit).second) == this->CurrentSelectedOutputMap.end())
|
||||
{
|
||||
std::map< int, CSelectedOutput* >::value_type item((*mit).first, new CSelectedOutput());
|
||||
this->SelectedOutputMap.insert(item);
|
||||
|
||||
// SelectedOutput
|
||||
this->CurrentSelectedOutputMap.insert(
|
||||
std::map< SelectedOutput*, CSelectedOutput* >::value_type(
|
||||
&(*mit).second, item.second));
|
||||
|
||||
// SelectedOutputString
|
||||
this->CurrentToStringMap.insert(
|
||||
std::map< SelectedOutput*, std::string* >::value_type(
|
||||
&(*mit).second, &this->SelectedOutputStringMap[(*mit).first]));
|
||||
}
|
||||
if (this->PhreeqcPtr->simulation > 1 && save_punch_in && (*mit).second.Get_new_def() && !bWarning)
|
||||
{
|
||||
std::ostringstream oss;
|
||||
oss << sz_routine << ": Warning SELECTED_OUTPUT has been redefined.\n";
|
||||
this->PhreeqcPtr->warning_msg(oss.str().c_str());
|
||||
break;
|
||||
bWarning = true;
|
||||
}
|
||||
}
|
||||
if (this->PhreeqcPtr->simulation > 1 && this->PhreeqcPtr->keycount[Keywords::KEY_USER_PUNCH] > 0)
|
||||
@ -1311,12 +1366,16 @@ void IPhreeqc::do_run(const char* sz_routine, std::istream* pis, PFN_PRERUN_CALL
|
||||
|
||||
if (this->SelectedOutputStringOn)
|
||||
{
|
||||
// output lines
|
||||
std::istringstream iss(this->SelectedOutputString);
|
||||
std::string line;
|
||||
while (std::getline(iss, line))
|
||||
std::map< int, std::string >::iterator mit = this->SelectedOutputStringMap.begin();
|
||||
for (; mit != this->SelectedOutputStringMap.end(); ++mit)
|
||||
{
|
||||
this->SelectedOutputLines.push_back(line);
|
||||
// output lines
|
||||
std::istringstream iss((*mit).second);
|
||||
std::string line;
|
||||
while (std::getline(iss, line))
|
||||
{
|
||||
this->SelectedOutputLinesMap[(*mit).first].push_back(line);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1426,7 +1485,7 @@ void IPhreeqc::punch_msg(const char *str)
|
||||
{
|
||||
if (this->SelectedOutputStringOn && this->punch_on)
|
||||
{
|
||||
this->SelectedOutputString += str;
|
||||
*(this->CurrentToStringMap[this->PhreeqcPtr->current_selected_output]) += str;
|
||||
}
|
||||
ASSERT(!(this->SelectedOutputFileOn != (this->PhreeqcPtr->current_selected_output->Get_punch_ostream() != 0)));
|
||||
this->PHRQ_io::punch_msg(str);
|
||||
@ -1526,9 +1585,9 @@ void IPhreeqc::fpunchf(const char *name, const char *format, double d)
|
||||
this->PHRQ_io::fpunchf(name, format, d);
|
||||
if (this->SelectedOutputStringOn && this->punch_on)
|
||||
{
|
||||
PHRQ_io::fpunchf_helper(&this->SelectedOutputString, format, d);
|
||||
PHRQ_io::fpunchf_helper(this->CurrentToStringMap[this->PhreeqcPtr->current_selected_output], format, d);
|
||||
}
|
||||
this->SelectedOutput->PushBackDouble(name, d);
|
||||
this->PtrSelectedOutput->PushBackDouble(name, d);
|
||||
}
|
||||
catch (std::bad_alloc)
|
||||
{
|
||||
@ -1543,9 +1602,9 @@ void IPhreeqc::fpunchf(const char *name, const char *format, char *s)
|
||||
this->PHRQ_io::fpunchf(name, format, s);
|
||||
if (this->SelectedOutputStringOn && this->punch_on)
|
||||
{
|
||||
PHRQ_io::fpunchf_helper(&this->SelectedOutputString, format, s);
|
||||
PHRQ_io::fpunchf_helper(this->CurrentToStringMap[this->PhreeqcPtr->current_selected_output], format, s);
|
||||
}
|
||||
this->SelectedOutput->PushBackString(name, s);
|
||||
this->PtrSelectedOutput->PushBackString(name, s);
|
||||
}
|
||||
catch (std::bad_alloc)
|
||||
{
|
||||
@ -1560,9 +1619,9 @@ void IPhreeqc::fpunchf(const char *name, const char *format, int i)
|
||||
this->PHRQ_io::fpunchf(name, format, i);
|
||||
if (this->SelectedOutputStringOn && this->punch_on)
|
||||
{
|
||||
PHRQ_io::fpunchf_helper(&this->SelectedOutputString, format, i);
|
||||
PHRQ_io::fpunchf_helper(this->CurrentToStringMap[this->PhreeqcPtr->current_selected_output], format, i);
|
||||
}
|
||||
this->SelectedOutput->PushBackLong(name, (long)i);
|
||||
this->PtrSelectedOutput->PushBackLong(name, (long)i);
|
||||
}
|
||||
catch (std::bad_alloc)
|
||||
{
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
class Phreeqc;
|
||||
class IErrorReporter;
|
||||
class CSelectedOutput;
|
||||
class SelectedOutput;
|
||||
|
||||
/**
|
||||
* @class IPhreeqcStop
|
||||
@ -791,6 +792,17 @@ public:
|
||||
void SetSelectedOutputStringOn(bool bValue);
|
||||
|
||||
|
||||
/**
|
||||
* Sets the selected output string switch on or off. This switch controls whether or not the data normally sent
|
||||
* to the selected output file are stored in a buffer for retrieval. The initial setting is false.
|
||||
* @param bValue If true, captures the output defined by the <B>SELECTED_OUTPUT</B> keyword into a string buffer;
|
||||
* if false, output defined by the <B>SELECTED_OUTPUT</B> keyword is not captured to a string buffer.
|
||||
* @see GetSelectedOutputFileOn, GetSelectedOutputString, GetSelectedOutputStringOn, GetSelectedOutputStringLine, GetSelectedOutputStringLineCount, SetSelectedOutputFileOn
|
||||
*/
|
||||
void SetCurrentSelectedOutputUserNumber(int n);
|
||||
|
||||
|
||||
|
||||
public:
|
||||
// overrides
|
||||
virtual void error_msg(const char *str, bool stop=false);
|
||||
@ -860,8 +872,13 @@ protected:
|
||||
std::string WarningString;
|
||||
std::vector< std::string > WarningLines;
|
||||
|
||||
CSelectedOutput *SelectedOutput;
|
||||
std::string StringInput;
|
||||
int CurrentSelectedOutputUserNumber;
|
||||
CSelectedOutput *PtrSelectedOutput;
|
||||
std::map< int, CSelectedOutput* > SelectedOutputMap;
|
||||
std::map< SelectedOutput*, CSelectedOutput* > CurrentSelectedOutputMap;
|
||||
std::map< SelectedOutput*, std::string* > CurrentToStringMap;
|
||||
std::map< class SelectedOutput*, int > InverseSelectedOutputMap;
|
||||
std::string StringInput;
|
||||
|
||||
std::string DumpString;
|
||||
std::vector< std::string > DumpLines;
|
||||
@ -875,9 +892,9 @@ protected:
|
||||
std::string LogFileName;
|
||||
std::string DumpFileName;
|
||||
|
||||
bool SelectedOutputStringOn;
|
||||
std::string SelectedOutputString;
|
||||
std::vector< std::string > SelectedOutputLines;
|
||||
bool SelectedOutputStringOn;
|
||||
std::map< int, std::string > SelectedOutputStringMap;
|
||||
std::map< int, std::vector< std::string > > SelectedOutputLinesMap;
|
||||
|
||||
protected:
|
||||
Phreeqc* PhreeqcPtr;
|
||||
|
||||
@ -3476,7 +3476,7 @@ void TestIPhreeqc::TestRunFileMultiPunchOn(void)
|
||||
|
||||
IPhreeqc obj;
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(0, obj.LoadDatabase("phreeqc.dat"));
|
||||
CPPUNIT_ASSERT_EQUAL(0, obj.LoadDatabase("..\\database\\phreeqc.dat"));
|
||||
obj.SetSelectedOutputFileOn(true);
|
||||
CPPUNIT_ASSERT_EQUAL(0, obj.RunFile("multi_punch"));
|
||||
|
||||
@ -3498,7 +3498,7 @@ void TestIPhreeqc::TestRunFileMultiPunchOff(void)
|
||||
|
||||
IPhreeqc obj;
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(0, obj.LoadDatabase("phreeqc.dat"));
|
||||
CPPUNIT_ASSERT_EQUAL(0, obj.LoadDatabase("..\\database\\phreeqc.dat"));
|
||||
obj.SetOutputFileOn(false);
|
||||
obj.SetErrorFileOn(false);
|
||||
obj.SetLogFileOn(false);
|
||||
@ -3527,7 +3527,7 @@ void TestIPhreeqc::TestRunFileMultiPunchSet(void)
|
||||
|
||||
IPhreeqc obj;
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(0, obj.LoadDatabase("phreeqc.dat"));
|
||||
CPPUNIT_ASSERT_EQUAL(0, obj.LoadDatabase("..\\database\\phreeqc.dat"));
|
||||
obj.SetSelectedOutputFileOn(true);
|
||||
obj.SetSelectedOutputFileName(called.GetName().c_str());
|
||||
CPPUNIT_ASSERT_EQUAL(0, obj.RunFile("multi_punch"));
|
||||
@ -3555,7 +3555,7 @@ void TestIPhreeqc::TestRunFileMultiPunchNoSet(void)
|
||||
FileTest unset3(obj.sel_file_name(3));
|
||||
CPPUNIT_ASSERT( unset3.RemoveExisting() );
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(0, obj.LoadDatabase("phreeqc.dat"));
|
||||
CPPUNIT_ASSERT_EQUAL(0, obj.LoadDatabase("..\\database\\phreeqc.dat"));
|
||||
obj.SetSelectedOutputFileOn(true);
|
||||
obj.SetSelectedOutputFileName(set.GetName().c_str());
|
||||
CPPUNIT_ASSERT_EQUAL(0, obj.RunFile("multi_punch_no_set"));
|
||||
@ -3565,3 +3565,82 @@ void TestIPhreeqc::TestRunFileMultiPunchNoSet(void)
|
||||
CPPUNIT_ASSERT( unset2.VerifyExists() );
|
||||
CPPUNIT_ASSERT( unset3.VerifyExists() );
|
||||
}
|
||||
|
||||
void TestIPhreeqc::TestMultiPunchSelectedOutputStringOn(void)
|
||||
{
|
||||
IPhreeqc obj;
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(0, obj.LoadDatabase("..\\database\\phreeqc.dat"));
|
||||
obj.SetSelectedOutputStringOn(true);
|
||||
CPPUNIT_ASSERT_EQUAL(0, obj.RunFile("multi_punch"));
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(6, obj.GetSelectedOutputStringLineCount());
|
||||
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "sim\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "state\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "soln\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "dist_x\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "time\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "step\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "pH\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "pe\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "reaction\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "temp\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "Alk\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "mu\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "mass_H2O\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "charge\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "pct_err\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "Na\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "Ca\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "m_Na+\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "m_HCO3-\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "la_Ca+2\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "la_CO3-2\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "CO2(g)\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "d_CO2(g)\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "dolomite\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "d_dolomite\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "si_Halite\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "pressure\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "total mol\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "volume\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "g_N2(g)\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "k_Calcite\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "dk_Calcite\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "s_Anhydrite\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "s_Barite\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "V_TOTAL_C\t") != NULL );
|
||||
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(1), " 8\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(2), " 10\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(3), " 11\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(4), " 12\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(5), " 14\t") != NULL );
|
||||
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(1), "react\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(2), "react\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(3), "i_soln\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(4), "i_soln\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(5), "react\t") != NULL );
|
||||
|
||||
obj.SetCurrentSelectedOutputUserNumber(2);
|
||||
CPPUNIT_ASSERT_EQUAL(7, obj.GetSelectedOutputStringLineCount());
|
||||
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "si_Halite\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(0), "si_Calcite\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(2), "Dummy1\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(2), "Dummy2\t") != NULL );
|
||||
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(3), "Dummy1\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(3), "Dummy2\t") != NULL );
|
||||
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(4), "Dummy1\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(4), "Dummy2\t") != NULL );
|
||||
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(5), "Dummy1\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(5), "Dummy2\t") != NULL );
|
||||
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(6), "Dummy1\t") != NULL );
|
||||
CPPUNIT_ASSERT( ::strstr(obj.GetSelectedOutputStringLine(6), "Dummy2\t") != NULL );
|
||||
}
|
||||
|
||||
@ -68,6 +68,7 @@ class TestIPhreeqc : public CppUnit::TestFixture
|
||||
CPPUNIT_TEST( TestRunFileMultiPunchOff );
|
||||
CPPUNIT_TEST( TestRunFileMultiPunchSet );
|
||||
CPPUNIT_TEST( TestRunFileMultiPunchNoSet );
|
||||
CPPUNIT_TEST( TestMultiPunchSelectedOutputStringOn );
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
|
||||
public:
|
||||
@ -136,6 +137,7 @@ public:
|
||||
void TestRunFileMultiPunchOff(void);
|
||||
void TestRunFileMultiPunchSet(void);
|
||||
void TestRunFileMultiPunchNoSet(void);
|
||||
void TestMultiPunchSelectedOutputStringOn(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);
|
||||
|
||||
@ -410,12 +410,12 @@ TestSelectedOutput::TestTooManyHeadings()
|
||||
{
|
||||
IPhreeqc p;
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)0, p.SelectedOutput->GetColCount());
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)0, p.SelectedOutput->GetRowCount());
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)0, p.PtrSelectedOutput->GetColCount());
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)0, p.PtrSelectedOutput->GetRowCount());
|
||||
|
||||
p.SelectedOutput->Clear();
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)0, p.SelectedOutput->GetColCount());
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)0, p.SelectedOutput->GetRowCount());
|
||||
p.PtrSelectedOutput->Clear();
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)0, p.PtrSelectedOutput->GetColCount());
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)0, p.PtrSelectedOutput->GetRowCount());
|
||||
|
||||
// USER_PUNCH
|
||||
// -headings 1.name 1.type 1.moles
|
||||
@ -431,12 +431,12 @@ TestSelectedOutput::TestTooManyHeadings()
|
||||
p.PhreeqcPtr->UserPunch_map[1].Set_headings(headings);
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(0, p.EndRow());
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)3, p.SelectedOutput->GetColCount());
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)2, p.SelectedOutput->GetRowCount());
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)3, p.PtrSelectedOutput->GetColCount());
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)2, p.PtrSelectedOutput->GetRowCount());
|
||||
|
||||
|
||||
#if defined(_DEBUG)
|
||||
p.SelectedOutput->Dump("TestTooManyHeadings");
|
||||
p.PtrSelectedOutput->Dump("TestTooManyHeadings");
|
||||
#endif
|
||||
|
||||
// clean up headings
|
||||
@ -445,13 +445,13 @@ TestSelectedOutput::TestTooManyHeadings()
|
||||
CVar head0, head1, head2;
|
||||
CVar val0, val1, val2;
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(VR_OK, p.SelectedOutput->Get(0, 0, &head0));
|
||||
CPPUNIT_ASSERT_EQUAL(VR_OK, p.SelectedOutput->Get(0, 1, &head1));
|
||||
CPPUNIT_ASSERT_EQUAL(VR_OK, p.SelectedOutput->Get(0, 2, &head2));
|
||||
CPPUNIT_ASSERT_EQUAL(VR_OK, p.PtrSelectedOutput->Get(0, 0, &head0));
|
||||
CPPUNIT_ASSERT_EQUAL(VR_OK, p.PtrSelectedOutput->Get(0, 1, &head1));
|
||||
CPPUNIT_ASSERT_EQUAL(VR_OK, p.PtrSelectedOutput->Get(0, 2, &head2));
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(VR_OK, p.SelectedOutput->Get(1, 0, &val0));
|
||||
CPPUNIT_ASSERT_EQUAL(VR_OK, p.SelectedOutput->Get(1, 1, &val1));
|
||||
CPPUNIT_ASSERT_EQUAL(VR_OK, p.SelectedOutput->Get(1, 2, &val2));
|
||||
CPPUNIT_ASSERT_EQUAL(VR_OK, p.PtrSelectedOutput->Get(1, 0, &val0));
|
||||
CPPUNIT_ASSERT_EQUAL(VR_OK, p.PtrSelectedOutput->Get(1, 1, &val1));
|
||||
CPPUNIT_ASSERT_EQUAL(VR_OK, p.PtrSelectedOutput->Get(1, 2, &val2));
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(TT_STRING, head0.type);
|
||||
CPPUNIT_ASSERT_EQUAL(TT_STRING, head1.type);
|
||||
@ -466,15 +466,15 @@ TestSelectedOutput::TestTooManyHeadings()
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("1.moles"), std::string(head2.sVal));
|
||||
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(0, p.SelectedOutput->PushBackLong("sim", 1));
|
||||
CPPUNIT_ASSERT_EQUAL(0, p.SelectedOutput->PushBackString("state", "i_soln"));
|
||||
CPPUNIT_ASSERT_EQUAL(0, p.SelectedOutput->PushBackLong("soln", 22));
|
||||
CPPUNIT_ASSERT_EQUAL(0, p.PtrSelectedOutput->PushBackLong("sim", 1));
|
||||
CPPUNIT_ASSERT_EQUAL(0, p.PtrSelectedOutput->PushBackString("state", "i_soln"));
|
||||
CPPUNIT_ASSERT_EQUAL(0, p.PtrSelectedOutput->PushBackLong("soln", 22));
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(0, p.SelectedOutput->EndRow());
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)6, p.SelectedOutput->GetColCount());
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)3, p.SelectedOutput->GetRowCount());
|
||||
CPPUNIT_ASSERT_EQUAL(0, p.PtrSelectedOutput->EndRow());
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)6, p.PtrSelectedOutput->GetColCount());
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)3, p.PtrSelectedOutput->GetRowCount());
|
||||
#if defined(_DEBUG)
|
||||
p.SelectedOutput->Dump("TestTooManyHeadings");
|
||||
p.PtrSelectedOutput->Dump("TestTooManyHeadings");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user