Merge pull request #442 from OpenWaterAnalytics/lrossman-dev17

Fixes bug in EN_getcurve
This commit is contained in:
Lew Rossman
2019-04-03 09:34:32 -04:00
committed by GitHub
7 changed files with 39 additions and 10 deletions

View File

@@ -343,7 +343,7 @@ extern "C" {
EN_API_FLOAT_TYPE x, EN_API_FLOAT_TYPE y); EN_API_FLOAT_TYPE x, EN_API_FLOAT_TYPE y);
int DLLEXPORT ENgetcurve(int index, char* id, int *nPoints, int DLLEXPORT ENgetcurve(int index, char* id, int *nPoints,
EN_API_FLOAT_TYPE **xValues, EN_API_FLOAT_TYPE **yValues); EN_API_FLOAT_TYPE *xValues, EN_API_FLOAT_TYPE *yValues);
int DLLEXPORT ENsetcurve(int index, EN_API_FLOAT_TYPE *xValues, int DLLEXPORT ENsetcurve(int index, EN_API_FLOAT_TYPE *xValues,
EN_API_FLOAT_TYPE *yValues, int nPoints); EN_API_FLOAT_TYPE *yValues, int nPoints);

View File

@@ -1422,7 +1422,7 @@ typedef struct Project *EN_Project;
@ref EN_MAXID characters. @ref EN_MAXID characters.
*/ */
int DLLEXPORT EN_getcurve(EN_Project ph, int index, char* id, int *nPoints, int DLLEXPORT EN_getcurve(EN_Project ph, int index, char* id, int *nPoints,
double **xValues, double **yValues); double *xValues, double *yValues);
/** /**
@brief assigns a set of data points to a curve. @brief assigns a set of data points to a curve.

View File

@@ -139,7 +139,7 @@ int EXPORT_PY_API curv_getlength(Handle ph, int index, int *len);
int EXPORT_PY_API curv_gettype(Handle ph, int curveIndex, int *outType); int EXPORT_PY_API curv_gettype(Handle ph, int curveIndex, int *outType);
int EXPORT_PY_API curv_getvalue(Handle ph, int curveIndex, int pointIndex, double *x, double *y); int EXPORT_PY_API curv_getvalue(Handle ph, int curveIndex, int pointIndex, double *x, double *y);
int EXPORT_PY_API curv_setvalue(Handle ph, int curveIndex, int pointIndex, double x, double y); int EXPORT_PY_API curv_setvalue(Handle ph, int curveIndex, int pointIndex, double x, double y);
int EXPORT_PY_API curv_get(Handle ph, int curveIndex, char* id, int *nValues, double **xValues, double **yValues); int EXPORT_PY_API curv_get(Handle ph, int curveIndex, char* id, int *nValues, double *xValues, double *yValues);
int EXPORT_PY_API curv_set(Handle ph, int index, double *x, double *y, int len); int EXPORT_PY_API curv_set(Handle ph, int index, double *x, double *y, int len);
int EXPORT_PY_API scntl_add(Handle ph, int type, int linkIndex, double setting, int nodeIndex, double level, int *index); int EXPORT_PY_API scntl_add(Handle ph, int type, int linkIndex, double setting, int nodeIndex, double level, int *index);

View File

@@ -4385,7 +4385,7 @@ int DLLEXPORT EN_setcurvevalue(EN_Project p, int curveIndex, int pointIndex,
} }
int DLLEXPORT EN_getcurve(EN_Project p, int index, char *id, int *nPoints, int DLLEXPORT EN_getcurve(EN_Project p, int index, char *id, int *nPoints,
double **xValues, double **yValues) double *xValues, double *yValues)
/*---------------------------------------------------------------- /*----------------------------------------------------------------
** Input: index = data curve index ** Input: index = data curve index
** Output: id = ID name of data curve ** Output: id = ID name of data curve
@@ -4410,8 +4410,8 @@ int DLLEXPORT EN_getcurve(EN_Project p, int index, char *id, int *nPoints,
*nPoints = curve->Npts; *nPoints = curve->Npts;
for (i = 0; i < curve->Npts; i++) for (i = 0; i < curve->Npts; i++)
{ {
*xValues[i] = curve->X[i]; xValues[i] = curve->X[i];
*yValues[i] = curve->Y[i]; yValues[i] = curve->Y[i];
} }
return 0; return 0;
} }

View File

@@ -645,7 +645,7 @@ int DLLEXPORT ENsetcurvevalue(int curveIndex, int pointIndex, EN_API_FLOAT_TYPE
} }
int DLLEXPORT ENgetcurve(int index, char *id, int *nPoints, int DLLEXPORT ENgetcurve(int index, char *id, int *nPoints,
EN_API_FLOAT_TYPE **xValues, EN_API_FLOAT_TYPE **yValues) EN_API_FLOAT_TYPE *xValues, EN_API_FLOAT_TYPE *yValues)
{ {
int i; int i;
Network *net = &_defaultProject->network; Network *net = &_defaultProject->network;
@@ -657,8 +657,8 @@ int DLLEXPORT ENgetcurve(int index, char *id, int *nPoints,
*nPoints = curve->Npts; *nPoints = curve->Npts;
for (i = 0; i < curve->Npts; i++) for (i = 0; i < curve->Npts; i++)
{ {
*xValues[i] = (EN_API_FLOAT_TYPE)curve->X[i]; xValues[i] = (EN_API_FLOAT_TYPE)curve->X[i];
*yValues[i] = (EN_API_FLOAT_TYPE)curve->Y[i]; yValues[i] = (EN_API_FLOAT_TYPE)curve->Y[i];
} }
return 0; return 0;
} }

View File

@@ -624,7 +624,7 @@ int EXPORT_PY_API curv_setvalue(Handle ph, int curveIndex, int pointIndex, doubl
return set_error(pr->error, EN_setcurvevalue(pr->project, curveIndex, pointIndex, x, y)); return set_error(pr->error, EN_setcurvevalue(pr->project, curveIndex, pointIndex, x, y));
} }
int EXPORT_PY_API curv_get(Handle ph, int curveIndex, char* id, int *nValues, double **xValues, double **yValues) int EXPORT_PY_API curv_get(Handle ph, int curveIndex, char* id, int *nValues, double *xValues, double *yValues)
{ {
handle_t *pr = (handle_t *)ph; handle_t *pr = (handle_t *)ph;
return set_error(pr->error, EN_getcurve(pr->project, curveIndex, id, nValues, xValues, yValues)); return set_error(pr->error, EN_getcurve(pr->project, curveIndex, id, nValues, xValues, yValues));

View File

@@ -35,6 +35,35 @@ BOOST_FIXTURE_TEST_CASE(test_curve_comments, FixtureOpenClose)
error = EN_getcomment(ph, EN_CURVE, index, comment); error = EN_getcomment(ph, EN_CURVE, index, comment);
BOOST_REQUIRE(error == 0); BOOST_REQUIRE(error == 0);
BOOST_CHECK(check_string(comment, (char *)"Curve 1")); BOOST_CHECK(check_string(comment, (char *)"Curve 1"));
// Test of EN_setcurve and EN_getcurve
int i;
char id1[] = "NewCurve";
int n1 = 5;
double X1[] = {16.88889, 19.5, 22.13889, 25.94445, 33.33334};
double Y1[] = {156.7, 146.5, 136.2, 117.9, 50.0};
int n2;
double X2[5], Y2[5];
char id2[EN_MAXID+1];
// Add data to a new curve
error = EN_addcurve(ph, id1);
BOOST_REQUIRE(error == 0);
error = EN_getcurveindex(ph, id1, &i);
BOOST_REQUIRE(error == 0);
error = EN_setcurve(ph, i, X1, Y1, n1);
BOOST_REQUIRE(error == 0);
// Retrieve data from curve
error = EN_getcurve(ph, i, id2, &n2, X2, Y2);
BOOST_REQUIRE(error == 0);
BOOST_CHECK(check_string(id2, id1));
BOOST_REQUIRE(n2 == n1);
for (i = 0; i < n1; i++)
{
BOOST_REQUIRE(X1[i] == X2[i]);
BOOST_REQUIRE(Y1[i] == Y2[i]);
}
} }
BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE_END()