END_TEST START_TEST (test_DerivedUnitDefinition_parameter) { UnitDefinition *fud = m->getParameter(0)->getDerivedUnitDefinition(); fail_unless(fud->getNumUnits() == 2); fail_unless(!strcmp(fud->getId().c_str(), ""), NULL); fail_unless(fud->getUnit(0)->getMultiplier() == 1); fail_unless(fud->getUnit(0)->getScale() == 0); fail_unless(fud->getUnit(0)->getExponent() == 1); fail_unless(fud->getUnit(0)->getOffset() == 0.0); fail_unless(fud->getUnit(0)->getKind() == UNIT_KIND_METRE); fail_unless(fud->getUnit(1)->getMultiplier() == 1); fail_unless(fud->getUnit(1)->getScale() == 0); fail_unless(fud->getUnit(1)->getExponent() == -1); fail_unless(fud->getUnit(1)->getOffset() == 0.0); fail_unless(fud->getUnit(1)->getKind() == UNIT_KIND_SECOND); fud = m->getParameter(1)->getDerivedUnitDefinition(); fail_unless(fud->getNumUnits() == 0); fail_unless(!strcmp(fud->getId().c_str(), ""), NULL); }
END_TEST START_TEST (test_UnitFormulaFormatter1_getUnitDefinition_function) { UnitDefinition * ud; /* function applied to numbers only */ ud = uff->getUnitDefinition(m->getRule(0)->getMath()); fail_unless(ud->getNumUnits() == 0); fail_unless(!strcmp(ud->getId().c_str(), ""), NULL); /* function applied to components */ uff->resetFlags(); ud = uff->getUnitDefinition(m->getRule(1)->getMath()); fail_unless(ud->getNumUnits() == 1); fail_unless(!strcmp(ud->getId().c_str(), ""), NULL); fail_unless(ud->getUnit(0)->getMultiplier() == 1); fail_unless(ud->getUnit(0)->getScale() == 0); fail_unless(ud->getUnit(0)->getExponent() == 1); fail_unless(ud->getUnit(0)->getOffset() == 0.0); fail_unless(ud->getUnit(0)->getKind() == UNIT_KIND_METRE); /* function with two arguments but only one bvar */ uff->resetFlags(); ud = uff->getUnitDefinition(m->getRule(2)->getMath()); fail_unless(ud->getNumUnits() == 1); fail_unless(!strcmp(ud->getId().c_str(), ""), NULL); fail_unless(ud->getUnit(0)->getMultiplier() == 1); fail_unless(ud->getUnit(0)->getScale() == 0); fail_unless(ud->getUnit(0)->getExponent() == 3); fail_unless(ud->getUnit(0)->getOffset() == 0.0); fail_unless(ud->getUnit(0)->getKind() == UNIT_KIND_METRE); /* function with two arguments but only one bvar */ uff->resetFlags(); ud = uff->getUnitDefinition(m->getRule(3)->getMath()); fail_unless(ud->getNumUnits() == 1); fail_unless(!strcmp(ud->getId().c_str(), ""), NULL); fail_unless(ud->getUnit(0)->getMultiplier() == 1); fail_unless(ud->getUnit(0)->getScale() == 0); fail_unless(ud->getUnit(0)->getExponent() == -1); fail_unless(ud->getUnit(0)->getOffset() == 0.0); fail_unless(ud->getUnit(0)->getKind() == UNIT_KIND_SECOND); delete ud; }
END_TEST START_TEST (test_DerivedUnitDefinition_species) { UnitDefinition *fud = m->getSpecies(0)->getDerivedUnitDefinition(); fail_unless(fud->getNumUnits() == 2); fail_unless(!strcmp(fud->getId().c_str(), ""), NULL); fail_unless(fud->getUnit(0)->getMultiplier() == 1); fail_unless(fud->getUnit(0)->getScale() == 0); fail_unless(fud->getUnit(0)->getExponent() == 1); fail_unless(fud->getUnit(0)->getOffset() == 0.0); fail_unless(fud->getUnit(0)->getKind() == UNIT_KIND_MOLE); fail_unless(fud->getUnit(1)->getMultiplier() == 1); fail_unless(fud->getUnit(1)->getScale() == 0); fail_unless(fud->getUnit(1)->getExponent() == -1); fail_unless(fud->getUnit(1)->getOffset() == 0.0); fail_unless(fud->getUnit(1)->getKind() == UNIT_KIND_LITRE); fud = m->getSpecies(1)->getDerivedUnitDefinition(); fail_unless(fud->getNumUnits() == 1); fail_unless(!strcmp(fud->getId().c_str(), ""), NULL); fail_unless(fud->getUnit(0)->getMultiplier() == 1); fail_unless(fud->getUnit(0)->getScale() == -2); fail_unless(fud->getUnit(0)->getExponent() == 1); fail_unless(fud->getUnit(0)->getOffset() == 0.0); fail_unless(fud->getUnit(0)->getKind() == UNIT_KIND_MOLE); fud = m->getSpecies(2)->getDerivedUnitDefinition(); fail_unless(fud->getNumUnits() == 2); fail_unless(!strcmp(fud->getId().c_str(), ""), NULL); fail_unless(fud->getUnit(0)->getMultiplier() == 1); fail_unless(fud->getUnit(0)->getScale() == -2); fail_unless(fud->getUnit(0)->getExponent() == 1); fail_unless(fud->getUnit(0)->getOffset() == 0.0); fail_unless(fud->getUnit(0)->getKind() == UNIT_KIND_MOLE); fail_unless(fud->getUnit(1)->getMultiplier() == 1); fail_unless(fud->getUnit(1)->getScale() == 0); fail_unless(fud->getUnit(1)->getExponent() == -1); fail_unless(fud->getUnit(1)->getOffset() == 0.0); fail_unless(fud->getUnit(1)->getKind() == UNIT_KIND_LITRE); }
END_TEST START_TEST (test_DerivedUnitDefinition_rule) { UnitDefinition *fud = m->getRule(0)->getDerivedUnitDefinition(); bool undecl = m->getRule(0)->containsUndeclaredUnits(); fail_unless(undecl == 1); fail_unless(fud->getNumUnits() == 0); fail_unless(!strcmp(fud->getId().c_str(), ""), NULL); fud = m->getRule(1)->getDerivedUnitDefinition(); undecl = m->getRule(1)->containsUndeclaredUnits(); fail_unless(undecl == 1); fail_unless(fud->getNumUnits() == 2); fail_unless(!strcmp(fud->getId().c_str(), ""), NULL); fail_unless(fud->getUnit(0)->getMultiplier() == 1); fail_unless(fud->getUnit(0)->getScale() == 0); fail_unless(fud->getUnit(0)->getExponent() == 1); fail_unless(fud->getUnit(0)->getOffset() == 0.0); fail_unless(fud->getUnit(0)->getKind() == UNIT_KIND_METRE); fail_unless(fud->getUnit(1)->getMultiplier() == 1); fail_unless(fud->getUnit(1)->getScale() == 0); fail_unless(fud->getUnit(1)->getExponent() == -1); fail_unless(fud->getUnit(1)->getOffset() == 0.0); fail_unless(fud->getUnit(1)->getKind() == UNIT_KIND_SECOND); fud = m->getRule(2)->getDerivedUnitDefinition(); undecl = m->getRule(2)->containsUndeclaredUnits(); fail_unless(undecl == 1); fail_unless(fud->getNumUnits() == 1); fail_unless(!strcmp(fud->getId().c_str(), ""), NULL); fail_unless(fud->getUnit(0)->getMultiplier() == 1); fail_unless(fud->getUnit(0)->getScale() == 0); fail_unless(fud->getUnit(0)->getExponent() == 1); fail_unless(fud->getUnit(0)->getOffset() == 0.0); fail_unless(fud->getUnit(0)->getKind() == UNIT_KIND_LITRE); }
END_TEST START_TEST (test_UnitFormulaFormatter_getUnitDefinition_times) { UnitDefinition * ud = new UnitDefinition(2, 4); ud = uff->getUnitDefinition(m->getRule(5)->getMath()); fail_unless(ud->getNumUnits() == 2); fail_unless(!strcmp(ud->getId().c_str(), ""), NULL); fail_unless(ud->getUnit(0)->getMultiplier() == 1); fail_unless(ud->getUnit(0)->getScale() == 0); fail_unless(ud->getUnit(0)->getExponent() == 2); fail_unless(ud->getUnit(0)->getOffset() == 0.0); fail_unless(ud->getUnit(0)->getKind() == UNIT_KIND_METRE); fail_unless(ud->getUnit(1)->getMultiplier() == 1); fail_unless(ud->getUnit(1)->getScale() == 0); fail_unless(ud->getUnit(1)->getExponent() == -1); fail_unless(ud->getUnit(1)->getOffset() == 0.0); fail_unless(ud->getUnit(1)->getKind() == UNIT_KIND_SECOND); ud = uff->getUnitDefinition(m->getRule(9)->getMath()); fail_unless(ud->getNumUnits() == 1); fail_unless(!strcmp(ud->getId().c_str(), ""), NULL); fail_unless(ud->getUnit(0)->getMultiplier() == 1); fail_unless(ud->getUnit(0)->getScale() == 0); fail_unless(ud->getUnit(0)->getExponent() == 1); fail_unless(ud->getUnit(0)->getOffset() == 0.0); fail_unless(ud->getUnit(0)->getKind() == UNIT_KIND_METRE); /* check an invalid node */ delete ud; UnitDefinition * ud1 = new UnitDefinition(m->getLevel(), m->getVersion()); ASTNode *node = new ASTNode(AST_TIMES); ud1 = uff->getUnitDefinition(node); fail_unless (ud1->getNumUnits() == 0); delete ud1; delete node; }
END_TEST START_TEST (test_CalcUnitDefinition_local1) { UnitDefinition *fud = m->getReaction("R5")->getKineticLaw() ->getLocalParameter(0)->getDerivedUnitDefinition(); fail_unless(fud->getNumUnits() == 0); m->getReaction("R5")->getKineticLaw() ->getLocalParameter(0)->setCalculatingUnits(true); fud = m->getReaction("R5")->getKineticLaw() ->getLocalParameter(0)->getDerivedUnitDefinition(); m->getReaction("R5")->getKineticLaw() ->getLocalParameter(0)->setCalculatingUnits(false); fail_unless(fud->getNumUnits() == 1); fail_unless(!strcmp(fud->getId().c_str(), ""), NULL); fail_unless(fud->getUnit(0)->getMultiplier() == 1); fail_unless(fud->getUnit(0)->getScale() == 0); fail_unless(fud->getUnit(0)->getExponent() == 1); fail_unless(fud->getUnit(0)->getOffset() == 0.0); fail_unless(fud->getUnit(0)->getKind() == UNIT_KIND_SECOND); }
END_TEST START_TEST (test_CalcUnitDefinition_assignmentRule1) { UnitDefinition *fud = m->getParameter("e")->getDerivedUnitDefinition(); fail_unless(fud->getNumUnits() == 0); m->getParameter("e")->setCalculatingUnits(true); fud = m->getParameter("e")->getDerivedUnitDefinition(); m->getParameter("e")->setCalculatingUnits(false); fail_unless(fud->getNumUnits() == 2); fail_unless(!strcmp(fud->getId().c_str(), ""), NULL); fail_unless(fud->getUnit(0)->getMultiplier() == 1); fail_unless(fud->getUnit(0)->getScale() == 0); fail_unless(fud->getUnit(0)->getExponent() == 1); fail_unless(fud->getUnit(0)->getOffset() == 0.0); fail_unless(fud->getUnit(0)->getKind() == UNIT_KIND_METRE); fail_unless(fud->getUnit(1)->getMultiplier() == 1); fail_unless(fud->getUnit(1)->getScale() == 0); fail_unless(fud->getUnit(1)->getExponent() == -1); fail_unless(fud->getUnit(1)->getOffset() == 0.0); fail_unless(fud->getUnit(1)->getKind() == UNIT_KIND_SECOND); delete fud; }
END_TEST START_TEST (test_UnitFormulaFormatter_getUnitDefinition_reaction) { UnitDefinition * ud = new UnitDefinition(2, 4); ud = uff->getUnitDefinition(m->getRule(13)->getMath()); fail_unless(ud->getNumUnits() == 3); fail_unless(!strcmp(ud->getId().c_str(), ""), NULL); fail_unless(ud->getUnit(0)->getMultiplier() == 1); fail_unless(ud->getUnit(0)->getScale() == 0); fail_unless(ud->getUnit(0)->getExponent() == 1); fail_unless(ud->getUnit(0)->getOffset() == 0.0); fail_unless(ud->getUnit(0)->getKind() == UNIT_KIND_METRE); fail_unless(ud->getUnit(1)->getMultiplier() == 1); fail_unless(ud->getUnit(1)->getScale() == 0); fail_unless(ud->getUnit(1)->getExponent() == 1); fail_unless(ud->getUnit(1)->getOffset() == 0.0); fail_unless(ud->getUnit(1)->getKind() == UNIT_KIND_MOLE); fail_unless(ud->getUnit(2)->getMultiplier() == 1); fail_unless(ud->getUnit(2)->getScale() == 0); fail_unless(ud->getUnit(2)->getExponent() == -1); fail_unless(ud->getUnit(2)->getOffset() == 0.0); fail_unless(ud->getUnit(2)->getKind() == UNIT_KIND_SECOND); delete ud; }
END_TEST START_TEST (test_UnitFormulaFormatter2_getUnitDefinition_model_extent) { UnitDefinition * ud = NULL; /* model extent units */ ud = uff->getExtentUnitDefinition(); fail_unless(ud->getNumUnits() == 1); fail_unless(!strcmp(ud->getId().c_str(), ""), NULL); fail_unless(ud->getUnit(0)->getMultiplier() == 1); fail_unless(ud->getUnit(0)->getScale() == 0); fail_unless(ud->getUnit(0)->getExponent() == 1); fail_unless(ud->getUnit(0)->getOffset() == 0.0); fail_unless(ud->getUnit(0)->getKind() == UNIT_KIND_MOLE); /* check deals with invalid nodes */ delete ud; UnitDefinition * ud1 = NULL; m->unsetExtentUnits(); ud1 = uff->getExtentUnitDefinition(); fail_unless (ud1->getNumUnits() == 0); delete ud1; }
END_TEST START_TEST (test_DerivedUnitDefinition_reaction) { UnitDefinition *fud = m->getReaction(0)->getKineticLaw()->getDerivedUnitDefinition(); bool undecl = m->getReaction(0)->getKineticLaw()->containsUndeclaredUnits(); fail_unless(undecl == 0); fail_unless(fud->getNumUnits() == 2); fail_unless(!strcmp(fud->getId().c_str(), ""), NULL); fail_unless(fud->getUnit(0)->getMultiplier() == 1); fail_unless(fud->getUnit(0)->getScale() == 0); fail_unless(fud->getUnit(0)->getExponent() == 1); fail_unless(fud->getUnit(0)->getOffset() == 0.0); fail_unless(fud->getUnit(0)->getKind() == UNIT_KIND_MOLE); fail_unless(fud->getUnit(1)->getMultiplier() == 1); fail_unless(fud->getUnit(1)->getScale() == 0); fail_unless(fud->getUnit(1)->getExponent() == -1); fail_unless(fud->getUnit(1)->getOffset() == 0.0); fail_unless(fud->getUnit(1)->getKind() == UNIT_KIND_SECOND); fud = m->getReaction(0)->getReactant(0)->getStoichiometryMath()->getDerivedUnitDefinition(); undecl = m->getReaction(0)->getReactant(0)->getStoichiometryMath()->containsUndeclaredUnits(); fail_unless(undecl == 1); fail_unless(fud->getNumUnits() == 0); fail_unless(!strcmp(fud->getId().c_str(), ""), NULL); }
END_TEST START_TEST (test_infer_newUD) { string filename(TestDataDirectory); filename += "inferUnits.xml"; SBMLDocument* d = readSBMLFromFile(filename.c_str()); fail_unless(d != NULL); fail_unless(d->getModel()->getParameter("b")->isSetUnits() == false); fail_unless(d->getModel()->getNumUnitDefinitions() == 1); SBMLInferUnitsConverter * units = new SBMLInferUnitsConverter(); units->setDocument(d); fail_unless (units->convert() == LIBSBML_OPERATION_SUCCESS); fail_unless(d->getModel()->getParameter("b")->isSetUnits() == true); fail_unless(d->getModel()->getParameter("b")->getUnits() == "unitSid_0"); fail_unless(d->getModel()->getNumUnitDefinitions() == 2); UnitDefinition *ud = d->getModel()->getUnitDefinition(1); fail_unless(ud->getId() == "unitSid_0"); fail_unless(ud->getNumUnits() == 2); fail_unless(ud->getUnit(0)->getMultiplier() == 1); fail_unless(ud->getUnit(0)->getScale() == 0); fail_unless(ud->getUnit(0)->getExponent() == 1); fail_unless(ud->getUnit(0)->getOffset() == 0.0); fail_unless(ud->getUnit(0)->getKind() == UNIT_KIND_LITRE); fail_unless(ud->getUnit(1)->getMultiplier() == 1); fail_unless(ud->getUnit(1)->getScale() == 0); fail_unless(ud->getUnit(1)->getExponent() == 1); fail_unless(ud->getUnit(1)->getOffset() == 0.0); fail_unless(ud->getUnit(1)->getKind() == UNIT_KIND_METRE); delete units; delete d; }
END_TEST START_TEST (test_DerivedUnitDefinition_initialassignment) { UnitDefinition *fud = m->getInitialAssignment(0)->getDerivedUnitDefinition(); bool undecl = m->getInitialAssignment(0)->containsUndeclaredUnits(); fail_unless(undecl == 1); fail_unless(fud->getNumUnits() == 1); fail_unless(!strcmp(fud->getId().c_str(), ""), NULL); fail_unless(fud->getUnit(0)->getMultiplier() == 1); fail_unless(fud->getUnit(0)->getScale() == -2); fail_unless(fud->getUnit(0)->getExponent() == 1); fail_unless(fud->getUnit(0)->getOffset() == 0.0); fail_unless(fud->getUnit(0)->getKind() == UNIT_KIND_MOLE); }
double SbmlReader::unitsforRates() { double lvalue =1; for (unsigned int n=0; n < model_->getNumUnitDefinitions(); n++) { UnitDefinition * ud = model_->getUnitDefinition(n); for (unsigned int ut=0; ut <ud->getNumUnits(); ut++) { Unit * unit = ud->getUnit(ut); if (ud->getId() == "substance") { if ( unit->isMole() ) { double exponent = unit->getExponent(); double multiplier = unit->getMultiplier(); int scale = unit->getScale(); double offset = unit->getOffset(); lvalue *= pow( multiplier * pow(10.0,scale), exponent ) + offset; return lvalue; } } } } return lvalue; }//unitforRates
END_TEST START_TEST (test_UnitFormulaFormatter_getUnitDefinition_invtrig) { UnitDefinition * ud = new UnitDefinition(2, 4); ud = uff->getUnitDefinition(m->getRule(2)->getMath()); fail_unless(ud->getNumUnits() == 1); fail_unless(!strcmp(ud->getId().c_str(), ""), NULL); fail_unless(ud->getUnit(0)->getMultiplier() == 1); fail_unless(ud->getUnit(0)->getScale() == 0); fail_unless(ud->getUnit(0)->getExponent() == 1); fail_unless(ud->getUnit(0)->getOffset() == 0.0); fail_unless(ud->getUnit(0)->getKind() == UNIT_KIND_DIMENSIONLESS); delete ud; }
END_TEST START_TEST (test_CalcUnitDefinition_global_with_local_known) { UnitDefinition *fud = m->getParameter("q")->getDerivedUnitDefinition(); fail_unless(fud->getNumUnits() == 0); m->getParameter("q")->setCalculatingUnits(true); fud = m->getParameter("q")->getDerivedUnitDefinition(); m->getParameter("q")->setCalculatingUnits(false); fail_unless(fud->getNumUnits() == 1); fail_unless(!strcmp(fud->getId().c_str(), ""), NULL); fail_unless(fud->getUnit(0)->getMultiplier() == 1); fail_unless(fud->getUnit(0)->getScale() == 0); fail_unless(fud->getUnit(0)->getExponent() == 1); fail_unless(fud->getUnit(0)->getOffset() == 0.0); fail_unless(fud->getUnit(0)->getKind() == UNIT_KIND_LITRE); }
END_TEST START_TEST (test_UnitFormulaFormatter_getUnitDefinition_piecewise) { UnitDefinition * ud = new UnitDefinition(2, 4); ud = uff->getUnitDefinition(m->getRule(7)->getMath()); fail_unless(ud->getNumUnits() == 1); fail_unless(!strcmp(ud->getId().c_str(), ""), NULL); fail_unless(ud->getUnit(0)->getMultiplier() == 1); fail_unless(ud->getUnit(0)->getScale() == 0); fail_unless(ud->getUnit(0)->getExponent() == 1); fail_unless(ud->getUnit(0)->getOffset() == 0.0); fail_unless(ud->getUnit(0)->getKind() == UNIT_KIND_METRE); /* check deals with invalid nodes */ delete ud; UnitDefinition * ud1 = new UnitDefinition(m->getLevel(), m->getVersion()); ASTNode *node = new ASTNode(AST_FUNCTION_PIECEWISE); ud1 == uff->getUnitDefinition(node); fail_unless (ud1->getNumUnits() == 0); ASTNode *c = new ASTNode(AST_UNKNOWN); node->addChild(c); ud1 == uff->getUnitDefinition(node); fail_unless (ud1->getNumUnits() == 0); delete ud1; delete node; }
END_TEST START_TEST (test_UnitFormulaFormatter2_getUnitDefinition_event) { UnitDefinition * ud = NULL; /* event with no time units */ ud = uff->getUnitDefinitionFromEventTime(m->getEvent(0)); fail_unless(ud->getNumUnits() == 1); fail_unless(!strcmp(ud->getId().c_str(), ""), NULL); fail_unless(ud->getUnit(0)->getMultiplier() == 60); fail_unless(ud->getUnit(0)->getScale() == 0); fail_unless(ud->getUnit(0)->getExponent() == 1); fail_unless(ud->getUnit(0)->getOffset() == 0.0); fail_unless(ud->getUnit(0)->getKind() == UNIT_KIND_SECOND); /* check deals with invalid nodes */ delete ud; UnitDefinition * ud1 = NULL; Event *e = new Event(m->getLevel(), m->getVersion()); e->setId("p"); m->unsetTimeUnits(); ud1 = uff->getUnitDefinitionFromEventTime(e); fail_unless (ud1->getNumUnits() == 0); delete e; delete ud1; }
END_TEST START_TEST (test_CalcUnitDefinition_priority) { UnitDefinition *fud = m->getParameter("m")->getDerivedUnitDefinition(); fail_unless(fud->getNumUnits() == 0); m->getParameter("m")->setCalculatingUnits(true); fud = m->getParameter("m")->getDerivedUnitDefinition(); m->getParameter("m")->setCalculatingUnits(false); fail_unless(fud->getNumUnits() == 1); fail_unless(!strcmp(fud->getId().c_str(), ""), NULL); fail_unless(fud->getUnit(0)->getMultiplier() == 1); fail_unless(fud->getUnit(0)->getScale() == 0); fail_unless(fud->getUnit(0)->getExponent() == 1); fail_unless(fud->getUnit(0)->getOffset() == 0.0); fail_unless(fud->getUnit(0)->getKind() == UNIT_KIND_DIMENSIONLESS); delete fud; }
END_TEST START_TEST (test_UnitFormulaFormatter2_getUnitDefinition_species_extent) { UnitDefinition * ud = NULL; /* model extent units + conversion on species*/ ud = uff->getSpeciesExtentUnitDefinition(m->getSpecies(0)); fail_unless(ud->getNumUnits() == 2); fail_unless(!strcmp(ud->getId().c_str(), ""), NULL); fail_unless(ud->getUnit(0)->getMultiplier() == 1); fail_unless(ud->getUnit(0)->getScale() == 0); fail_unless(ud->getUnit(0)->getExponent() == 1); fail_unless(ud->getUnit(0)->getOffset() == 0.0); fail_unless(ud->getUnit(0)->getKind() == UNIT_KIND_MOLE); fail_unless(ud->getUnit(1)->getMultiplier() == 1); fail_unless(ud->getUnit(1)->getScale() == 0); fail_unless(ud->getUnit(1)->getExponent() == 1); fail_unless(ud->getUnit(1)->getOffset() == 0.0); fail_unless(ud->getUnit(1)->getKind() == UNIT_KIND_SECOND); delete ud; /* model extent units + conversion on model*/ ud = uff->getSpeciesExtentUnitDefinition(m->getSpecies(1)); fail_unless(ud->getNumUnits() == 2); fail_unless(!strcmp(ud->getId().c_str(), ""), NULL); fail_unless(ud->getUnit(0)->getMultiplier() == 1); fail_unless(ud->getUnit(0)->getScale() == 0); fail_unless(ud->getUnit(0)->getExponent() == 1); fail_unless(ud->getUnit(0)->getOffset() == 0.0); fail_unless(ud->getUnit(0)->getKind() == UNIT_KIND_MOLE); fail_unless(ud->getUnit(1)->getMultiplier() == 1); fail_unless(ud->getUnit(1)->getScale() == 0); fail_unless(ud->getUnit(1)->getExponent() == 1); fail_unless(ud->getUnit(1)->getOffset() == 0.0); fail_unless(ud->getUnit(1)->getKind() == UNIT_KIND_SECOND); /* check deals with invalid nodes */ delete ud; UnitDefinition * ud1 = NULL; m->unsetConversionFactor(); ud1 = uff->getSpeciesExtentUnitDefinition(m->getSpecies(1)); fail_unless (ud1->getNumUnits() == 0); m->getSpecies(0)->unsetConversionFactor(); delete ud1; ud1 = uff->getSpeciesExtentUnitDefinition(m->getSpecies(0)); fail_unless (ud1->getNumUnits() == 0); m->getSpecies(0)->setConversionFactor("cf"); m->unsetExtentUnits(); delete ud1; ud1 = uff->getSpeciesExtentUnitDefinition(m->getSpecies(0)); fail_unless (ud1->getNumUnits() == 0); delete ud1; }
void CompIdBase::checkId (const UnitDefinition& x) { if (x.isSetId()) doCheckId(x.getId(), x); }
END_TEST START_TEST (test_UnitFormulaFormatter2_getUnitDefinition_parameter) { UnitDefinition * ud = NULL; /* parameter with declared standard units */ ud = uff->getUnitDefinitionFromParameter(m->getParameter(0)); fail_unless(ud->getNumUnits() == 1); fail_unless(!strcmp(ud->getId().c_str(), ""), NULL); fail_unless(ud->getUnit(0)->getMultiplier() == 1); fail_unless(ud->getUnit(0)->getScale() == 0); fail_unless(ud->getUnit(0)->getExponent() == 1); fail_unless(ud->getUnit(0)->getOffset() == 0.0); fail_unless(ud->getUnit(0)->getKind() == UNIT_KIND_METRE); delete ud; /* parameter with declared units from unit definition */ ud = uff->getUnitDefinitionFromParameter(m->getParameter(1)); fail_unless(ud->getNumUnits() == 2); fail_unless(!strcmp(ud->getId().c_str(), ""), NULL); fail_unless(ud->getUnit(0)->getMultiplier() == 1); fail_unless(ud->getUnit(0)->getScale() == 0); fail_unless(ud->getUnit(0)->getExponent() == 1); fail_unless(ud->getUnit(0)->getOffset() == 0.0); fail_unless(ud->getUnit(0)->getKind() == UNIT_KIND_METRE); fail_unless(ud->getUnit(1)->getMultiplier() == 1); fail_unless(ud->getUnit(1)->getScale() == 0); fail_unless(ud->getUnit(1)->getExponent() == -1); fail_unless(ud->getUnit(1)->getOffset() == 0.0); fail_unless(ud->getUnit(1)->getKind() == UNIT_KIND_SECOND); delete ud; /* parameter with no declared units */ ud = uff->getUnitDefinitionFromParameter(m->getParameter(2)); fail_unless(ud->getNumUnits() == 0); fail_unless(!strcmp(ud->getId().c_str(), ""), NULL); /* check deals with invalid nodes */ delete ud; UnitDefinition * ud1 = NULL; Parameter *p = new Parameter(m->getLevel(), m->getVersion()); p->setId("p"); p->setUnits("undefined"); ud1 = uff->getUnitDefinitionFromParameter(p); fail_unless (ud1->getNumUnits() == 0); delete p; delete ud1; }
END_TEST START_TEST (test_UnitFormulaFormatter2_getUnitDefinition_species) { UnitDefinition * ud = NULL; /* species with declared standard units for substance and comp with units*/ ud = uff->getUnitDefinitionFromSpecies(m->getSpecies(0)); fail_unless(ud->getNumUnits() == 2); fail_unless(!strcmp(ud->getId().c_str(), ""), NULL); fail_unless(ud->getUnit(0)->getMultiplier() == 1); fail_unless(ud->getUnit(0)->getScale() == 0); fail_unless(ud->getUnit(0)->getExponent() == 1); fail_unless(ud->getUnit(0)->getOffset() == 0.0); fail_unless(ud->getUnit(0)->getKind() == UNIT_KIND_MOLE); fail_unless(ud->getUnit(1)->getMultiplier() == 1); fail_unless(ud->getUnit(1)->getScale() == 0); fail_unless(ud->getUnit(1)->getExponent() == -1); fail_unless(ud->getUnit(1)->getOffset() == 0.0); fail_unless(ud->getUnit(1)->getKind() == UNIT_KIND_LITRE); delete ud; ud = uff->getSpeciesSubstanceUnitDefinition(m->getSpecies(0)); fail_unless(ud->getNumUnits() == 1); fail_unless(!strcmp(ud->getId().c_str(), ""), NULL); fail_unless(ud->getUnit(0)->getMultiplier() == 1); fail_unless(ud->getUnit(0)->getScale() == 0); fail_unless(ud->getUnit(0)->getExponent() == 1); fail_unless(ud->getUnit(0)->getOffset() == 0.0); fail_unless(ud->getUnit(0)->getKind() == UNIT_KIND_MOLE); delete ud; /* species with declared standard units for substance and hasOnlySubstanceUnits = 1*/ ud = uff->getUnitDefinitionFromSpecies(m->getSpecies(1)); fail_unless(ud->getNumUnits() == 1); fail_unless(!strcmp(ud->getId().c_str(), ""), NULL); fail_unless(ud->getUnit(0)->getMultiplier() == 1); fail_unless(ud->getUnit(0)->getScale() == -2); fail_unless(ud->getUnit(0)->getExponent() == 1); fail_unless(ud->getUnit(0)->getOffset() == 0.0); fail_unless(ud->getUnit(0)->getKind() == UNIT_KIND_MOLE); delete ud; ud = uff->getSpeciesSubstanceUnitDefinition(m->getSpecies(1)); fail_unless(ud->getNumUnits() == 1); fail_unless(!strcmp(ud->getId().c_str(), ""), NULL); fail_unless(ud->getUnit(0)->getMultiplier() == 1); fail_unless(ud->getUnit(0)->getScale() == -2); fail_unless(ud->getUnit(0)->getExponent() == 1); fail_unless(ud->getUnit(0)->getOffset() == 0.0); fail_unless(ud->getUnit(0)->getKind() == UNIT_KIND_MOLE); delete ud; /* species with units from model substance*/ ud = uff->getUnitDefinitionFromSpecies(m->getSpecies(2)); fail_unless(ud->getNumUnits() == 2); fail_unless(!strcmp(ud->getId().c_str(), ""), NULL); fail_unless(ud->getUnit(0)->getMultiplier() == 1); fail_unless(ud->getUnit(0)->getScale() == 0); fail_unless(ud->getUnit(0)->getExponent() == 1); fail_unless(ud->getUnit(0)->getOffset() == 0.0); fail_unless(ud->getUnit(0)->getKind() == UNIT_KIND_MOLE); fail_unless(ud->getUnit(1)->getMultiplier() == 1); fail_unless(ud->getUnit(1)->getScale() == 0); fail_unless(ud->getUnit(1)->getExponent() == -1); fail_unless(ud->getUnit(1)->getOffset() == 0.0); fail_unless(ud->getUnit(1)->getKind() == UNIT_KIND_LITRE); delete ud; ud = uff->getSpeciesSubstanceUnitDefinition(m->getSpecies(2)); fail_unless(ud->getNumUnits() == 1); fail_unless(!strcmp(ud->getId().c_str(), ""), NULL); fail_unless(ud->getUnit(0)->getMultiplier() == 1); fail_unless(ud->getUnit(0)->getScale() == 0); fail_unless(ud->getUnit(0)->getExponent() == 1); fail_unless(ud->getUnit(0)->getOffset() == 0.0); fail_unless(ud->getUnit(0)->getKind() == UNIT_KIND_MOLE); delete ud; /* species with declared standard units for substance and no spatialSizeUnits*/ ud = uff->getUnitDefinitionFromSpecies(m->getSpecies(3)); fail_unless(ud->getNumUnits() == 0); delete ud; ud = uff->getSpeciesSubstanceUnitDefinition(m->getSpecies(3)); fail_unless(ud->getNumUnits() == 1); fail_unless(!strcmp(ud->getId().c_str(), ""), NULL); fail_unless(ud->getUnit(0)->getMultiplier() == 1); fail_unless(ud->getUnit(0)->getScale() == 0); fail_unless(ud->getUnit(0)->getExponent() == 1); fail_unless(ud->getUnit(0)->getOffset() == 0.0); fail_unless(ud->getUnit(0)->getKind() == UNIT_KIND_MOLE); ///* check deals with invalid nodes */ delete ud; UnitDefinition * ud1 = NULL; Species *s = new Species(m->getLevel(), m->getVersion()); s->setId("s"); s->setUnits("undefined"); ud1 = uff->getUnitDefinitionFromSpecies(s); fail_unless (ud1->getNumUnits() == 0); delete ud1; ud1 = uff->getSpeciesSubstanceUnitDefinition(s); fail_unless (ud1->getNumUnits() == 0); s->setUnits("mole"); // here the compartment size will be NULL delete ud1; ud1 = uff->getUnitDefinitionFromSpecies(s); fail_unless (ud1->getNumUnits() == 1); delete ud1; ud1 = uff->getSpeciesSubstanceUnitDefinition(s); fail_unless (ud1->getNumUnits() == 1); delete s; delete ud1; }