mirror of
https://git.gfz-potsdam.de/naaice/iphreeqc.git
synced 2025-12-15 16:18:22 +01:00
Fixed bug that caused selected_output to
accumulate in selected_output storage
This commit is contained in:
parent
41d3a2b050
commit
9919afd8ab
@ -614,11 +614,11 @@ TEST(TestIPhreeqc, TestRunString)
|
||||
|
||||
ASSERT_EQ(false, ::FileExists(OUTPUT_FILE));
|
||||
ASSERT_EQ(0, obj.LoadDatabase("phreeqc.dat"));
|
||||
obj.SetOutputFileOn(1);
|
||||
obj.SetErrorFileOn(0);
|
||||
obj.SetLogFileOn(0);
|
||||
obj.SetSelectedOutputFileOn(0);
|
||||
obj.SetDumpFileOn(0);
|
||||
obj.SetOutputFileOn(true);
|
||||
obj.SetErrorFileOn(false);
|
||||
obj.SetLogFileOn(false);
|
||||
obj.SetSelectedOutputFileOn(false);
|
||||
obj.SetDumpFileOn(false);
|
||||
ASSERT_EQ(false, ::FileExists(OUTPUT_FILE));
|
||||
ASSERT_EQ(0, obj.RunString(input));
|
||||
|
||||
@ -662,11 +662,11 @@ TEST(TestIPhreeqc, TestGetSelectedOutputValue)
|
||||
ASSERT_EQ(VR_OK, EQUILIBRIUM_PHASES(obj, "calcite", 0.0, 0.010));
|
||||
ASSERT_EQ(VR_OK, USER_PUNCH(obj, "Ca", max));
|
||||
|
||||
obj.SetOutputFileOn(0);
|
||||
obj.SetErrorFileOn(0);
|
||||
obj.SetLogFileOn(0);
|
||||
obj.SetSelectedOutputFileOn(0);
|
||||
obj.SetDumpFileOn(0);
|
||||
obj.SetOutputFileOn(false);
|
||||
obj.SetErrorFileOn(false);
|
||||
obj.SetLogFileOn(false);
|
||||
obj.SetSelectedOutputFileOn(false);
|
||||
obj.SetDumpFileOn(false);
|
||||
ASSERT_EQ(0, obj.RunAccumulated());
|
||||
|
||||
/*
|
||||
@ -1799,11 +1799,11 @@ TEST(TestIPhreeqc, TestLongHeadings)
|
||||
// COMMENT: {10/30/2013 10:39:40 PM} ASSERT_EQ( VR_OK, obj.AccumulateLine(oss.str().c_str()) );
|
||||
// COMMENT: {10/30/2013 10:39:40 PM} //}}
|
||||
|
||||
obj.SetOutputFileOn(0);
|
||||
obj.SetErrorFileOn(0);
|
||||
obj.SetLogFileOn(0);
|
||||
obj.SetSelectedOutputFileOn(0);
|
||||
obj.SetDumpFileOn(0);
|
||||
obj.SetOutputFileOn(false);
|
||||
obj.SetErrorFileOn(false);
|
||||
obj.SetLogFileOn(false);
|
||||
obj.SetSelectedOutputFileOn(false);
|
||||
obj.SetDumpFileOn(false);
|
||||
ASSERT_EQ(0, obj.RunAccumulated());
|
||||
|
||||
ASSERT_EQ(2, obj.GetSelectedOutputRowCount());
|
||||
@ -1866,12 +1866,12 @@ TEST(TestIPhreeqc, TestDumpString)
|
||||
ASSERT_EQ(VR_OK, DUMP(obj));
|
||||
|
||||
// run
|
||||
obj.SetOutputFileOn(0);
|
||||
obj.SetErrorFileOn(0);
|
||||
obj.SetLogFileOn(0);
|
||||
obj.SetSelectedOutputFileOn(0);
|
||||
obj.SetDumpFileOn(0);
|
||||
obj.SetDumpStringOn(1);
|
||||
obj.SetOutputFileOn(false);
|
||||
obj.SetErrorFileOn(false);
|
||||
obj.SetLogFileOn(false);
|
||||
obj.SetSelectedOutputFileOn(false);
|
||||
obj.SetDumpFileOn(false);
|
||||
obj.SetDumpStringOn(true);
|
||||
ASSERT_EQ(0, obj.RunAccumulated());
|
||||
|
||||
const char* dump_str = obj.GetDumpString();
|
||||
@ -3107,7 +3107,7 @@ TEST(TestIPhreeqc, TestSetSelectedOutputFileName)
|
||||
ASSERT_EQ(false, obj.GetDumpFileOn());
|
||||
ASSERT_EQ(false, obj.GetDumpStringOn());
|
||||
|
||||
obj.SetSelectedOutputFileOn(1);
|
||||
obj.SetSelectedOutputFileOn(true);
|
||||
obj.SetSelectedOutputFileName(SELOUT_FILENAME);
|
||||
|
||||
ASSERT_EQ(0, obj.RunAccumulated());
|
||||
@ -3249,14 +3249,48 @@ TEST(TestIPhreeqc, TestGetSelectedOutputStringLineCount)
|
||||
ASSERT_EQ(false, obj.GetDumpFileOn());
|
||||
ASSERT_EQ(false, obj.GetDumpStringOn());
|
||||
|
||||
ASSERT_EQ(false, obj.GetSelectedOutputStringOn() != 0);
|
||||
ASSERT_EQ(false, obj.GetSelectedOutputStringOn());
|
||||
obj.SetSelectedOutputStringOn(true);
|
||||
ASSERT_EQ(true, obj.GetSelectedOutputStringOn());
|
||||
|
||||
ASSERT_EQ(0, obj.RunAccumulated());
|
||||
|
||||
ASSERT_EQ(3, obj.GetSelectedOutputStringLineCount());
|
||||
}
|
||||
|
||||
TEST(TestIPhreeqc, TestGetSelectedOutputStringLineCountMultipleRuns)
|
||||
{
|
||||
IPhreeqc obj;
|
||||
|
||||
obj.LoadDatabase("llnl.dat");
|
||||
ASSERT_EQ(false, obj.GetSelectedOutputStringOn());
|
||||
obj.SetSelectedOutputStringOn(true);
|
||||
ASSERT_EQ(true, obj.GetSelectedOutputStringOn());
|
||||
|
||||
obj.RunString(R"(
|
||||
SOLUTION 1
|
||||
C 1
|
||||
Ca 1
|
||||
Na 1
|
||||
|
||||
EQUILIBRIUM_PHASES
|
||||
calcite 0 0.01
|
||||
|
||||
SELECTED_OUTPUT
|
||||
-totals C Ca Na
|
||||
)");
|
||||
|
||||
ASSERT_EQ(3, obj.GetSelectedOutputStringLineCount()); // header + i_soln + react
|
||||
|
||||
obj.RunString(R"(
|
||||
SOLUTION 1
|
||||
C 2
|
||||
Ca 2
|
||||
Na 2
|
||||
)");
|
||||
ASSERT_EQ(2, obj.GetSelectedOutputStringLineCount()); // header + i_soln
|
||||
}
|
||||
|
||||
TEST(TestIPhreeqc, TestGetSelectedOutputStringLine)
|
||||
{
|
||||
IPhreeqc obj;
|
||||
@ -3299,8 +3333,9 @@ TEST(TestIPhreeqc, TestGetSelectedOutputStringLine)
|
||||
ASSERT_EQ(VR_OK, ::EQUILIBRIUM_PHASES(obj, "calcite", 0.0, 0.010));
|
||||
ASSERT_EQ(VR_OK, ::USER_PUNCH(obj, "Ca", max));
|
||||
|
||||
ASSERT_EQ(false, obj.GetSelectedOutputStringOn() != 0);
|
||||
ASSERT_EQ(false, obj.GetSelectedOutputStringOn());
|
||||
obj.SetSelectedOutputStringOn(true);
|
||||
ASSERT_EQ(true, obj.GetSelectedOutputStringOn());
|
||||
|
||||
ASSERT_EQ(0, obj.RunAccumulated());
|
||||
ASSERT_EQ(3, obj.GetSelectedOutputStringLineCount());
|
||||
|
||||
@ -1164,7 +1164,6 @@ void IPhreeqc::check_database(const char* sz_routine)
|
||||
delete (*it).second;
|
||||
}
|
||||
this->SelectedOutputMap.clear();
|
||||
this->SelectedOutputStringMap.clear();
|
||||
|
||||
// release
|
||||
this->LogString.clear();
|
||||
@ -1172,13 +1171,15 @@ void IPhreeqc::check_database(const char* sz_routine)
|
||||
this->OutputString.clear();
|
||||
this->OutputLines.clear();
|
||||
|
||||
// clear selected_output string storage
|
||||
// GetSelectedOutputStringLine and GetSelectedOutputString
|
||||
std::map< int, std::string >::iterator mit = SelectedOutputStringMap.begin();
|
||||
for (; mit != SelectedOutputStringMap.begin(); ++mit)
|
||||
for (; mit != SelectedOutputStringMap.end(); ++mit)
|
||||
{
|
||||
(*mit).second.clear();
|
||||
}
|
||||
std::map< int, std::vector< std::string > >::iterator lit = this->SelectedOutputLinesMap.begin();
|
||||
for (; lit != this->SelectedOutputLinesMap.begin(); ++lit)
|
||||
for (; lit != this->SelectedOutputLinesMap.end(); ++lit)
|
||||
{
|
||||
(*lit).second.clear();
|
||||
}
|
||||
@ -1245,6 +1246,18 @@ void IPhreeqc::do_run(const char* sz_routine, std::istream* pis, PFN_PRERUN_CALL
|
||||
this->PhreeqcPtr->dup_print(token, TRUE);
|
||||
if (this->PhreeqcPtr->read_input() == EOF)
|
||||
break;
|
||||
|
||||
if (this->PhreeqcPtr->simulation == 1)
|
||||
{
|
||||
// force headings for selected output (on every call to do_run)
|
||||
// might want to split tidy_punch to avoid duplicate searches like master_bsearch
|
||||
std::map< int, SelectedOutput >::iterator pit = this->PhreeqcPtr->SelectedOutput_map.begin();
|
||||
for (; pit != this->PhreeqcPtr->SelectedOutput_map.end(); ++pit)
|
||||
{
|
||||
(*pit).second.Set_new_def(true);
|
||||
this->PhreeqcPtr->keycount[Keywords::KEY_SELECTED_OUTPUT] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
// bool bWarning = false;
|
||||
std::map< int, SelectedOutput >::iterator mit = this->PhreeqcPtr->SelectedOutput_map.begin();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user