mirror of
https://git.gfz-potsdam.de/naaice/iphreeqc.git
synced 2025-12-16 00:28:23 +01:00
149 lines
2.3 KiB
C
149 lines
2.3 KiB
C
#include <stdlib.h>
|
|
#include <IPhreeqc.h>
|
|
|
|
typedef int (*getFunc)(int);
|
|
typedef IPQ_RESULT (*setFunc)(int, int);
|
|
int TestGetSet(int, getFunc, setFunc);
|
|
int TestGetSetInitOn(int, getFunc, setFunc);
|
|
|
|
int
|
|
main(int argc, const char* argv[])
|
|
{
|
|
int id;
|
|
int r, c;
|
|
VAR v;
|
|
|
|
id = CreateIPhreeqc();
|
|
if (id < 0)
|
|
{
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
/* Dump */
|
|
if (TestGetSet(id, GetDumpFileOn, SetDumpFileOn))
|
|
{
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
/* Dump string */
|
|
if (TestGetSet(id, GetDumpStringOn, SetDumpStringOn))
|
|
{
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
/* Error file */
|
|
if (TestGetSet(id, GetErrorFileOn, SetErrorFileOn))
|
|
{
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
/* Error */
|
|
if (TestGetSetInitOn(id, GetErrorOn, SetErrorOn))
|
|
{
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
/* Log */
|
|
if (TestGetSet(id, GetLogFileOn, SetLogFileOn))
|
|
{
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
/* Output */
|
|
if (TestGetSet(id, GetOutputFileOn, SetOutputFileOn))
|
|
{
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
/* Selected output */
|
|
if (TestGetSet(id, GetSelectedOutputFileOn, SetSelectedOutputFileOn))
|
|
{
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
if (LoadDatabase(id, "phreeqc.dat") != 0)
|
|
{
|
|
OutputErrorString(id);
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
if (RunFile(id, "ex2") != 0)
|
|
{
|
|
OutputErrorString(id);
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
VarInit(&v);
|
|
for (r = 0; r < GetSelectedOutputRowCount(id); ++r)
|
|
{
|
|
for (c = 0; c < GetSelectedOutputColumnCount(id); ++c)
|
|
{
|
|
if (GetSelectedOutputValue(id, r, c, &v) != IPQ_OK)
|
|
{
|
|
return EXIT_FAILURE;
|
|
}
|
|
VarClear(&v);
|
|
}
|
|
}
|
|
|
|
if (DestroyIPhreeqc(id) != IPQ_OK)
|
|
{
|
|
OutputErrorString(id);
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
return EXIT_SUCCESS;
|
|
}
|
|
|
|
int
|
|
TestGetSet(int id, getFunc gf, setFunc sf)
|
|
{
|
|
if (gf(id))
|
|
{
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
if (sf(id, 1) != IPQ_OK)
|
|
{
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
if (!gf(id))
|
|
{
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
if (sf(id,0) != IPQ_OK)
|
|
{
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
return EXIT_SUCCESS;
|
|
}
|
|
|
|
int
|
|
TestGetSetInitOn(int id, getFunc gf, setFunc sf)
|
|
{
|
|
if (!gf(id))
|
|
{
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
if (sf(id, 0) != IPQ_OK)
|
|
{
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
if (gf(id))
|
|
{
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
if (sf(id, 1) != IPQ_OK)
|
|
{
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
return EXIT_SUCCESS;
|
|
}
|