added test for BASIC SURF

git-svn-id: svn://136.177.114.72/svn_GW/IPhreeqc/trunk@7165 1feff8c3-07ed-0310-ac33-dd36852eb9cd
This commit is contained in:
Scott R Charlton 2012-12-05 02:50:14 +00:00
parent cc6d0c2a45
commit 594d832aa3
4 changed files with 285 additions and 11 deletions

View File

@ -3180,55 +3180,59 @@ void TestIPhreeqc::TestLongUser_Punch(void)
std::ostringstream oss;
PHRQ_io::fpunchf_helper(&oss, "%2046.2046s", "TEST");
CPPUNIT_ASSERT_EQUAL((size_t)2046, oss.str().size());
std::string s0(oss.str());
std::string s0(oss.str());
CPPUNIT_ASSERT_EQUAL(std::string("TEST"), trim(s0));
oss.clear(); oss.seekp(0);
PHRQ_io::fpunchf_helper(&oss, "%2047.2047s", "TEST");
CPPUNIT_ASSERT_EQUAL((size_t)2047, oss.str().size());
//CPPUNIT_ASSERT_EQUAL(std::string("TEST"), trim(oss.str()));
std::string s1(oss.str());
CPPUNIT_ASSERT_EQUAL(std::string("TEST"), trim(s1));
oss.clear(); oss.seekp(0);
PHRQ_io::fpunchf_helper(&oss, "%2048.2048s", "TEST");
CPPUNIT_ASSERT_EQUAL((size_t)2048, oss.str().size());
//CPPUNIT_ASSERT_EQUAL(std::string("TEST"), trim(oss.str()));
std::string s2(oss.str());
CPPUNIT_ASSERT_EQUAL(std::string("TEST"), trim(s2));
oss.clear(); oss.seekp(0);
PHRQ_io::fpunchf_helper(&oss, "%2049.2049s", "TEST");
CPPUNIT_ASSERT_EQUAL((size_t)2049, oss.str().size());
//CPPUNIT_ASSERT_EQUAL(std::string("TEST"), trim(oss.str()));
std::string s3(oss.str());
CPPUNIT_ASSERT_EQUAL(std::string("TEST"), trim(s3));
oss.clear(); oss.seekp(0);
PHRQ_io::fpunchf_helper(&oss, "%2050.2050s", "TEST");
CPPUNIT_ASSERT_EQUAL((size_t)2050, oss.str().size());
//CPPUNIT_ASSERT_EQUAL(std::string("TEST"), trim(oss.str()));
std::string s4(oss.str());
CPPUNIT_ASSERT_EQUAL(std::string("TEST"), trim(s4));
// string tests
std::string str;
PHRQ_io::fpunchf_helper(&str, "%2046.2046s", "TEST");
CPPUNIT_ASSERT_EQUAL((size_t)2046, str.size());
//CPPUNIT_ASSERT_EQUAL(std::string("TEST"), trim(str));
CPPUNIT_ASSERT_EQUAL(std::string("TEST"), trim(str));
str.clear();
PHRQ_io::fpunchf_helper(&str, "%2047.2047s", "TEST");
CPPUNIT_ASSERT_EQUAL((size_t)2047, str.size());
//CPPUNIT_ASSERT_EQUAL(std::string("TEST"), trim(str));
CPPUNIT_ASSERT_EQUAL(std::string("TEST"), trim(str));
str.clear();
PHRQ_io::fpunchf_helper(&str, "%2048.2048s", "TEST");
CPPUNIT_ASSERT_EQUAL((size_t)2048, str.size());
//CPPUNIT_ASSERT_EQUAL(std::string("TEST"), trim(str));
CPPUNIT_ASSERT_EQUAL(std::string("TEST"), trim(str));
str.clear();
PHRQ_io::fpunchf_helper(&str, "%2049.2049s", "TEST");
CPPUNIT_ASSERT_EQUAL((size_t)2049, str.size());
//CPPUNIT_ASSERT_EQUAL(std::string("TEST"), trim(str));
CPPUNIT_ASSERT_EQUAL(std::string("TEST"), trim(str));
str.clear();
PHRQ_io::fpunchf_helper(&str, "%2050.2050s", "TEST");
CPPUNIT_ASSERT_EQUAL((size_t)2050, str.size());
//CPPUNIT_ASSERT_EQUAL(std::string("TEST"), trim(str));
CPPUNIT_ASSERT_EQUAL(std::string("TEST"), trim(str));
const char input[] =
"PRINT\n"
@ -3246,3 +3250,132 @@ void TestIPhreeqc::TestLongUser_Punch(void)
CPPUNIT_ASSERT_EQUAL(0, obj.LoadDatabase("phreeqc.dat"));
CPPUNIT_ASSERT_EQUAL(0, obj.RunString(input));
}
void TestIPhreeqc::TestBasicSURF(void)
{
IPhreeqc obj;
CPPUNIT_ASSERT_EQUAL( 0, obj.LoadDatabase("phreeqc.dat"));
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine("SURFACE_MASTER_SPECIES") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" Surfa Surfa") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" Surfb Surfb") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine("SURFACE_SPECIES") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" Surfa = Surfa") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" log_k 0") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" Surfb = Surfb") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" log_k 0") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" Surfa + Zn+2 = SurfaZn+2") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" log_k 5.") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" Surfb + Zn+2 = SurfbZn+2") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" log_k 6.") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" Surfa + Cu+2 = SurfaCu+2") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" log_k 4.5") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" Surfb + Cu+2 = SurfbCu+2") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" log_k 6.5") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine("SOLUTION 1") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" pH 8") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" units mol/kgw") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" Fe(3) 1e-2") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" Zn 1e-4") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" Cu 1e-5") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" Na 1e-1") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" Cl 1e-1") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine("EQUILIBRIUM_PHASES 1") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" Fe(OH)3(a) 0 0") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine("SELECTED_OUTPUT") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine("USER_PUNCH") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" -headings Hfo-Zn Surfa-Zn Surfb-Zn Surfa-Cu Surfb-Cu") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine("-start") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine("10 PUNCH SURF(\"Zn\",\"Hfo\")") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine("20 PUNCH SURF(\"Zn\",\"Surfa\")") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine("30 PUNCH SURF(\"Zn\",\"Surfb\")") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine("40 PUNCH SURF(\"Cu\",\"Surfa\")") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine("50 PUNCH SURF(\"Cu\",\"Surfb\")") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine("-end") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine("SURFACE 1") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" Hfo_sOH Fe(OH)3(a) equilibrium_phase 0.005 53300") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" Hfo_wOH Fe(OH)3(a) equilibrium_phase 0.2") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" Surfa 0.2 100. 2") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine(" Surfb 0.1 100. 1") );
CPPUNIT_ASSERT_EQUAL( VR_OK, obj.AccumulateLine("END") );
obj.SetOutputStringOn(true);
obj.SetOutputFileOn(false);
obj.SetErrorFileOn(false);
obj.SetLogFileOn(false);
obj.SetSelectedOutputFileOn(false);
obj.SetDumpStringOn(false);
obj.SetDumpFileOn(false);
CPPUNIT_ASSERT_EQUAL( 0, obj.RunAccumulated() );
CPPUNIT_ASSERT_EQUAL(13, obj.GetSelectedOutputColumnCount());
CPPUNIT_ASSERT_EQUAL(3, obj.GetSelectedOutputRowCount());
CVar v;
const int offset = 8;
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(0, offset + 0, &v));
CPPUNIT_ASSERT_EQUAL(TT_STRING, v.type);
CPPUNIT_ASSERT_EQUAL(std::string("Hfo-Zn"), std::string(v.sVal));
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(0, offset + 1, &v));
CPPUNIT_ASSERT_EQUAL(TT_STRING, v.type);
CPPUNIT_ASSERT_EQUAL(std::string("Surfa-Zn"), std::string(v.sVal));
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(0, offset + 2, &v));
CPPUNIT_ASSERT_EQUAL(TT_STRING, v.type);
CPPUNIT_ASSERT_EQUAL(std::string("Surfb-Zn"), std::string(v.sVal));
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(0, offset + 3, &v));
CPPUNIT_ASSERT_EQUAL(TT_STRING, v.type);
CPPUNIT_ASSERT_EQUAL(std::string("Surfa-Cu"), std::string(v.sVal));
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(0, offset + 4, &v));
CPPUNIT_ASSERT_EQUAL(TT_STRING, v.type);
CPPUNIT_ASSERT_EQUAL(std::string("Surfb-Cu"), std::string(v.sVal));
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(1, offset + 0, &v));
CPPUNIT_ASSERT_EQUAL(TT_DOUBLE, v.type);
CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, v.dVal, ::pow(10., -FLT_DIG) );
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(1, offset + 1, &v));
CPPUNIT_ASSERT_EQUAL(TT_DOUBLE, v.type);
CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, v.dVal, ::pow(10., -FLT_DIG) );
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(1, offset + 2, &v));
CPPUNIT_ASSERT_EQUAL(TT_DOUBLE, v.type);
CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, v.dVal, ::pow(10., -FLT_DIG) );
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(1, offset + 3, &v));
CPPUNIT_ASSERT_EQUAL(TT_DOUBLE, v.type);
CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, v.dVal, ::pow(10., -FLT_DIG) );
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(1, offset + 4, &v));
CPPUNIT_ASSERT_EQUAL(TT_DOUBLE, v.type);
CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, v.dVal, ::pow(10., -FLT_DIG) );
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(2, offset + 0, &v));
CPPUNIT_ASSERT_EQUAL(TT_DOUBLE, v.type);
CPPUNIT_ASSERT_DOUBLES_EQUAL( 6.3861e-005, v.dVal, ::pow(10., -FLT_DIG) );
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(2, offset + 1, &v));
CPPUNIT_ASSERT_EQUAL(TT_DOUBLE, v.type);
CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.7868e-005, v.dVal, ::pow(10., -FLT_DIG) );
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(2, offset + 2, &v));
CPPUNIT_ASSERT_EQUAL(TT_DOUBLE, v.type);
CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.8248e-005, v.dVal, ::pow(10., -FLT_DIG) );
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(2, offset + 3, &v));
CPPUNIT_ASSERT_EQUAL(TT_DOUBLE, v.type);
CPPUNIT_ASSERT_DOUBLES_EQUAL( 4.6216e-009, v.dVal, ::pow(10., -FLT_DIG) );
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(2, offset + 4, &v));
CPPUNIT_ASSERT_EQUAL(TT_DOUBLE, v.type);
CPPUNIT_ASSERT_DOUBLES_EQUAL( 4.7201e-008, v.dVal, ::pow(10., -FLT_DIG) );
}

View File

@ -61,6 +61,7 @@ class TestIPhreeqc : public CppUnit::TestFixture
CPPUNIT_TEST( TestGetSelectedOutputStringLine );
CPPUNIT_TEST( TestGetSelectedOutputStringLineNotEnoughHeadings );
CPPUNIT_TEST( TestLongUser_Punch );
CPPUNIT_TEST( TestBasicSURF );
CPPUNIT_TEST_SUITE_END();
public:
@ -122,6 +123,7 @@ public:
void TestGetSelectedOutputStringLine(void);
void TestGetSelectedOutputStringLineNotEnoughHeadings(void);
void TestLongUser_Punch(void);
void TestBasicSURF(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

@ -302,7 +302,7 @@ void TestIPhreeqcLib::TestRunWithErrors()
{
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::DestroyIPhreeqc(n));
}
//::Sleep(100);
CPPUNIT_ASSERT_EQUAL( true, ::FileExists(dump_file) );
CPPUNIT_ASSERT( ::FileSize(dump_file) > 0 );
CPPUNIT_ASSERT(::DeleteFile(dump_file));
@ -3991,3 +3991,140 @@ void TestIPhreeqcLib::TestLongUser_Punch(void)
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::DestroyIPhreeqc(n));
}
}
void TestIPhreeqcLib::TestBasicSURF(void)
{
int n = ::CreateIPhreeqc();
CPPUNIT_ASSERT(n >= 0);
CPPUNIT_ASSERT_EQUAL( 0, ::LoadDatabase(n, "phreeqc.dat") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, "SURFACE_MASTER_SPECIES") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " Surfa Surfa") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " Surfb Surfb") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, "SURFACE_SPECIES") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " Surfa = Surfa") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " log_k 0") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " Surfb = Surfb") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " log_k 0") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " Surfa + Zn+2 = SurfaZn+2") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " log_k 5.") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " Surfb + Zn+2 = SurfbZn+2") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " log_k 6.") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " Surfa + Cu+2 = SurfaCu+2") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " log_k 4.5") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " Surfb + Cu+2 = SurfbCu+2") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " log_k 6.5") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, "SOLUTION 1") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " pH 8") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " units mol/kgw") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " Fe(3) 1e-2") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " Zn 1e-4") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " Cu 1e-5") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " Na 1e-1") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " Cl 1e-1") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, "EQUILIBRIUM_PHASES 1") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " Fe(OH)3(a) 0 0") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, "SELECTED_OUTPUT") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, "USER_PUNCH") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " -headings Hfo-Zn Surfa-Zn Surfb-Zn Surfa-Cu Surfb-Cu") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, "-start") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, "10 PUNCH SURF(\"Zn\",\"Hfo\")") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, "20 PUNCH SURF(\"Zn\",\"Surfa\")") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, "30 PUNCH SURF(\"Zn\",\"Surfb\")") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, "40 PUNCH SURF(\"Cu\",\"Surfa\")") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, "50 PUNCH SURF(\"Cu\",\"Surfb\")") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, "-end") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, "SURFACE 1") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " Hfo_sOH Fe(OH)3(a) equilibrium_phase 0.005 53300") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " Hfo_wOH Fe(OH)3(a) equilibrium_phase 0.2") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " Surfa 0.2 100. 2") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, " Surfb 0.1 100. 1") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::AccumulateLine(n, "END") );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::SetOutputFileOn(n, 0) );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::SetOutputStringOn(n, 0) );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::SetErrorFileOn(n, 0) );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::SetLogFileOn(n, 0) );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::SetSelectedOutputFileOn(n, 0) );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::SetDumpStringOn(n, 0) );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::SetDumpFileOn(n, 0) );
CPPUNIT_ASSERT_EQUAL( 0, ::RunAccumulated(n) );
CPPUNIT_ASSERT_EQUAL(13, ::GetSelectedOutputColumnCount(n));
CPPUNIT_ASSERT_EQUAL(3, ::GetSelectedOutputRowCount(n));
CVar v;
const int offset = 8;
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(n, 0, offset + 0, &v));
CPPUNIT_ASSERT_EQUAL(TT_STRING, v.type);
CPPUNIT_ASSERT_EQUAL(std::string("Hfo-Zn"), std::string(v.sVal));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(n, 0, offset + 1, &v));
CPPUNIT_ASSERT_EQUAL(TT_STRING, v.type);
CPPUNIT_ASSERT_EQUAL(std::string("Surfa-Zn"), std::string(v.sVal));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(n, 0, offset + 2, &v));
CPPUNIT_ASSERT_EQUAL(TT_STRING, v.type);
CPPUNIT_ASSERT_EQUAL(std::string("Surfb-Zn"), std::string(v.sVal));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(n, 0, offset + 3, &v));
CPPUNIT_ASSERT_EQUAL(TT_STRING, v.type);
CPPUNIT_ASSERT_EQUAL(std::string("Surfa-Cu"), std::string(v.sVal));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(n, 0, offset + 4, &v));
CPPUNIT_ASSERT_EQUAL(TT_STRING, v.type);
CPPUNIT_ASSERT_EQUAL(std::string("Surfb-Cu"), std::string(v.sVal));
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(n, 1, offset + 0, &v));
CPPUNIT_ASSERT_EQUAL(TT_DOUBLE, v.type);
CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, v.dVal, ::pow(10., -FLT_DIG) );
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(n, 1, offset + 1, &v));
CPPUNIT_ASSERT_EQUAL(TT_DOUBLE, v.type);
CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, v.dVal, ::pow(10., -FLT_DIG) );
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(n, 1, offset + 2, &v));
CPPUNIT_ASSERT_EQUAL(TT_DOUBLE, v.type);
CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, v.dVal, ::pow(10., -FLT_DIG) );
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(n, 1, offset + 3, &v));
CPPUNIT_ASSERT_EQUAL(TT_DOUBLE, v.type);
CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, v.dVal, ::pow(10., -FLT_DIG) );
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(n, 1, offset + 4, &v));
CPPUNIT_ASSERT_EQUAL(TT_DOUBLE, v.type);
CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, v.dVal, ::pow(10., -FLT_DIG) );
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(n, 2, offset + 0, &v));
CPPUNIT_ASSERT_EQUAL(TT_DOUBLE, v.type);
CPPUNIT_ASSERT_DOUBLES_EQUAL( 6.3861e-005, v.dVal, ::pow(10., -FLT_DIG) );
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(n, 2, offset + 1, &v));
CPPUNIT_ASSERT_EQUAL(TT_DOUBLE, v.type);
CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.7868e-005, v.dVal, ::pow(10., -FLT_DIG) );
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(n, 2, offset + 2, &v));
CPPUNIT_ASSERT_EQUAL(TT_DOUBLE, v.type);
CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.8248e-005, v.dVal, ::pow(10., -FLT_DIG) );
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(n, 2, offset + 3, &v));
CPPUNIT_ASSERT_EQUAL(TT_DOUBLE, v.type);
CPPUNIT_ASSERT_DOUBLES_EQUAL( 4.6216e-009, v.dVal, ::pow(10., -FLT_DIG) );
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(n, 2, offset + 4, &v));
CPPUNIT_ASSERT_EQUAL(TT_DOUBLE, v.type);
CPPUNIT_ASSERT_DOUBLES_EQUAL( 4.7201e-008, v.dVal, ::pow(10., -FLT_DIG) );
if (n >= 0)
{
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::DestroyIPhreeqc(n));
}
}

View File

@ -68,6 +68,7 @@ class TestIPhreeqcLib : public CppUnit::TestFixture
CPPUNIT_TEST( TestGetSelectedOutputStringLine );
CPPUNIT_TEST( TestGetSelectedOutputStringLineNotEnoughHeadings );
CPPUNIT_TEST( TestLongUser_Punch );
CPPUNIT_TEST( TestBasicSURF );
CPPUNIT_TEST_SUITE_END();
public:
@ -136,6 +137,7 @@ public:
void TestGetSelectedOutputStringLine(void);
void TestGetSelectedOutputStringLineNotEnoughHeadings(void);
void TestLongUser_Punch(void);
void TestBasicSURF(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);