From fcd9e28c28674178a6e5dba18b4c7aaea47e03db Mon Sep 17 00:00:00 2001 From: Liam Keegan Date: Fri, 3 Mar 2023 09:58:19 +0100 Subject: [PATCH] Add test case for replaceFD issue #299 --- src/sbml/test/TestSBMLTransforms.cpp | 20 ++++++++- .../test/test-data/multiple-functions.xml | 42 +++++++++++++++++++ 2 files changed, 61 insertions(+), 1 deletion(-) diff --git a/src/sbml/test/TestSBMLTransforms.cpp b/src/sbml/test/TestSBMLTransforms.cpp index 92cf623d83..edafc9e68b 100644 --- a/src/sbml/test/TestSBMLTransforms.cpp +++ b/src/sbml/test/TestSBMLTransforms.cpp @@ -81,7 +81,7 @@ START_TEST (test_SBMLTransforms_replaceFD) m = d->getModel(); - fail_unless( m->getNumFunctionDefinitions() == 2 ); + fail_unless( m->getNumFunctionDefinitions() == 3 ); /* one function definition */ ast = *m->getReaction(2)->getKineticLaw()->getMath(); @@ -97,6 +97,24 @@ START_TEST (test_SBMLTransforms_replaceFD) fail_unless (!strcmp(math, "S1 * p * compartmentOne / t"), NULL); safe_free(math); + /* https://github.com/sbmlteam/libsbml/issues/299 */ + /* fd: f_relabelled(p, S1) = p * S1 */ + /* ast: f_relabelled(S1, p) * compartmentOne / t */ + /* ast after replaceFD: p * p * compartmentOne / t */ + ast = *m->getReaction(3)->getKineticLaw()->getMath(); + + math = SBML_formulaToString(&ast); + fail_unless (!strcmp(math, "f_relabelled(S1, p) * compartmentOne / t"), NULL); + safe_free(math); + + fd = m->getFunctionDefinition(2); + SBMLTransforms::replaceFD(&ast, fd); + + math = SBML_formulaToString(&ast); + std::cout << "TestSBMLTransforms.cpp:111 " << math << " =?= " << "S1 * p * compartmentOne / t" << std::endl; + fail_unless (!strcmp(math, "S1 * p * compartmentOne / t"), NULL); + safe_free(math); + /* one function definition - nested */ ast = *m->getReaction(1)->getKineticLaw()->getMath(); diff --git a/src/sbml/test/test-data/multiple-functions.xml b/src/sbml/test/test-data/multiple-functions.xml index daac71f538..46ee926fb8 100644 --- a/src/sbml/test/test-data/multiple-functions.xml +++ b/src/sbml/test/test-data/multiple-functions.xml @@ -36,6 +36,23 @@ + + + + + p + + + S1 + + + + p + S1 + + + + @@ -124,6 +141,31 @@ + + + + + + + + + + + + + + + f_relabelled + S1 + p + + compartmentOne + + t + + + +