Skip to content

Commit

Permalink
InterpreterStatement: addressed some coverage issues.
Browse files Browse the repository at this point in the history
  • Loading branch information
agarny committed Apr 25, 2024
1 parent f87c44d commit 9900f4e
Show file tree
Hide file tree
Showing 8 changed files with 23 additions and 25 deletions.
2 changes: 1 addition & 1 deletion tests/coverage/coverage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -881,7 +881,7 @@ TEST(Coverage, interpreter)

EXPECT_EQ_VALUES(std::vector<double>({0.0}), interpreter->states());
EXPECT_EQ_VALUES(std::vector<double>({1.0}), interpreter->rates());
EXPECT_EQ_VALUES(std::vector<double>({0.0, 1.0, 2.0, 1.0, 1.0, 1.0, 3.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 3.0, 6.0, 1.0, 1.0, -1.0, 1.0, -6.0, -2.0, 3.0, 7.0, -1.0, -1.0, 2.0, 6.0, 0.0, 0.0, 0.0, -0.0, -0.0, 7.0, 3.0, -1.0, -3.0, 0.5000000000000, 1.0, 3.0, 1.0, -1.0, -1.0, 0.1428571428571, 0.3333333333333, -1.0, -0.3333333333333, 0.0833333333333, 1.3333333333333, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 3.0, 1.0, -1.0, -1.0, 2.0, 0.5000000000000, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.7182818284590, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 2.0, 3.0, 1.0, 0.8414709848079, 0.5403023058681, 1.5574077246549, 1.8508157176809, 1.1883951057781, 0.6420926159343, 1.1752011936438, 1.5430806348152, 0.7615941559558, 0.6480542736639, 0.8509181282393, 1.3130352854993, 1.5707963267949, 0.0, 0.7853981633974, 0.0, 1.5707963267949, 0.7853981633974, 0.8813735870195, 0.0, 0.5493061443341, 0.0, 0.8813735870195, 0.5493061443341, NAN, NAN, 1.0, 1.0, 3.0, NAN, 5.0, 6.0, 1.0, 7.0, 7.0, NAN, 124.0, 123.0, 123.4567890000000, 122999999999999992825511813039543286439366983265988099874998185415242667014177361275155540361558884352.0, 123456788999999994484262021807589179008641698391664322400772966218228802243136080981312758589637525504.0, 1.0, 1.0, 0.0, 2.7182818284590, 3.1415926535898, INF, NAN, NAN, 9.0, NAN, 1.0, NAN, 20.0, NAN, 1.2500000000000, 0.0, 1.0, 1.0, 1.0, 1.0, NAN, -3.0, 1.0, 2.0, 1.0, 3.0}), interpreter->variables());
EXPECT_EQ_VALUES(std::vector<double>({0.0, 1.0, 2.0, 1.0, 1.0, 1.0, 3.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 3.0, 6.0, 1.0, 1.0, -1.0, 1.0, -6.0, -2.0, 3.0, 7.0, -1.0, -1.0, 2.0, 6.0, 0.0, 0.0, 0.0, -0.0, -0.0, 7.0, 3.0, -1.0, -3.0, 0.5000000000000, 1.0, 3.0, 1.0, -1.0, -1.0, 0.1428571428571, 0.3333333333333, -1.0, -0.3333333333333, 0.0833333333333, 1.3333333333333, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 3.0, 1.0, -1.0, -1.0, 2.0, 0.5000000000000, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.7182818284590, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 2.0, 3.0, 1.0, 0.8414709848079, 0.5403023058681, 1.5574077246549, 1.8508157176809, 1.1883951057781, 0.6420926159343, 1.1752011936438, 1.5430806348152, 0.7615941559558, 0.6480542736639, 0.8509181282393, 1.3130352854993, 1.5707963267949, 0.0, 0.7853981633974, 0.0, 1.5707963267949, 0.7853981633974, 0.8813735870195, 0.0, 0.5493061443341, 0.0, 0.8813735870195, 0.5493061443341, NAN, NAN, 1.0, 1.0, 3.0, NAN, 5.0, 6.0, 1.0, 7.0, 7.0, NAN, 124.0, 123.0, 123.4567890000000, 122999999999999992825511813039543286439366983265988099874998185415242667014177361275155540361558884352.0, 123456788999999994484262021807589179008641698391664322400772966218228802243136080981312758589637525504.0, 1.0, 1.0, 0.0, 2.7182818284590, 3.1415926535898, INF, NAN, NAN, 9.0, NAN, 1.0, NAN, 20.0, NAN, 1.2500000000000, 0.0, 1.0, 1.0, 1.0, 1.0, NAN, -3.0, 1.0, 2.0, 1.0, 3.0}), interpreter->variables());

interpreter->setModel(nullptr);

Expand Down
8 changes: 4 additions & 4 deletions tests/resources/coverage/generator/model.c
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ const VariableInfo VARIABLE_INFO[] = {
{"eqnAndParenthesesRightPower", "dimensionless", "my_component", COMPUTED_CONSTANT},
{"eqnAndParenthesesRightRoot", "dimensionless", "my_component", COMPUTED_CONSTANT},
{"eqnAndCoverageParentheses", "dimensionless", "my_component", COMPUTED_CONSTANT},
{"eqnOr", "dimensionless", "my_component", COMPUTED_CONSTANT},
{"eqnOrMultiple", "dimensionless", "my_component", COMPUTED_CONSTANT},
{"eqnOr", "dimensionless", "my_component", ALGEBRAIC},
{"eqnOrMultiple", "dimensionless", "my_component", ALGEBRAIC},
{"eqnOrParentheses", "dimensionless", "my_component", COMPUTED_CONSTANT},
{"eqnOrParenthesesLeftPlusWith", "dimensionless", "my_component", COMPUTED_CONSTANT},
{"eqnOrParenthesesLeftPlusWithout", "dimensionless", "my_component", COMPUTED_CONSTANT},
Expand Down Expand Up @@ -427,8 +427,6 @@ void computeComputedConstants(double *variables)
variables[29] = (variables[1] < variables[2]) && pow(variables[6], variables[18]);
variables[30] = (variables[1] < variables[2]) && pow(variables[6], 1.0/variables[18]);
variables[31] = variables[1]/(variables[2] && variables[6]);
variables[32] = variables[1] || variables[2];
variables[33] = variables[1] || variables[2] || variables[6];
variables[34] = (variables[1] < variables[2]) || (variables[6] > variables[18]);
variables[35] = (variables[1]+variables[2]) || (variables[6] > variables[18]);
variables[36] = variables[1] || (variables[2] > variables[6]);
Expand Down Expand Up @@ -605,6 +603,8 @@ void computeRates(double voi, double *states, double *rates, double *variables)

void computeVariables(double voi, double *states, double *rates, double *variables)
{
variables[32] = states[0] || states[0];
variables[33] = states[0] || states[0] || variables[1];
variables[63] = variables[1]/xor(variables[2], states[0]);
findRoot0(voi, states, rates, variables);
}
8 changes: 4 additions & 4 deletions tests/resources/coverage/generator/model.cellml
Original file line number Diff line number Diff line change
Expand Up @@ -651,18 +651,18 @@
<ci>eqnOr</ci>
<apply>
<or/>
<ci>m</ci>
<ci>n</ci>
<ci>x</ci>
<ci>x</ci>
</apply>
</apply>
<apply>
<eq/>
<ci>eqnOrMultiple</ci>
<apply>
<or/>
<ci>x</ci>
<ci>x</ci>
<ci>m</ci>
<ci>n</ci>
<ci>o</ci>
</apply>
</apply>
<apply>
Expand Down
4 changes: 2 additions & 2 deletions tests/resources/coverage/generator/model.implementation.out
Original file line number Diff line number Diff line change
Expand Up @@ -187,8 +187,6 @@ void computeComputedConstants(double *variables)
variables[29] = and(lt(variables[1], variables[2]), pow(variables[6], variables[18]));
variables[30] = and(lt(variables[1], variables[2]), pow(variables[6], 1.0/variables[18]));
variables[31] = variables[1]/and(variables[2], variables[6]);
variables[32] = or(variables[1], variables[2]);
variables[33] = or(variables[1], or(variables[2], variables[6]));
variables[34] = or(lt(variables[1], variables[2]), gt(variables[6], variables[18]));
variables[35] = or(variables[1]+variables[2], gt(variables[6], variables[18]));
variables[36] = or(variables[1], gt(variables[2], variables[6]));
Expand Down Expand Up @@ -365,6 +363,8 @@ void computeRates(double voi, double *states, double *rates, double *variables)

void computeVariables(double voi, double *states, double *rates, double *variables)
{
variables[32] = or(states[0], states[0]);
variables[33] = or(states[0], or(states[0], variables[1]));
variables[63] = variables[1]/xor(variables[2], states[0]);
findRoot0(voi, states, rates, variables);
}
8 changes: 4 additions & 4 deletions tests/resources/coverage/generator/model.modified.profile.c
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ const VariableInfo VARIABLE_INFO[] = {
{"eqnAndParenthesesRightPower", "dimensionless", "my_component", COMPUTED_CONSTANT},
{"eqnAndParenthesesRightRoot", "dimensionless", "my_component", COMPUTED_CONSTANT},
{"eqnAndCoverageParentheses", "dimensionless", "my_component", COMPUTED_CONSTANT},
{"eqnOr", "dimensionless", "my_component", COMPUTED_CONSTANT},
{"eqnOrMultiple", "dimensionless", "my_component", COMPUTED_CONSTANT},
{"eqnOr", "dimensionless", "my_component", ALGEBRAIC},
{"eqnOrMultiple", "dimensionless", "my_component", ALGEBRAIC},
{"eqnOrParentheses", "dimensionless", "my_component", COMPUTED_CONSTANT},
{"eqnOrParenthesesLeftPlusWith", "dimensionless", "my_component", COMPUTED_CONSTANT},
{"eqnOrParenthesesLeftPlusWithout", "dimensionless", "my_component", COMPUTED_CONSTANT},
Expand Down Expand Up @@ -427,8 +427,6 @@ void computeComputedConstants(double *variables)
variables[29] = (variables[1] < variables[2]) && pow(variables[6], variables[18]);
variables[30] = (variables[1] < variables[2]) && pow(variables[6], 1.0/variables[18]);
variables[31] = variables[1]/(variables[2] && variables[6]);
variables[32] = variables[1] || variables[2];
variables[33] = variables[1] || variables[2] || variables[6];
variables[34] = (variables[1] < variables[2]) || (variables[6] > variables[18]);
variables[35] = (variables[1]+variables[2]) || (variables[6] > variables[18]);
variables[36] = variables[1] || (variables[2] > variables[6]);
Expand Down Expand Up @@ -605,6 +603,8 @@ void computeRates(double voi, double *states, double *rates, double *variables)

void computeVariables(double voi, double *states, double *rates, double *variables)
{
variables[32] = states[0] || states[0];
variables[33] = states[0] || states[0] || variables[1];
variables[63] = variables[1]/xor(variables[2], states[0]);
findRoot0(voi, states, rates, variables);
}
8 changes: 4 additions & 4 deletions tests/resources/coverage/generator/model.modified.profile.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ class VariableType(Enum):
{"name": "eqnAndParenthesesRightPower", "units": "dimensionless", "component": "my_component", "type": VariableType.COMPUTED_CONSTANT},
{"name": "eqnAndParenthesesRightRoot", "units": "dimensionless", "component": "my_component", "type": VariableType.COMPUTED_CONSTANT},
{"name": "eqnAndCoverageParentheses", "units": "dimensionless", "component": "my_component", "type": VariableType.COMPUTED_CONSTANT},
{"name": "eqnOr", "units": "dimensionless", "component": "my_component", "type": VariableType.COMPUTED_CONSTANT},
{"name": "eqnOrMultiple", "units": "dimensionless", "component": "my_component", "type": VariableType.COMPUTED_CONSTANT},
{"name": "eqnOr", "units": "dimensionless", "component": "my_component", "type": VariableType.ALGEBRAIC},
{"name": "eqnOrMultiple", "units": "dimensionless", "component": "my_component", "type": VariableType.ALGEBRAIC},
{"name": "eqnOrParentheses", "units": "dimensionless", "component": "my_component", "type": VariableType.COMPUTED_CONSTANT},
{"name": "eqnOrParenthesesLeftPlusWith", "units": "dimensionless", "component": "my_component", "type": VariableType.COMPUTED_CONSTANT},
{"name": "eqnOrParenthesesLeftPlusWithout", "units": "dimensionless", "component": "my_component", "type": VariableType.COMPUTED_CONSTANT},
Expand Down Expand Up @@ -436,8 +436,6 @@ def compute_computed_constants(variables):
variables[29] = and_func(lt_func(variables[1], variables[2]), pow(variables[6], variables[18]))
variables[30] = and_func(lt_func(variables[1], variables[2]), pow(variables[6], 1.0/variables[18]))
variables[31] = variables[1]/and_func(variables[2], variables[6])
variables[32] = or_func(variables[1], variables[2])
variables[33] = or_func(variables[1], or_func(variables[2], variables[6]))
variables[34] = or_func(lt_func(variables[1], variables[2]), gt_func(variables[6], variables[18]))
variables[35] = or_func(variables[1]+variables[2], gt_func(variables[6], variables[18]))
variables[36] = or_func(variables[1], gt_func(variables[2], variables[6]))
Expand Down Expand Up @@ -612,5 +610,7 @@ def compute_rates(voi, states, rates, variables):


def compute_variables(voi, states, rates, variables):
variables[32] = or_func(states[0], states[0])
variables[33] = or_func(states[0], or_func(states[0], variables[1]))
variables[63] = variables[1]/xor_func(variables[2], states[0])
find_root_0(voi, states, rates, variables)
2 changes: 0 additions & 2 deletions tests/resources/coverage/generator/model.out
Original file line number Diff line number Diff line change
Expand Up @@ -157,8 +157,6 @@ void computeComputedConstants(double *variables)
variables[29] = (variables[1] < variables[2]) && (variables[6]^^variables[18]);
variables[30] = (variables[1] < variables[2]) && (variables[6]^^(1.0/variables[18]));
variables[31] = variables[1]/(variables[2] && variables[6]);
variables[32] = variables[1] || variables[2];
variables[33] = variables[1] || variables[2] || variables[6];
variables[34] = (variables[1] < variables[2]) || (variables[6] > variables[18]);
variables[35] = (variables[1]+variables[2]) || (variables[6] > variables[18]);
variables[36] = variables[1] || (variables[2] > variables[6]);
Expand Down
8 changes: 4 additions & 4 deletions tests/resources/coverage/generator/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ class VariableType(Enum):
{"name": "eqnAndParenthesesRightPower", "units": "dimensionless", "component": "my_component", "type": VariableType.COMPUTED_CONSTANT},
{"name": "eqnAndParenthesesRightRoot", "units": "dimensionless", "component": "my_component", "type": VariableType.COMPUTED_CONSTANT},
{"name": "eqnAndCoverageParentheses", "units": "dimensionless", "component": "my_component", "type": VariableType.COMPUTED_CONSTANT},
{"name": "eqnOr", "units": "dimensionless", "component": "my_component", "type": VariableType.COMPUTED_CONSTANT},
{"name": "eqnOrMultiple", "units": "dimensionless", "component": "my_component", "type": VariableType.COMPUTED_CONSTANT},
{"name": "eqnOr", "units": "dimensionless", "component": "my_component", "type": VariableType.ALGEBRAIC},
{"name": "eqnOrMultiple", "units": "dimensionless", "component": "my_component", "type": VariableType.ALGEBRAIC},
{"name": "eqnOrParentheses", "units": "dimensionless", "component": "my_component", "type": VariableType.COMPUTED_CONSTANT},
{"name": "eqnOrParenthesesLeftPlusWith", "units": "dimensionless", "component": "my_component", "type": VariableType.COMPUTED_CONSTANT},
{"name": "eqnOrParenthesesLeftPlusWithout", "units": "dimensionless", "component": "my_component", "type": VariableType.COMPUTED_CONSTANT},
Expand Down Expand Up @@ -436,8 +436,6 @@ def compute_computed_constants(variables):
variables[29] = and_func(lt_func(variables[1], variables[2]), pow(variables[6], variables[18]))
variables[30] = and_func(lt_func(variables[1], variables[2]), pow(variables[6], 1.0/variables[18]))
variables[31] = variables[1]/and_func(variables[2], variables[6])
variables[32] = or_func(variables[1], variables[2])
variables[33] = or_func(variables[1], or_func(variables[2], variables[6]))
variables[34] = or_func(lt_func(variables[1], variables[2]), gt_func(variables[6], variables[18]))
variables[35] = or_func(variables[1]+variables[2], gt_func(variables[6], variables[18]))
variables[36] = or_func(variables[1], gt_func(variables[2], variables[6]))
Expand Down Expand Up @@ -612,5 +610,7 @@ def compute_rates(voi, states, rates, variables):


def compute_variables(voi, states, rates, variables):
variables[32] = or_func(states[0], states[0])
variables[33] = or_func(states[0], or_func(states[0], variables[1]))
variables[63] = variables[1]/xor_func(variables[2], states[0])
find_root_0(voi, states, rates, variables)

0 comments on commit 9900f4e

Please sign in to comment.