Added some assertions; optimized GetSelectedOutputValue; added some multi selected-output tests

git-svn-id: svn://136.177.114.72/svn_GW/IPhreeqc/trunk@8285 1feff8c3-07ed-0310-ac33-dd36852eb9cd
This commit is contained in:
Scott R Charlton 2013-12-05 23:59:31 +00:00
parent ed49fe9309
commit 0b6695be8f
6 changed files with 193 additions and 8 deletions

View File

@ -369,6 +369,7 @@ int IPhreeqc::GetSelectedOutputColumnCount(void)const
int IPhreeqc::GetSelectedOutputCount(void)const
{
ASSERT(this->PhreeqcPtr->SelectedOutput_map.size() == this->CurrentSelectedOutputMap.size());
return (int) this->PhreeqcPtr->SelectedOutput_map.size();
}
@ -459,21 +460,27 @@ VRESULT IPhreeqc::GetSelectedOutputValue(int row, int col, VAR* pVAR)
{
case VR_OK:
break;
case VR_INVALIDROW:
this->AddError("GetSelectedOutputValue: VR_INVALIDROW Row index out of range.\n");
this->update_errors();
break;
case VR_INVALIDCOL:
this->AddError("GetSelectedOutputValue: VR_INVALIDCOL Column index out of range.\n");
this->update_errors();
break;
case VR_OUTOFMEMORY:
this->AddError("GetSelectedOutputValue: VR_OUTOFMEMORY Out of memory.\n");
this->update_errors();
break;
case VR_BADVARTYPE:
this->AddError("GetSelectedOutputValue: VR_BADVARTYPE pVar must be initialized(VarInit) and/or cleared(VarClear).\n");
this->update_errors();
break;
case VR_INVALIDARG:
// not possible
break;
case VR_INVALIDROW:
this->AddError("GetSelectedOutputValue: VR_INVALIDROW Row index out of range.\n");
break;
case VR_INVALIDCOL:
this->AddError("GetSelectedOutputValue: VR_INVALIDCOL Column index out of range.\n");
break;
default:
assert(0);
}
}
else
@ -482,8 +489,8 @@ VRESULT IPhreeqc::GetSelectedOutputValue(int row, int col, VAR* pVAR)
v = VR_INVALIDARG;
::sprintf(buffer, "GetSelectedOutputValue: VR_INVALIDARG Invalid selected-output user number %d.\n", this->CurrentSelectedOutputUserNumber);
this->AddError(buffer);
this->update_errors();
}
this->update_errors();
return v;
}
@ -1124,6 +1131,7 @@ void IPhreeqc::do_run(const char* sz_routine, std::istream* pis, PFN_PRERUN_CALL
ASSERT(this->SelectedOutputMap[(*mit).first] == this->CurrentSelectedOutputMap[&(*mit).second]);
}
}
ASSERT(this->PhreeqcPtr->SelectedOutput_map.size() == this->CurrentSelectedOutputMap.size());
if (this->PhreeqcPtr->title_x != NULL)
{
::sprintf(token, "TITLE");

View File

@ -4078,3 +4078,83 @@ void TestIPhreeqc::TestMultiSetSelectedOutputFileName(void)
CPPUNIT_ASSERT( set1.VerifyExists() );
CPPUNIT_ASSERT( set2.VerifyExists() );
}
void TestIPhreeqc::TestWissmeier20131203(void)
{
IPhreeqc obj;
CPPUNIT_ASSERT_EQUAL(0, obj.LoadDatabase("../database/phreeqc.dat"));
obj.AccumulateLine("selected_output 1");
obj.AccumulateLine("-totals O");
obj.AccumulateLine("");
obj.AccumulateLine("END");
obj.AccumulateLine("selected_output 1");
obj.AccumulateLine("-totals H");
obj.AccumulateLine("");
obj.AccumulateLine("solution");
obj.AccumulateLine("END");
obj.AccumulateLine("selected_output");
// original asserts here
CPPUNIT_ASSERT_EQUAL(0, obj.RunAccumulated());
CPPUNIT_ASSERT_EQUAL( 1, obj.GetSelectedOutputCount() );
CPPUNIT_ASSERT_EQUAL( 9, obj.GetSelectedOutputColumnCount() );
CPPUNIT_ASSERT_EQUAL( 2, obj.GetSelectedOutputRowCount() );
}
void TestIPhreeqc::TestWissmeier20131203_2(void)
{
IPhreeqc obj;
CPPUNIT_ASSERT_EQUAL(0, obj.LoadDatabase("../database/phreeqc.dat"));
obj.AccumulateLine("selected_output 22");
obj.AccumulateLine("-totals O");
obj.AccumulateLine("");
obj.AccumulateLine("END");
obj.AccumulateLine("selected_output 22");
obj.AccumulateLine("-totals H");
obj.AccumulateLine("");
obj.AccumulateLine("solution");
obj.AccumulateLine("END");
obj.AccumulateLine("selected_output 22");
// original asserts here
CPPUNIT_ASSERT_EQUAL(0, obj.RunAccumulated());
CPPUNIT_ASSERT_EQUAL( 1, obj.GetSelectedOutputCount() );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.SetCurrentSelectedOutputUserNumber(22) );
CPPUNIT_ASSERT_EQUAL( 1, obj.GetSelectedOutputColumnCount() );
CPPUNIT_ASSERT_EQUAL( 2, obj.GetSelectedOutputRowCount() );
}
void TestIPhreeqc::TestWissmeier20131203_3(void)
{
IPhreeqc obj;
CPPUNIT_ASSERT_EQUAL(0, obj.LoadDatabase("../database/phreeqc.dat"));
obj.AccumulateLine("selected_output 1");
obj.AccumulateLine("-reset false");
obj.AccumulateLine("-totals O");
obj.AccumulateLine("");
obj.AccumulateLine("END");
obj.AccumulateLine("selected_output 1");
obj.AccumulateLine("-reset false");
obj.AccumulateLine("-totals H");
obj.AccumulateLine("");
obj.AccumulateLine("solution");
obj.AccumulateLine("END");
obj.AccumulateLine("selected_output");
obj.AccumulateLine("-reset false");
// original asserts here
CPPUNIT_ASSERT_EQUAL(0, obj.RunAccumulated());
CPPUNIT_ASSERT_EQUAL( 1, obj.GetSelectedOutputCount() );
CPPUNIT_ASSERT_EQUAL( 1, obj.GetSelectedOutputColumnCount() );
CPPUNIT_ASSERT_EQUAL( 2, obj.GetSelectedOutputRowCount() );
}

View File

@ -74,6 +74,9 @@ class TestIPhreeqc : public CppUnit::TestFixture
CPPUNIT_TEST( TestGetNthSelectedOutputUserNumber );
CPPUNIT_TEST( TestGetCurrentSelectedOutputUserNumber );
CPPUNIT_TEST( TestMultiSetSelectedOutputFileName );
CPPUNIT_TEST( TestWissmeier20131203 );
CPPUNIT_TEST( TestWissmeier20131203_2 );
CPPUNIT_TEST( TestWissmeier20131203_3 );
CPPUNIT_TEST_SUITE_END();
public:
@ -148,6 +151,9 @@ public:
void TestGetNthSelectedOutputUserNumber(void);
void TestGetCurrentSelectedOutputUserNumber(void);
void TestMultiSetSelectedOutputFileName(void);
void TestWissmeier20131203(void);
void TestWissmeier20131203_2(void);
void TestWissmeier20131203_3(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

@ -4404,4 +4404,89 @@ void TestIPhreeqcLib::TestMultiSetSelectedOutputFileName(void)
CPPUNIT_ASSERT( set1.VerifyExists() );
CPPUNIT_ASSERT( set2.VerifyExists() );
}
void TestIPhreeqcLib::TestWissmeier20131203(void)
{
int id = ::CreateIPhreeqc();
CPPUNIT_ASSERT(id >= 0);
CPPUNIT_ASSERT_EQUAL(0, ::LoadDatabase(id, "../database/phreeqc.dat"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "selected_output 1"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "-totals O"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, ""));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "END"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "selected_output 1"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "-totals H"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, ""));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "solution"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "END"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "selected_output"));
// original asserts here
CPPUNIT_ASSERT_EQUAL( 0, ::RunAccumulated(id));
CPPUNIT_ASSERT_EQUAL( 1, ::GetSelectedOutputCount(id) );
CPPUNIT_ASSERT_EQUAL( 9, ::GetSelectedOutputColumnCount(id) );
CPPUNIT_ASSERT_EQUAL( 2, ::GetSelectedOutputRowCount(id) );
}
void TestIPhreeqcLib::TestWissmeier20131203_2(void)
{
int id = ::CreateIPhreeqc();
CPPUNIT_ASSERT(id >= 0);
CPPUNIT_ASSERT_EQUAL(0, ::LoadDatabase(id, "../database/phreeqc.dat"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "selected_output 22"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "-totals O"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, ""));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "END"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "selected_output 22"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "-totals H"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, ""));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "solution"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "END"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "selected_output 22"));
// original asserts here
CPPUNIT_ASSERT_EQUAL( 0, ::RunAccumulated(id));
CPPUNIT_ASSERT_EQUAL( 1, ::GetSelectedOutputCount(id) );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::SetCurrentSelectedOutputUserNumber(id, 22) );
CPPUNIT_ASSERT_EQUAL( 1, ::GetSelectedOutputColumnCount(id) );
CPPUNIT_ASSERT_EQUAL( 2, ::GetSelectedOutputRowCount(id) );
}
void TestIPhreeqcLib::TestWissmeier20131203_3(void)
{
int id = ::CreateIPhreeqc();
CPPUNIT_ASSERT(id >= 0);
CPPUNIT_ASSERT_EQUAL(0, ::LoadDatabase(id, "../database/phreeqc.dat"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "selected_output 1"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "-reset false"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "-totals O"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, ""));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "END"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "selected_output 1"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "-reset false"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "-totals H"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, ""));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "solution"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "END"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "selected_output"));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::AccumulateLine(id, "-reset false"));
// original asserts here
CPPUNIT_ASSERT_EQUAL( 0, ::RunAccumulated(id));
CPPUNIT_ASSERT_EQUAL( 1, ::GetSelectedOutputCount(id) );
CPPUNIT_ASSERT_EQUAL( 1, ::GetSelectedOutputColumnCount(id) );
CPPUNIT_ASSERT_EQUAL( 2, ::GetSelectedOutputRowCount(id) );
}

View File

@ -76,6 +76,9 @@ class TestIPhreeqcLib : public CppUnit::TestFixture
CPPUNIT_TEST( TestGetNthSelectedOutputUserNumber );
CPPUNIT_TEST( TestGetCurrentSelectedOutputUserNumber );
CPPUNIT_TEST( TestMultiSetSelectedOutputFileName );
CPPUNIT_TEST( TestWissmeier20131203 );
CPPUNIT_TEST( TestWissmeier20131203_2 );
CPPUNIT_TEST( TestWissmeier20131203_3 );
CPPUNIT_TEST_SUITE_END();
public:
@ -152,6 +155,9 @@ public:
void TestGetNthSelectedOutputUserNumber(void);
void TestGetCurrentSelectedOutputUserNumber(void);
void TestMultiSetSelectedOutputFileName(void);
void TestWissmeier20131203(void);
void TestWissmeier20131203_2(void);
void TestWissmeier20131203_3(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);

View File

@ -92,7 +92,7 @@ int main(int argc, char **argv)
#if defined(_MSC_VER)
s.stopTimer();
std::cerr << s.getElapsedTime() << std::endl;
std::cerr << "Elapsed time: " << s.getElapsedTime() << std::endl;
#endif
return wasSucessful ? 0 : 1;