Skip to content

Commit

Permalink
[unittest] Update googletests
Browse files Browse the repository at this point in the history
  • Loading branch information
ischoegl authored and speth committed Jul 1, 2023
1 parent 41513af commit 1a73899
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 39 deletions.
34 changes: 12 additions & 22 deletions test/clib/test_ctfunc.cpp
Expand Up @@ -13,7 +13,7 @@ TEST(ctfunc, invalid)
{
// exceptions return -1
ASSERT_EQ(func_new_basic("spam", 0.), -1);
ASSERT_EQ(func_new_advanced("eggs", 0, NULL, 1), -1);
ASSERT_EQ(func_new_advanced("eggs", 0, NULL), -1);
}

TEST(ctfunc, sin)
Expand Down Expand Up @@ -86,55 +86,45 @@ TEST(ctfunc, tabulated_linear)
{
vector<double> params = {0., 1., 2., 1., 0., 1.};

int fcn = func_new_advanced("tabulated-linear", params.size(), params.data(), 3);
int fcn = func_new_advanced("tabulated-linear", params.size(), params.data());
ASSERT_GE(fcn, 0);
EXPECT_DOUBLE_EQ(func_value(fcn, 0.5), 0.5);

// exceptions return -1
EXPECT_EQ(
func_new_advanced("tabulated-linear", params.size(), params.data(), 2), -1);
EXPECT_EQ(func_new_advanced("tabulated-linear", 5, params.data(), 3), -1);
EXPECT_EQ(func_new_advanced("tabulated-linear", 5, params.data()), -1);
}

TEST(ctfunc, tabulated_previous)
{
vector<double> params = {0., 1., 2., 1., 0., 1.};

int fcn = func_new_advanced("tabulated-previous", params.size(), params.data(), 3);
int fcn = func_new_advanced("tabulated-previous", params.size(), params.data());
ASSERT_GE(fcn, 0);
EXPECT_DOUBLE_EQ(func_value(fcn, 0.5), 1.);
}

TEST(ctfunc, poly)
{
int n = 2;
double a0 = .5;
double a1 = .25;
double a2 = .125;
vector<double> params = {a0, a1, a2};
int fcn = func_new_advanced("polynomial", params.size(), params.data(), n);
int fcn = func_new_advanced("polynomial", params.size(), params.data());
ASSERT_GE(fcn, 0);
EXPECT_DOUBLE_EQ(func_value(fcn, .5), (a2 * .5 + a1) * .5 + a0);

// exceptions return -1
EXPECT_EQ(func_new_advanced("polynomial", n, params.data(), n), -1);
}

TEST(ctfunc, Fourier)
{
int n = 1;
double a0 = .5;
double a1 = .25;
double b1 = .125;
double omega = 2.;
vector<double> params = {a0, a1, omega, b1};
int fcn = func_new_advanced("Fourier", params.size(), params.data(), n);
int fcn = func_new_advanced("Fourier", params.size(), params.data());
ASSERT_GE(fcn, 0);
EXPECT_DOUBLE_EQ(
func_value(fcn, .5), .5 * a0 + a1 * cos(omega * .5) + b1 * sin(omega * .5));

// exceptions return -1
EXPECT_EQ(func_new_advanced("Fourier", 2 * n, params.data(), n), -1);
}

TEST(ctfunc, Gaussian)
Expand All @@ -143,14 +133,14 @@ TEST(ctfunc, Gaussian)
double t0 = .6;
double fwhm = .25;
vector<double> params = {A, t0, fwhm};
int fcn = func_new_advanced("Gaussian", params.size(), params.data(), npos);
int fcn = func_new_advanced("Gaussian", params.size(), params.data());
ASSERT_GE(fcn, 0);
double tau = fwhm / (2. * sqrt(log(2.)));
double x = - t0 / tau;
EXPECT_DOUBLE_EQ(func_value(fcn, 0.), A * exp(-x * x));

// exceptions return -1
EXPECT_EQ(func_new_advanced("Gaussian", 2, params.data(), 0), -1);
EXPECT_EQ(func_new_advanced("Gaussian", 2, params.data()), -1);
}

TEST(ctfunc, Arrhenius)
Expand All @@ -159,7 +149,7 @@ TEST(ctfunc, Arrhenius)
double b = 2.7;
double E = 2.619184e+07 / GasConstant;
vector<double> params = {A, b, E};
int fcn = func_new_advanced("Arrhenius", params.size(), params.data(), 1);
int fcn = func_new_advanced("Arrhenius", params.size(), params.data());
ASSERT_GE(fcn, 0);
EXPECT_DOUBLE_EQ(func_value(fcn, 1000.), A * pow(1000., b) * exp(-E/1000.));
}
Expand Down Expand Up @@ -258,7 +248,7 @@ TEST(ctmath, generic)
// Composite function reported in issue #752

vector<double> params = {0., 0., 1., 1.};
int fs = func_new_advanced("Fourier", params.size(), params.data(), 1); // sin(x)
int fs = func_new_advanced("Fourier", params.size(), params.data()); // sin(x)
auto func_s = newFunc1("sin", 1.);
EXPECT_DOUBLE_EQ(func_value(fs, 0.5), func_s->eval(0.5));

Expand All @@ -267,7 +257,7 @@ TEST(ctmath, generic)
EXPECT_DOUBLE_EQ(func_value(fs2, 0.5), func_s2->eval(0.5));

double one = 1.;
int fs1 = func_new_advanced("polynomial", 1, &one, 0); // 1.
int fs1 = func_new_advanced("polynomial", 1, &one); // 1.
auto func_s1 = newFunc1("constant", 1.);
EXPECT_DOUBLE_EQ(func_value(fs1, 0.5), func_s1->eval(0.5));
EXPECT_DOUBLE_EQ(func_value(fs1, 0.5), 1.);
Expand All @@ -277,7 +267,7 @@ TEST(ctmath, generic)
EXPECT_DOUBLE_EQ(func_value(fs2_1, 0.5), func_s2_1->eval(0.5));

vector<double> p_arr = {1., .5, 0.};
int fs3 = func_new_advanced("Arrhenius", 3, p_arr.data(), 1); // sqrt function
int fs3 = func_new_advanced("Arrhenius", 3, p_arr.data()); // sqrt function
auto func_s3 = newFunc1("Arrhenius", p_arr);
EXPECT_DOUBLE_EQ(func_value(fs3, 0.5), func_s3->eval(0.5));

Expand Down
37 changes: 20 additions & 17 deletions test/general/test_numerics.cpp
Expand Up @@ -154,7 +154,7 @@ TEST(ctfunc, sin)
EXPECT_DOUBLE_EQ(dfunctor->eval(0.), omega);
EXPECT_DOUBLE_EQ(dfunctor->eval(.5), omega * cos(omega * .5));

ASSERT_THROW(newFunc1("sin", {}, npos), CanteraError);
ASSERT_THROW(newFunc1("sin", vector<double>()), CanteraError);
}

TEST(ctfunc, cos)
Expand All @@ -169,7 +169,7 @@ TEST(ctfunc, cos)
EXPECT_DOUBLE_EQ(dfunctor->eval(0.), 0.);
EXPECT_DOUBLE_EQ(dfunctor->eval(.5), -omega * sin(omega * .5));

ASSERT_THROW(newFunc1("cos", {1., 2.}, npos), CanteraError);
ASSERT_THROW(newFunc1("cos", {1., 2.}), CanteraError);
}

TEST(ctfunc, exp)
Expand All @@ -184,7 +184,7 @@ TEST(ctfunc, exp)
EXPECT_DOUBLE_EQ(dfunctor->eval(0.), omega);
EXPECT_DOUBLE_EQ(dfunctor->eval(.5), omega * exp(omega * .5));

ASSERT_THROW(newFunc1("exp", {1., 2.}, npos), CanteraError);
ASSERT_THROW(newFunc1("exp", {1., 2.}), CanteraError);
}

TEST(ctfunc, log)
Expand All @@ -200,7 +200,7 @@ TEST(ctfunc, log)
EXPECT_DOUBLE_EQ(dfunctor->eval(.1), omega / .1);
EXPECT_DOUBLE_EQ(dfunctor->eval(.5), omega / .5);

ASSERT_THROW(newFunc1("log", {}, npos), CanteraError);
ASSERT_THROW(newFunc1("log", vector<double>()), CanteraError);
}

TEST(ctfunc, pow)
Expand All @@ -213,7 +213,7 @@ TEST(ctfunc, pow)
auto dfunctor = functor->derivative3();
EXPECT_DOUBLE_EQ(dfunctor->eval(.5), exp * pow(.5, exp - 1));

ASSERT_THROW(newFunc1("pow", {}, npos), CanteraError);
ASSERT_THROW(newFunc1("pow", vector<double>()), CanteraError);
}

TEST(ctfunc, constant)
Expand All @@ -228,14 +228,14 @@ TEST(ctfunc, constant)
EXPECT_DOUBLE_EQ(dfunctor->eval(0.), 0.);
EXPECT_DOUBLE_EQ(dfunctor->eval(.5), 0.);

ASSERT_THROW(newFunc1("constant", {1., 2., 3.}, npos), CanteraError);
ASSERT_THROW(newFunc1("constant", {1., 2., 3.}), CanteraError);
}

TEST(ctfunc, tabulated_linear)
{
vector<double> params = {0., 1., 2., 1., 0., 1.};

auto functor = newFunc1("tabulated-linear", params, 3);
auto functor = newFunc1("tabulated-linear", params);
ASSERT_EQ(functor->type(), "tabulated-linear");
EXPECT_DOUBLE_EQ(functor->eval(0.), 1.);
EXPECT_DOUBLE_EQ(functor->eval(.5), .5);
Expand All @@ -247,14 +247,15 @@ TEST(ctfunc, tabulated_linear)
EXPECT_DOUBLE_EQ(dfunctor->eval(.5), -1.);
EXPECT_DOUBLE_EQ(dfunctor->eval(1.5), 1.);

ASSERT_THROW(newFunc1("tabulated-linear", params, 2), CanteraError);
params.push_back(1.);
ASSERT_THROW(newFunc1("tabulated-linear", params), CanteraError);
}

TEST(ctfunc, tabulated_previous)
{
vector<double> params = {0., 1., 2., 1., 0., 1.};

auto functor = newFunc1("tabulated-previous", params, 3);
auto functor = newFunc1("tabulated-previous", params);
ASSERT_EQ(functor->type(), "tabulated-previous");
EXPECT_DOUBLE_EQ(functor->eval(0.), 1.);
EXPECT_DOUBLE_EQ(functor->eval(.5), 1.);
Expand All @@ -271,38 +272,36 @@ TEST(ctfunc, tabulated_previous)

TEST(ctfunc, poly)
{
int n = 2;
double a0 = .5;
double a1 = .25;
double a2 = .125;
vector<double> params = {a0, a1, a2};
auto functor = newFunc1("polynomial", params, n);
auto functor = newFunc1("polynomial", params);
ASSERT_EQ(functor->type(), "polynomial");
EXPECT_DOUBLE_EQ(functor->eval(0.), a0);
EXPECT_DOUBLE_EQ(functor->eval(.5), (a2 * .5 + a1) * .5 + a0);

ASSERT_THROW(functor->derivative3(), CanteraError);

ASSERT_THROW(newFunc1("polynomial", params, 3), CanteraError);
}

TEST(ctfunc, Fourier)
{
int n = 1;
double a0 = .5;
double a1 = .25;
double b1 = .125;
double omega = 2.;
vector<double> params = {a0, a1, omega, b1};
auto functor = newFunc1("Fourier", params, n);
auto functor = newFunc1("Fourier", params);
ASSERT_EQ(functor->type(), "Fourier");
EXPECT_DOUBLE_EQ(functor->eval(0.), .5 * a0 + a1);
EXPECT_DOUBLE_EQ(
functor->eval(.5), .5 * a0 + a1 * cos(omega * .5) + b1 * sin(omega * .5));

ASSERT_THROW(functor->derivative3(), CanteraError);

ASSERT_THROW(newFunc1("polynomial", params, 2 * n), CanteraError);
params.push_back(1.);
ASSERT_THROW(newFunc1("Fourier", params), CanteraError);
ASSERT_THROW(newFunc1("Fourier", vector<double>({1., 2.})), CanteraError);
}

TEST(ctfunc, Gaussian)
Expand All @@ -320,6 +319,8 @@ TEST(ctfunc, Gaussian)
EXPECT_DOUBLE_EQ(functor->eval(.5), A * exp(-x * x));

ASSERT_THROW(functor->derivative3(), CanteraError);

ASSERT_THROW(newFunc1("Gaussian", vector<double>({1., 2.})), CanteraError);
}

TEST(ctfunc, Arrhenius)
Expand All @@ -328,11 +329,13 @@ TEST(ctfunc, Arrhenius)
double b = 2.7;
double E = 2.619184e+07 / GasConstant;
vector<double> params = {A, b, E};
auto functor = newFunc1("Arrhenius", params, 1);
auto functor = newFunc1("Arrhenius", params);
ASSERT_EQ(functor->type(), "Arrhenius");
EXPECT_DOUBLE_EQ(functor->eval(1000.), A * pow(1000., b) * exp(-E/1000.));

ASSERT_THROW(functor->derivative3(), CanteraError);

ASSERT_THROW(newFunc1("Arrhenius", vector<double>({1., 2.})), CanteraError);
}

TEST(ctmath, invalid)
Expand Down

0 comments on commit 1a73899

Please sign in to comment.