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);
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,
EN_API_FLOAT_TYPE *yValues, int nPoints);

View File

@@ -1422,7 +1422,7 @@ typedef struct Project *EN_Project;
@ref EN_MAXID characters.
*/
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.

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_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_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 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,
double **xValues, double **yValues)
double *xValues, double *yValues)
/*----------------------------------------------------------------
** Input: index = data curve index
** 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;
for (i = 0; i < curve->Npts; i++)
{
*xValues[i] = curve->X[i];
*yValues[i] = curve->Y[i];
xValues[i] = curve->X[i];
yValues[i] = curve->Y[i];
}
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,
EN_API_FLOAT_TYPE **xValues, EN_API_FLOAT_TYPE **yValues)
EN_API_FLOAT_TYPE *xValues, EN_API_FLOAT_TYPE *yValues)
{
int i;
Network *net = &_defaultProject->network;
@@ -657,8 +657,8 @@ int DLLEXPORT ENgetcurve(int index, char *id, int *nPoints,
*nPoints = curve->Npts;
for (i = 0; i < curve->Npts; i++)
{
*xValues[i] = (EN_API_FLOAT_TYPE)curve->X[i];
*yValues[i] = (EN_API_FLOAT_TYPE)curve->Y[i];
xValues[i] = (EN_API_FLOAT_TYPE)curve->X[i];
yValues[i] = (EN_API_FLOAT_TYPE)curve->Y[i];
}
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));
}
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;
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);
BOOST_REQUIRE(error == 0);
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()