1# 2# @file TestL3FormulaParserC.py 3# @brief L3FormulaParser unit tests 4# 5# @author Akiya Jouraku (Python conversion) 6# @author Ben Bornstein 7 8# 9# ====== WARNING ===== WARNING ===== WARNING ===== WARNING ===== WARNING ====== 10# 11# DO NOT EDIT THIS FILE. 12# 13# This file was generated automatically by converting the file located at 14# src/sbml/test/TestL3FormulaParserC.c 15# using the conversion program dev/utilities/translateTests/translateTests.pl. 16# Any changes made here will be lost the next time the file is regenerated. 17# 18# ----------------------------------------------------------------------------- 19# This file is part of libSBML. Please visit http://sbml.org for more 20# information about SBML, and the latest version of libSBML. 21# 22# Copyright 2005-2010 California Institute of Technology. 23# Copyright 2002-2005 California Institute of Technology and 24# Japan Science and Technology Corporation. 25# 26# This library is free software; you can redistribute it and/or modify it 27# under the terms of the GNU Lesser General Public License as published by 28# the Free Software Foundation. A copy of the license agreement is provided 29# in the file named "LICENSE.txt" included with this software distribution 30# and also available online as http://sbml.org/software/libsbml/license.html 31# ----------------------------------------------------------------------------- 32 33import sys 34import math 35import unittest 36import libsbml 37 38def isnan(x): 39 return (x != x) 40 pass 41 42def util_isInf(*x): 43 return ( (x[0] == util_PosInf()) or (x[0] == util_NegInf()) ) 44 45def util_NaN(): 46 z = 1e300 47 z = z * z 48 49 return z - z 50 51def util_PosInf(): 52 z = 1e300 53 z = z * z 54 55 return z 56 57def util_NegInf(): 58 z = 1e300 59 z = z * z 60 61 return -z 62 63class TestL3FormulaParserC(unittest.TestCase): 64 65 def test_SBML_C_parseL3Formula_1(self): 66 r = libsbml.parseL3Formula("1") 67 self.assert_( r.getType() == libsbml.AST_INTEGER ) 68 self.assert_( r.getInteger() == 1 ) 69 self.assert_( r.getNumChildren() == 0 ) 70 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 71 pass 72 73 def test_SBML_C_parseL3Formula_10(self): 74 r = libsbml.parseL3Formula("1 + -2e100 / 3") 75 self.assert_( r.getType() == libsbml.AST_PLUS ) 76 self.assert_( r.getCharacter() == '+' ) 77 self.assert_( r.getNumChildren() == 2 ) 78 c = r.getLeftChild() 79 self.assert_( c.getType() == libsbml.AST_INTEGER ) 80 self.assert_( c.getInteger() == 1 ) 81 self.assert_( c.getNumChildren() == 0 ) 82 c = r.getRightChild() 83 self.assert_( c.getType() == libsbml.AST_DIVIDE ) 84 self.assert_( c.getCharacter() == '/' ) 85 self.assert_( c.getNumChildren() == 2 ) 86 c = c.getLeftChild() 87 self.assert_( c.getType() == libsbml.AST_MINUS ) 88 self.assert_( c.getCharacter() == '-' ) 89 self.assert_( c.getNumChildren() == 1 ) 90 c = c.getLeftChild() 91 self.assert_( c.getType() == libsbml.AST_REAL_E ) 92 self.assert_( c.getMantissa() == 2 ) 93 self.assert_( c.getExponent() == 100 ) 94 self.assert_( c.getNumChildren() == 0 ) 95 c = r.getRightChild().getRightChild() 96 self.assert_( c.getType() == libsbml.AST_INTEGER ) 97 self.assert_( c.getInteger() == 3 ) 98 self.assert_( c.getNumChildren() == 0 ) 99 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 100 pass 101 102 def test_SBML_C_parseL3Formula_11(self): 103 r = libsbml.parseL3Formula("1 - -foo / 3") 104 self.assert_( r.getType() == libsbml.AST_MINUS ) 105 self.assert_( r.getCharacter() == '-' ) 106 self.assert_( r.getNumChildren() == 2 ) 107 c = r.getLeftChild() 108 self.assert_( c.getType() == libsbml.AST_INTEGER ) 109 self.assert_( c.getInteger() == 1 ) 110 self.assert_( c.getNumChildren() == 0 ) 111 c = r.getRightChild() 112 self.assert_( c.getType() == libsbml.AST_DIVIDE ) 113 self.assert_( c.getCharacter() == '/' ) 114 self.assert_( c.getNumChildren() == 2 ) 115 c = r.getRightChild().getLeftChild() 116 self.assert_( c.getType() == libsbml.AST_MINUS ) 117 self.assert_( c.getCharacter() == '-' ) 118 self.assert_( c.getNumChildren() == 1 ) 119 c = r.getRightChild().getLeftChild().getLeftChild() 120 self.assert_( c.getType() == libsbml.AST_NAME ) 121 self.assert_(( "foo" == c.getName() )) 122 self.assert_( c.getNumChildren() == 0 ) 123 c = r.getRightChild().getRightChild() 124 self.assert_( c.getType() == libsbml.AST_INTEGER ) 125 self.assert_( c.getInteger() == 3 ) 126 self.assert_( c.getNumChildren() == 0 ) 127 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 128 pass 129 130 def test_SBML_C_parseL3Formula_12(self): 131 r = libsbml.parseL3Formula("2 * foo^bar + 3.0") 132 self.assert_( r.getType() == libsbml.AST_PLUS ) 133 self.assert_( r.getCharacter() == '+' ) 134 self.assert_( r.getNumChildren() == 2 ) 135 c = r.getLeftChild() 136 self.assert_( c.getType() == libsbml.AST_TIMES ) 137 self.assert_( c.getCharacter() == '*' ) 138 self.assert_( c.getNumChildren() == 2 ) 139 c = r.getRightChild() 140 self.assert_( c.getType() == libsbml.AST_REAL ) 141 self.assert_( c.getReal() == 3.0 ) 142 self.assert_( c.getNumChildren() == 0 ) 143 c = r.getLeftChild().getLeftChild() 144 self.assert_( c.getType() == libsbml.AST_INTEGER ) 145 self.assert_( c.getInteger() == 2 ) 146 self.assert_( c.getNumChildren() == 0 ) 147 c = r.getLeftChild().getRightChild() 148 self.assert_( c.getType() == libsbml.AST_POWER ) 149 self.assert_( c.getCharacter() == '^' ) 150 self.assert_( c.getNumChildren() == 2 ) 151 c = r.getLeftChild().getRightChild().getLeftChild() 152 self.assert_( c.getType() == libsbml.AST_NAME ) 153 self.assert_(( "foo" == c.getName() )) 154 self.assert_( c.getNumChildren() == 0 ) 155 c = r.getLeftChild().getRightChild().getRightChild() 156 self.assert_( c.getType() == libsbml.AST_NAME ) 157 self.assert_(( "bar" == c.getName() )) 158 self.assert_( c.getNumChildren() == 0 ) 159 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 160 pass 161 162 def test_SBML_C_parseL3Formula_13(self): 163 r = libsbml.parseL3Formula("foo()") 164 self.assert_( r.getType() == libsbml.AST_FUNCTION ) 165 self.assert_(( "foo" == r.getName() )) 166 self.assert_( r.getNumChildren() == 0 ) 167 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 168 pass 169 170 def test_SBML_C_parseL3Formula_14(self): 171 r = libsbml.parseL3Formula("foo(1)") 172 self.assert_( r.getType() == libsbml.AST_FUNCTION ) 173 self.assert_(( "foo" == r.getName() )) 174 self.assert_( r.getNumChildren() == 1 ) 175 c = r.getLeftChild() 176 self.assert_( c.getType() == libsbml.AST_INTEGER ) 177 self.assert_( c.getInteger() == 1 ) 178 self.assert_( c.getNumChildren() == 0 ) 179 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 180 pass 181 182 def test_SBML_C_parseL3Formula_15(self): 183 r = libsbml.parseL3Formula("foo(1, bar)") 184 self.assert_( r.getType() == libsbml.AST_FUNCTION ) 185 self.assert_(( "foo" == r.getName() )) 186 self.assert_( r.getNumChildren() == 2 ) 187 c = r.getLeftChild() 188 self.assert_( c.getType() == libsbml.AST_INTEGER ) 189 self.assert_( c.getInteger() == 1 ) 190 self.assert_( c.getNumChildren() == 0 ) 191 c = r.getRightChild() 192 self.assert_( c.getType() == libsbml.AST_NAME ) 193 self.assert_(( "bar" == c.getName() )) 194 self.assert_( c.getNumChildren() == 0 ) 195 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 196 pass 197 198 def test_SBML_C_parseL3Formula_16(self): 199 r = libsbml.parseL3Formula("foo(1, bar, 2^-3)") 200 self.assert_( r.getType() == libsbml.AST_FUNCTION ) 201 self.assert_(( "foo" == r.getName() )) 202 self.assert_( r.getNumChildren() == 3 ) 203 c = r.getChild(0) 204 self.assert_( c.getType() == libsbml.AST_INTEGER ) 205 self.assert_( c.getInteger() == 1 ) 206 self.assert_( c.getNumChildren() == 0 ) 207 c = r.getChild(1) 208 self.assert_( c.getType() == libsbml.AST_NAME ) 209 self.assert_(( "bar" == c.getName() )) 210 self.assert_( c.getNumChildren() == 0 ) 211 c = r.getChild(2) 212 self.assert_( c.getType() == libsbml.AST_POWER ) 213 self.assert_( c.getCharacter() == '^' ) 214 self.assert_( c.getNumChildren() == 2 ) 215 c = r.getChild(2).getLeftChild() 216 self.assert_( c.getType() == libsbml.AST_INTEGER ) 217 self.assert_( c.getInteger() == 2 ) 218 self.assert_( c.getNumChildren() == 0 ) 219 c = r.getChild(2).getRightChild() 220 self.assert_( c.getType() == libsbml.AST_MINUS ) 221 self.assert_( c.getCharacter() == '-' ) 222 self.assert_( c.getNumChildren() == 1 ) 223 c = c.getLeftChild() 224 self.assert_( c.getType() == libsbml.AST_INTEGER ) 225 self.assert_( c.getInteger() == 3 ) 226 self.assert_( c.getNumChildren() == 0 ) 227 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 228 pass 229 230 def test_SBML_C_parseL3Formula_17(self): 231 r = libsbml.parseL3Formula("1//1") 232 self.assert_( r == None ) 233 self.assert_(( "Error when parsing input '1//1' at position 3: syntax error, unexpected '/'" == libsbml.getLastParseL3Error() )) 234 pass 235 236 def test_SBML_C_parseL3Formula_18(self): 237 r = libsbml.parseL3Formula("1+2*3 4") 238 self.assert_( r == None ) 239 self.assert_(( "Error when parsing input '1+2*3 4' at position 7: syntax error, unexpected integer" == libsbml.getLastParseL3Error() )) 240 pass 241 242 def test_SBML_C_parseL3Formula_2(self): 243 r = libsbml.parseL3Formula("2.1") 244 self.assert_( r.getType() == libsbml.AST_REAL ) 245 self.assert_( r.getReal() == 2.1 ) 246 self.assert_( r.getNumChildren() == 0 ) 247 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 248 pass 249 250 def test_SBML_C_parseL3Formula_3(self): 251 r = libsbml.parseL3Formula("2.1e5") 252 self.assert_( r.getType() == libsbml.AST_REAL_E ) 253 self.assert_( r.getMantissa() == 2.1 ) 254 self.assert_( r.getExponent() == 5 ) 255 self.assert_( r.getNumChildren() == 0 ) 256 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 257 pass 258 259 def test_SBML_C_parseL3Formula_4(self): 260 r = libsbml.parseL3Formula("foo") 261 self.assert_( r.getType() == libsbml.AST_NAME ) 262 self.assert_(( "foo" == r.getName() )) 263 self.assert_( r.getNumChildren() == 0 ) 264 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 265 pass 266 267 def test_SBML_C_parseL3Formula_5(self): 268 r = libsbml.parseL3Formula("1 + foo") 269 self.assert_( r.getType() == libsbml.AST_PLUS ) 270 self.assert_( r.getCharacter() == '+' ) 271 self.assert_( r.getNumChildren() == 2 ) 272 c = r.getLeftChild() 273 self.assert_( c.getType() == libsbml.AST_INTEGER ) 274 self.assert_( c.getInteger() == 1 ) 275 self.assert_( c.getNumChildren() == 0 ) 276 c = r.getRightChild() 277 self.assert_( c.getType() == libsbml.AST_NAME ) 278 self.assert_(( "foo" == c.getName() )) 279 self.assert_( c.getNumChildren() == 0 ) 280 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 281 pass 282 283 def test_SBML_C_parseL3Formula_6(self): 284 r = libsbml.parseL3Formula("1 + 2") 285 self.assert_( r.getType() == libsbml.AST_PLUS ) 286 self.assert_( r.getCharacter() == '+' ) 287 self.assert_( r.getNumChildren() == 2 ) 288 c = r.getLeftChild() 289 self.assert_( c.getType() == libsbml.AST_INTEGER ) 290 self.assert_( c.getInteger() == 1 ) 291 self.assert_( c.getNumChildren() == 0 ) 292 c = r.getRightChild() 293 self.assert_( c.getType() == libsbml.AST_INTEGER ) 294 self.assert_( c.getInteger() == 2 ) 295 self.assert_( c.getNumChildren() == 0 ) 296 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 297 pass 298 299 def test_SBML_C_parseL3Formula_7(self): 300 r = libsbml.parseL3Formula("1 + 2 * 3") 301 self.assert_( r.getType() == libsbml.AST_PLUS ) 302 self.assert_( r.getCharacter() == '+' ) 303 self.assert_( r.getNumChildren() == 2 ) 304 c = r.getLeftChild() 305 self.assert_( c.getType() == libsbml.AST_INTEGER ) 306 self.assert_( c.getInteger() == 1 ) 307 self.assert_( c.getNumChildren() == 0 ) 308 c = r.getRightChild() 309 self.assert_( c.getType() == libsbml.AST_TIMES ) 310 self.assert_( c.getCharacter() == '*' ) 311 self.assert_( c.getNumChildren() == 2 ) 312 c = c.getLeftChild() 313 self.assert_( c.getType() == libsbml.AST_INTEGER ) 314 self.assert_( c.getInteger() == 2 ) 315 self.assert_( c.getNumChildren() == 0 ) 316 c = r.getRightChild().getRightChild() 317 self.assert_( c.getType() == libsbml.AST_INTEGER ) 318 self.assert_( c.getInteger() == 3 ) 319 self.assert_( c.getNumChildren() == 0 ) 320 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 321 pass 322 323 def test_SBML_C_parseL3Formula_8(self): 324 r = libsbml.parseL3Formula("(1 - 2) * 3") 325 self.assert_( r.getType() == libsbml.AST_TIMES ) 326 self.assert_( r.getCharacter() == '*' ) 327 self.assert_( r.getNumChildren() == 2 ) 328 c = r.getLeftChild() 329 self.assert_( c.getType() == libsbml.AST_MINUS ) 330 self.assert_( c.getCharacter() == '-' ) 331 self.assert_( c.getNumChildren() == 2 ) 332 c = r.getRightChild() 333 self.assert_( c.getType() == libsbml.AST_INTEGER ) 334 self.assert_( c.getInteger() == 3 ) 335 self.assert_( c.getNumChildren() == 0 ) 336 c = r.getLeftChild().getLeftChild() 337 self.assert_( c.getType() == libsbml.AST_INTEGER ) 338 self.assert_( c.getInteger() == 1 ) 339 self.assert_( c.getNumChildren() == 0 ) 340 c = r.getLeftChild().getRightChild() 341 self.assert_( c.getType() == libsbml.AST_INTEGER ) 342 self.assert_( c.getInteger() == 2 ) 343 self.assert_( c.getNumChildren() == 0 ) 344 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 345 pass 346 347 def test_SBML_C_parseL3Formula_9(self): 348 r = libsbml.parseL3Formula("1 + -2 / 3") 349 self.assert_( r.getType() == libsbml.AST_PLUS ) 350 self.assert_( r.getCharacter() == '+' ) 351 self.assert_( r.getNumChildren() == 2 ) 352 c = r.getLeftChild() 353 self.assert_( c.getType() == libsbml.AST_INTEGER ) 354 self.assert_( c.getInteger() == 1 ) 355 self.assert_( c.getNumChildren() == 0 ) 356 c = r.getRightChild() 357 self.assert_( c.getType() == libsbml.AST_DIVIDE ) 358 self.assert_( c.getCharacter() == '/' ) 359 self.assert_( c.getNumChildren() == 2 ) 360 c = c.getLeftChild() 361 self.assert_( c.getType() == libsbml.AST_MINUS ) 362 self.assert_( c.getCharacter() == '-' ) 363 self.assert_( c.getNumChildren() == 1 ) 364 c = c.getLeftChild() 365 self.assert_( c.getType() == libsbml.AST_INTEGER ) 366 self.assert_( c.getInteger() == 2 ) 367 self.assert_( c.getNumChildren() == 0 ) 368 c = r.getRightChild().getRightChild() 369 self.assert_( c.getType() == libsbml.AST_INTEGER ) 370 self.assert_( c.getInteger() == 3 ) 371 self.assert_( c.getNumChildren() == 0 ) 372 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 373 pass 374 375 def test_SBML_C_parseL3Formula_arguments(self): 376 r = libsbml.parseL3Formula("sin(x,y)") 377 self.assert_( r == None ) 378 self.assert_(( "Error when parsing input 'sin(x,y)' at position 8: The function 'sin' takes exactly one argument, but 2 were found." == libsbml.getLastParseL3Error() )) 379 r = libsbml.parseL3Formula("delay(x)") 380 self.assert_( r == None ) 381 self.assert_(( "Error when parsing input 'delay(x)' at position 8: The function 'delay' takes exactly two arguments, but 1 were found." == libsbml.getLastParseL3Error() )) 382 r = libsbml.parseL3Formula("piecewise()") 383 self.assert_( r == None ) 384 self.assert_(( "Error when parsing input 'piecewise()' at position 11: The function 'piecewise' takes at least one argument, but none were found." == libsbml.getLastParseL3Error() )) 385 r = libsbml.parseL3Formula("gt(x)") 386 self.assert_( r == None ) 387 self.assert_(( "Error when parsing input 'gt(x)' at position 5: The function 'gt' takes at least two arguments, but 1 were found." == libsbml.getLastParseL3Error() )) 388 r = libsbml.parseL3Formula("minus()") 389 self.assert_( r == None ) 390 self.assert_(( "Error when parsing input 'minus()' at position 7: The function 'minus' takes exactly one or two arguments, but 0 were found." == libsbml.getLastParseL3Error() )) 391 r = libsbml.parseL3Formula("root(x, y, z)") 392 self.assert_( r == None ) 393 self.assert_(( "Error when parsing input 'root(x, y, z)' at position 13: The function 'root' takes exactly one or two arguments, but 3 were found." == libsbml.getLastParseL3Error() )) 394 r = libsbml.parseL3Formula("power()") 395 self.assert_( r == None ) 396 self.assert_(( "Error when parsing input 'power()' at position 7: The function 'power' takes exactly two arguments, but 0 were found." == libsbml.getLastParseL3Error() )) 397 pass 398 399 def test_SBML_C_parseL3Formula_avogadrosettings(self): 400 r = libsbml.parseL3Formula("avogadro") 401 self.assert_( r.getType() == libsbml.AST_NAME_AVOGADRO ) 402 self.assert_( r.getNumChildren() == 0 ) 403 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 404 settings = libsbml.getDefaultL3ParserSettings() 405 settings.setParseAvogadroCsymbol(False) 406 self.assert_( settings.getParseAvogadroCsymbol() == False ) 407 r = libsbml.parseL3FormulaWithSettings("avogadro", settings) 408 self.assert_( r.getType() == libsbml.AST_NAME ) 409 self.assert_(( "avogadro" == r.getName() )) 410 self.assert_( r.getNumChildren() == 0 ) 411 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 412 settings.setParseAvogadroCsymbol(True) 413 self.assert_( settings.getParseAvogadroCsymbol() == True ) 414 r = libsbml.parseL3FormulaWithSettings("avogadro", settings) 415 self.assert_( r.getType() == libsbml.AST_NAME_AVOGADRO ) 416 self.assert_( r.getNumChildren() == 0 ) 417 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 418 _dummyList = [ settings ]; _dummyList[:] = []; del _dummyList 419 pass 420 421 def test_SBML_C_parseL3Formula_collapseminussettings1(self): 422 r = libsbml.parseL3Formula("--4.4") 423 self.assert_( r.getType() == libsbml.AST_MINUS ) 424 self.assert_( r.getNumChildren() == 1 ) 425 c = r.getLeftChild() 426 self.assert_( c.getType() == libsbml.AST_MINUS ) 427 self.assert_( c.getNumChildren() == 1 ) 428 c = c.getLeftChild() 429 self.assert_( c.getType() == libsbml.AST_REAL ) 430 self.assert_( c.getReal() == 4.4 ) 431 self.assert_( c.getNumChildren() == 0 ) 432 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 433 settings = libsbml.getDefaultL3ParserSettings() 434 settings.setParseCollapseMinus(True) 435 self.assert_( settings.getParseCollapseMinus() == True ) 436 r = libsbml.parseL3FormulaWithSettings("--4.4", settings) 437 self.assert_( r.getType() == libsbml.AST_REAL ) 438 self.assert_( r.getReal() == 4.4 ) 439 self.assert_( r.getNumChildren() == 0 ) 440 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 441 settings.setParseCollapseMinus(False) 442 self.assert_( settings.getParseCollapseMinus() == False ) 443 r = libsbml.parseL3FormulaWithSettings("--4.4", settings) 444 self.assert_( r.getType() == libsbml.AST_MINUS ) 445 self.assert_( r.getNumChildren() == 1 ) 446 c = r.getLeftChild() 447 self.assert_( c.getType() == libsbml.AST_MINUS ) 448 self.assert_( c.getNumChildren() == 1 ) 449 c = c.getLeftChild() 450 self.assert_( c.getType() == libsbml.AST_REAL ) 451 self.assert_( c.getReal() == 4.4 ) 452 self.assert_( c.getNumChildren() == 0 ) 453 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 454 _dummyList = [ settings ]; _dummyList[:] = []; del _dummyList 455 pass 456 457 def test_SBML_C_parseL3Formula_collapseminussettings2(self): 458 r = libsbml.parseL3Formula("--x") 459 self.assert_( r.getType() == libsbml.AST_MINUS ) 460 self.assert_( r.getNumChildren() == 1 ) 461 c = r.getLeftChild() 462 self.assert_( c.getType() == libsbml.AST_MINUS ) 463 self.assert_( c.getNumChildren() == 1 ) 464 c = c.getLeftChild() 465 self.assert_( c.getType() == libsbml.AST_NAME ) 466 self.assert_(( "x" == c.getName() )) 467 self.assert_( c.getNumChildren() == 0 ) 468 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 469 settings = libsbml.getDefaultL3ParserSettings() 470 settings.setParseCollapseMinus(True) 471 self.assert_( settings.getParseCollapseMinus() == True ) 472 r = libsbml.parseL3FormulaWithSettings("--x", settings) 473 self.assert_( r.getType() == libsbml.AST_NAME ) 474 self.assert_(( "x" == r.getName() )) 475 self.assert_( r.getNumChildren() == 0 ) 476 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 477 settings.setParseCollapseMinus(False) 478 self.assert_( settings.getParseCollapseMinus() == False ) 479 r = libsbml.parseL3FormulaWithSettings("--x", settings) 480 self.assert_( r.getType() == libsbml.AST_MINUS ) 481 self.assert_( r.getNumChildren() == 1 ) 482 c = r.getLeftChild() 483 self.assert_( c.getType() == libsbml.AST_MINUS ) 484 self.assert_( c.getNumChildren() == 1 ) 485 c = c.getLeftChild() 486 self.assert_( c.getType() == libsbml.AST_NAME ) 487 self.assert_(( "x" == c.getName() )) 488 self.assert_( c.getNumChildren() == 0 ) 489 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 490 _dummyList = [ settings ]; _dummyList[:] = []; del _dummyList 491 pass 492 493 def test_SBML_C_parseL3Formula_collapseminussettings3(self): 494 r = libsbml.parseL3Formula("x---4.4") 495 self.assert_( r.getType() == libsbml.AST_MINUS ) 496 self.assert_( r.getNumChildren() == 2 ) 497 c = r.getLeftChild() 498 self.assert_( c.getType() == libsbml.AST_NAME ) 499 self.assert_(( "x" == c.getName() )) 500 self.assert_( c.getNumChildren() == 0 ) 501 c = r.getRightChild() 502 self.assert_( c.getType() == libsbml.AST_MINUS ) 503 self.assert_( c.getNumChildren() == 1 ) 504 c = c.getLeftChild() 505 self.assert_( c.getType() == libsbml.AST_MINUS ) 506 self.assert_( c.getNumChildren() == 1 ) 507 c = c.getLeftChild() 508 self.assert_( c.getType() == libsbml.AST_REAL ) 509 self.assert_( c.getReal() == 4.4 ) 510 self.assert_( c.getNumChildren() == 0 ) 511 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 512 settings = libsbml.getDefaultL3ParserSettings() 513 settings.setParseCollapseMinus(True) 514 self.assert_( settings.getParseCollapseMinus() == True ) 515 r = libsbml.parseL3FormulaWithSettings("x---4.4", settings) 516 self.assert_( r.getType() == libsbml.AST_MINUS ) 517 self.assert_( r.getNumChildren() == 2 ) 518 c = r.getLeftChild() 519 self.assert_( c.getType() == libsbml.AST_NAME ) 520 self.assert_(( "x" == c.getName() )) 521 self.assert_( c.getNumChildren() == 0 ) 522 c = r.getRightChild() 523 self.assert_( c.getType() == libsbml.AST_REAL ) 524 self.assert_( c.getReal() == 4.4 ) 525 self.assert_( c.getNumChildren() == 0 ) 526 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 527 settings.setParseCollapseMinus(False) 528 self.assert_( settings.getParseCollapseMinus() == False ) 529 r = libsbml.parseL3FormulaWithSettings("x---4.4", settings) 530 self.assert_( r.getType() == libsbml.AST_MINUS ) 531 self.assert_( r.getNumChildren() == 2 ) 532 c = r.getLeftChild() 533 self.assert_( c.getType() == libsbml.AST_NAME ) 534 self.assert_(( "x" == c.getName() )) 535 self.assert_( c.getNumChildren() == 0 ) 536 c = r.getRightChild() 537 self.assert_( c.getType() == libsbml.AST_MINUS ) 538 self.assert_( c.getNumChildren() == 1 ) 539 c = c.getLeftChild() 540 self.assert_( c.getType() == libsbml.AST_MINUS ) 541 self.assert_( c.getNumChildren() == 1 ) 542 c = c.getLeftChild() 543 self.assert_( c.getType() == libsbml.AST_REAL ) 544 self.assert_( c.getReal() == 4.4 ) 545 self.assert_( c.getNumChildren() == 0 ) 546 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 547 _dummyList = [ settings ]; _dummyList[:] = []; del _dummyList 548 pass 549 550 def test_SBML_C_parseL3Formula_collapseminussettings4(self): 551 r = libsbml.parseL3Formula("x---y") 552 self.assert_( r.getType() == libsbml.AST_MINUS ) 553 self.assert_( r.getNumChildren() == 2 ) 554 c = r.getLeftChild() 555 self.assert_( c.getType() == libsbml.AST_NAME ) 556 self.assert_(( "x" == c.getName() )) 557 self.assert_( c.getNumChildren() == 0 ) 558 c = r.getRightChild() 559 self.assert_( c.getType() == libsbml.AST_MINUS ) 560 self.assert_( c.getNumChildren() == 1 ) 561 c = c.getLeftChild() 562 self.assert_( c.getType() == libsbml.AST_MINUS ) 563 self.assert_( c.getNumChildren() == 1 ) 564 c = c.getLeftChild() 565 self.assert_( c.getType() == libsbml.AST_NAME ) 566 self.assert_(( "y" == c.getName() )) 567 self.assert_( c.getNumChildren() == 0 ) 568 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 569 settings = libsbml.getDefaultL3ParserSettings() 570 settings.setParseCollapseMinus(True) 571 self.assert_( settings.getParseCollapseMinus() == True ) 572 r = libsbml.parseL3FormulaWithSettings("x---y", settings) 573 self.assert_( r.getType() == libsbml.AST_MINUS ) 574 self.assert_( r.getNumChildren() == 2 ) 575 c = r.getLeftChild() 576 self.assert_( c.getType() == libsbml.AST_NAME ) 577 self.assert_(( "x" == c.getName() )) 578 self.assert_( c.getNumChildren() == 0 ) 579 c = r.getRightChild() 580 self.assert_( c.getType() == libsbml.AST_NAME ) 581 self.assert_(( "y" == c.getName() )) 582 self.assert_( c.getNumChildren() == 0 ) 583 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 584 settings.setParseCollapseMinus(False) 585 self.assert_( settings.getParseCollapseMinus() == False ) 586 r = libsbml.parseL3FormulaWithSettings("x---y", settings) 587 self.assert_( r.getType() == libsbml.AST_MINUS ) 588 self.assert_( r.getNumChildren() == 2 ) 589 c = r.getLeftChild() 590 self.assert_( c.getType() == libsbml.AST_NAME ) 591 self.assert_(( "x" == c.getName() )) 592 self.assert_( c.getNumChildren() == 0 ) 593 c = r.getRightChild() 594 self.assert_( c.getType() == libsbml.AST_MINUS ) 595 self.assert_( c.getNumChildren() == 1 ) 596 c = c.getLeftChild() 597 self.assert_( c.getType() == libsbml.AST_MINUS ) 598 self.assert_( c.getNumChildren() == 1 ) 599 c = c.getLeftChild() 600 self.assert_( c.getType() == libsbml.AST_NAME ) 601 self.assert_(( "y" == c.getName() )) 602 self.assert_( c.getNumChildren() == 0 ) 603 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 604 _dummyList = [ settings ]; _dummyList[:] = []; del _dummyList 605 pass 606 607 def test_SBML_C_parseL3Formula_collapseminussettings5(self): 608 settings = libsbml.getDefaultL3ParserSettings() 609 settings.setParseCollapseMinus(True) 610 self.assert_( settings.getParseCollapseMinus() == True ) 611 r = libsbml.parseL3FormulaWithSettings("---4", settings) 612 self.assert_( r.getType() == libsbml.AST_INTEGER ) 613 self.assert_( r.getInteger() == -4 ) 614 self.assert_( r.getNumChildren() == 0 ) 615 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 616 r = libsbml.parseL3FormulaWithSettings("---(3/8)", settings) 617 self.assert_( r.getType() == libsbml.AST_RATIONAL ) 618 self.assert_( r.getNumerator() == -3 ) 619 self.assert_( r.getDenominator() == 8 ) 620 self.assert_( r.getNumChildren() == 0 ) 621 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 622 r = libsbml.parseL3FormulaWithSettings("---(-3/8)", settings) 623 self.assert_( r.getType() == libsbml.AST_RATIONAL ) 624 self.assert_( r.getNumerator() == 3 ) 625 self.assert_( r.getDenominator() == 8 ) 626 self.assert_( r.getNumChildren() == 0 ) 627 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 628 r = libsbml.parseL3FormulaWithSettings("---4.4", settings) 629 self.assert_( r.getType() == libsbml.AST_REAL ) 630 self.assert_( r.getReal() == -4.4 ) 631 self.assert_( r.getNumChildren() == 0 ) 632 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 633 r = libsbml.parseL3FormulaWithSettings("---4e-3", settings) 634 self.assert_( r.getType() == libsbml.AST_REAL_E ) 635 self.assert_( r.getMantissa() == -4 ) 636 self.assert_( r.getExponent() == -3 ) 637 self.assert_( r.getNumChildren() == 0 ) 638 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 639 r = libsbml.parseL3FormulaWithSettings("---.4", settings) 640 self.assert_( r.getType() == libsbml.AST_REAL ) 641 self.assert_( r.getReal() == -.4 ) 642 self.assert_( r.getNumChildren() == 0 ) 643 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 644 _dummyList = [ settings ]; _dummyList[:] = []; del _dummyList 645 pass 646 647 def test_SBML_C_parseL3Formula_constants1(self): 648 r = libsbml.parseL3Formula("true") 649 self.assert_( r.getType() == libsbml.AST_CONSTANT_TRUE ) 650 self.assert_( r.getNumChildren() == 0 ) 651 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 652 pass 653 654 def test_SBML_C_parseL3Formula_constants10(self): 655 r = libsbml.parseL3Formula("notanumber") 656 self.assert_( r.getType() == libsbml.AST_REAL ) 657 self.assert_( isnan(r.getReal()) == 1 ) 658 self.assert_( r.getNumChildren() == 0 ) 659 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 660 pass 661 662 def test_SBML_C_parseL3Formula_constants11(self): 663 r = libsbml.parseL3Formula("nan") 664 self.assert_( r.getType() == libsbml.AST_REAL ) 665 self.assert_( isnan(r.getReal()) == 1 ) 666 self.assert_( r.getNumChildren() == 0 ) 667 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 668 pass 669 670 def test_SBML_C_parseL3Formula_constants12(self): 671 r = libsbml.parseL3Formula("NaN") 672 self.assert_( r.getType() == libsbml.AST_REAL ) 673 self.assert_( isnan(r.getReal()) == 1 ) 674 self.assert_( r.getNumChildren() == 0 ) 675 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 676 pass 677 678 def test_SBML_C_parseL3Formula_constants2(self): 679 r = libsbml.parseL3Formula("false") 680 self.assert_( r.getType() == libsbml.AST_CONSTANT_FALSE ) 681 self.assert_( r.getNumChildren() == 0 ) 682 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 683 pass 684 685 def test_SBML_C_parseL3Formula_constants3(self): 686 r = libsbml.parseL3Formula("pi") 687 self.assert_( r.getType() == libsbml.AST_CONSTANT_PI ) 688 self.assert_( r.getNumChildren() == 0 ) 689 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 690 pass 691 692 def test_SBML_C_parseL3Formula_constants4(self): 693 r = libsbml.parseL3Formula("exponentiale") 694 self.assert_( r.getType() == libsbml.AST_CONSTANT_E ) 695 self.assert_( r.getNumChildren() == 0 ) 696 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 697 pass 698 699 def test_SBML_C_parseL3Formula_constants5(self): 700 r = libsbml.parseL3Formula("avogadro") 701 self.assert_( r.getType() == libsbml.AST_NAME_AVOGADRO ) 702 self.assert_( r.getNumChildren() == 0 ) 703 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 704 pass 705 706 def test_SBML_C_parseL3Formula_constants6(self): 707 r = libsbml.parseL3Formula("time") 708 self.assert_( r.getType() == libsbml.AST_NAME_TIME ) 709 self.assert_( r.getNumChildren() == 0 ) 710 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 711 pass 712 713 def test_SBML_C_parseL3Formula_constants7(self): 714 r = libsbml.parseL3Formula("inf") 715 self.assert_( r.getType() == libsbml.AST_REAL ) 716 self.assert_( util_isInf(r.getReal()) == True ) 717 self.assert_( r.getNumChildren() == 0 ) 718 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 719 pass 720 721 def test_SBML_C_parseL3Formula_constants8(self): 722 r = libsbml.parseL3Formula("infinity") 723 self.assert_( r.getType() == libsbml.AST_REAL ) 724 self.assert_( util_isInf(r.getReal()) == True ) 725 self.assert_( r.getNumChildren() == 0 ) 726 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 727 pass 728 729 def test_SBML_C_parseL3Formula_constants9(self): 730 r = libsbml.parseL3Formula("INF") 731 self.assert_( r.getType() == libsbml.AST_REAL ) 732 self.assert_( util_isInf(r.getReal()) == True ) 733 self.assert_( r.getNumChildren() == 0 ) 734 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 735 pass 736 737 def test_SBML_C_parseL3Formula_e1(self): 738 r = libsbml.parseL3Formula("2.001e+5") 739 self.assert_( r.getType() == libsbml.AST_REAL_E ) 740 self.assert_( r.getMantissa() == 2.001 ) 741 self.assert_( r.getExponent() == 5 ) 742 self.assert_( r.getNumChildren() == 0 ) 743 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 744 pass 745 746 def test_SBML_C_parseL3Formula_e2(self): 747 r = libsbml.parseL3Formula(".001e+5") 748 self.assert_( r.getType() == libsbml.AST_REAL_E ) 749 self.assert_( r.getMantissa() == .001 ) 750 self.assert_( r.getExponent() == 5 ) 751 self.assert_( r.getNumChildren() == 0 ) 752 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 753 pass 754 755 def test_SBML_C_parseL3Formula_e3(self): 756 r = libsbml.parseL3Formula(".001e-5") 757 self.assert_( r.getType() == libsbml.AST_REAL_E ) 758 self.assert_( r.getMantissa() == .001 ) 759 self.assert_( r.getExponent() == -5 ) 760 self.assert_( r.getNumChildren() == 0 ) 761 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 762 pass 763 764 def test_SBML_C_parseL3Formula_e4(self): 765 r = libsbml.parseL3Formula("2.e-005") 766 self.assert_( r.getType() == libsbml.AST_REAL_E ) 767 self.assert_( r.getMantissa() == 2 ) 768 self.assert_( r.getExponent() == -5 ) 769 self.assert_( r.getNumChildren() == 0 ) 770 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 771 pass 772 773 def test_SBML_C_parseL3Formula_e5(self): 774 r = libsbml.parseL3Formula(".e+5") 775 self.assert_( r == None ) 776 self.assert_(( "Error when parsing input '.e+5' at position 1: syntax error, unexpected $undefined" == libsbml.getLastParseL3Error() )) 777 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 778 pass 779 780 def test_SBML_C_parseL3Formula_logic1(self): 781 r = libsbml.parseL3Formula("1 && 2 == 3") 782 self.assert_( r.getType() == libsbml.AST_LOGICAL_AND ) 783 self.assert_(( "and" == r.getName() )) 784 self.assert_( r.getNumChildren() == 2 ) 785 c = r.getLeftChild() 786 self.assert_( c.getType() == libsbml.AST_INTEGER ) 787 self.assert_( c.getInteger() == 1 ) 788 self.assert_( c.getNumChildren() == 0 ) 789 c = r.getRightChild() 790 self.assert_( c.getType() == libsbml.AST_RELATIONAL_EQ ) 791 self.assert_(( "eq" == c.getName() )) 792 self.assert_( c.getNumChildren() == 2 ) 793 c = c.getLeftChild() 794 self.assert_( c.getType() == libsbml.AST_INTEGER ) 795 self.assert_( c.getInteger() == 2 ) 796 self.assert_( c.getNumChildren() == 0 ) 797 c = r.getRightChild().getRightChild() 798 self.assert_( c.getType() == libsbml.AST_INTEGER ) 799 self.assert_( c.getInteger() == 3 ) 800 self.assert_( c.getNumChildren() == 0 ) 801 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 802 pass 803 804 def test_SBML_C_parseL3Formula_logic2(self): 805 r = libsbml.parseL3Formula("(1 && 2) == 3") 806 self.assert_( r.getType() == libsbml.AST_RELATIONAL_EQ ) 807 self.assert_(( "eq" == r.getName() )) 808 self.assert_( r.getNumChildren() == 2 ) 809 c = r.getLeftChild() 810 self.assert_( c.getType() == libsbml.AST_LOGICAL_AND ) 811 self.assert_(( "and" == c.getName() )) 812 self.assert_( c.getNumChildren() == 2 ) 813 c = r.getRightChild() 814 self.assert_( c.getType() == libsbml.AST_INTEGER ) 815 self.assert_( c.getInteger() == 3 ) 816 self.assert_( c.getNumChildren() == 0 ) 817 c = r.getLeftChild().getLeftChild() 818 self.assert_( c.getType() == libsbml.AST_INTEGER ) 819 self.assert_( c.getInteger() == 1 ) 820 self.assert_( c.getNumChildren() == 0 ) 821 c = r.getLeftChild().getRightChild() 822 self.assert_( c.getType() == libsbml.AST_INTEGER ) 823 self.assert_( c.getInteger() == 2 ) 824 self.assert_( c.getNumChildren() == 0 ) 825 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 826 pass 827 828 def test_SBML_C_parseL3Formula_modelPresent1(self): 829 model = libsbml.Model(3,1) 830 p = model.createParameter() 831 p.setId( "infinity") 832 r = libsbml.parseL3FormulaWithModel("infinity", model) 833 self.assert_( r.getType() == libsbml.AST_NAME ) 834 self.assert_(( "infinity" == r.getName() )) 835 self.assert_( r.getNumChildren() == 0 ) 836 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 837 pass 838 839 def test_SBML_C_parseL3Formula_modelPresent2(self): 840 model = libsbml.Model(3,1) 841 p = model.createSpecies() 842 p.setId( "true") 843 r = libsbml.parseL3FormulaWithModel("true", model) 844 self.assert_( r.getType() == libsbml.AST_NAME ) 845 self.assert_(( "true" == r.getName() )) 846 self.assert_( r.getNumChildren() == 0 ) 847 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 848 pass 849 850 def test_SBML_C_parseL3Formula_modelPresent3(self): 851 model = libsbml.Model(3,1) 852 p = model.createCompartment() 853 p.setId( "NaN") 854 r = libsbml.parseL3FormulaWithModel("NaN", model) 855 self.assert_( r.getType() == libsbml.AST_NAME ) 856 self.assert_(( "NaN" == r.getName() )) 857 self.assert_( r.getNumChildren() == 0 ) 858 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 859 pass 860 861 def test_SBML_C_parseL3Formula_modelPresent4(self): 862 model = libsbml.Model(3,1) 863 p = model.createReaction() 864 p.setId( "pi") 865 r = libsbml.parseL3FormulaWithModel("pi", model) 866 self.assert_( r.getType() == libsbml.AST_NAME ) 867 self.assert_(( "pi" == r.getName() )) 868 self.assert_( r.getNumChildren() == 0 ) 869 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 870 pass 871 872 def test_SBML_C_parseL3Formula_modelPresent5(self): 873 model = libsbml.Model(3,1) 874 p = model.createReaction() 875 sr = p.createProduct() 876 sr.setId( "avogadro") 877 r = libsbml.parseL3FormulaWithModel("avogadro", model) 878 self.assert_( r.getType() == libsbml.AST_NAME ) 879 self.assert_(( "avogadro" == r.getName() )) 880 self.assert_( r.getNumChildren() == 0 ) 881 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 882 pass 883 884 def test_SBML_C_parseL3Formula_modelPresent6(self): 885 model = libsbml.Model(3,1) 886 p = model.createReaction() 887 sr = p.createProduct() 888 sr.setId( "AVOGADRO") 889 r = libsbml.parseL3FormulaWithModel("avogadro", model) 890 self.assert_( r.getType() == libsbml.AST_NAME_AVOGADRO ) 891 self.assert_(( "avogadro" == r.getName() )) 892 self.assert_( r.getNumChildren() == 0 ) 893 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 894 pass 895 896 def test_SBML_C_parseL3Formula_modelPresent7(self): 897 model = libsbml.Model(3,1) 898 p = model.createFunctionDefinition() 899 p.setId( "sin") 900 r = libsbml.parseL3FormulaWithModel("sin(x, y)", model) 901 self.assert_( r.getType() == libsbml.AST_FUNCTION ) 902 self.assert_(( "sin" == r.getName() )) 903 self.assert_( r.getNumChildren() == 2 ) 904 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 905 pass 906 907 def test_SBML_C_parseL3Formula_modulo(self): 908 r = libsbml.parseL3Formula("x % y") 909 self.assert_(( "piecewise(x - y * ceil(x / y), xor(lt(x, 0), lt(y, 0)), x - y * floor(x / y))" == libsbml.formulaToString(r) )) 910 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 911 pass 912 913 def test_SBML_C_parseL3Formula_negInf(self): 914 r = libsbml.parseL3Formula("-inf") 915 self.assert_( r.getType() == libsbml.AST_MINUS ) 916 self.assert_( r.getCharacter() == '-' ) 917 self.assert_( r.getNumChildren() == 1 ) 918 c = r.getLeftChild() 919 self.assert_( c.getType() == libsbml.AST_REAL ) 920 self.assert_( util_isInf(c.getReal()) == True ) 921 self.assert_( c.getNumChildren() == 0 ) 922 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 923 pass 924 925 def test_SBML_C_parseL3Formula_negZero(self): 926 r = libsbml.parseL3Formula("-0.0") 927 self.assert_( r.getType() == libsbml.AST_MINUS ) 928 self.assert_( r.getCharacter() == '-' ) 929 self.assert_( r.getNumChildren() == 1 ) 930 c = r.getLeftChild() 931 self.assert_( c.getType() == libsbml.AST_REAL ) 932 self.assert_( c.getReal() == 0 ) 933 self.assert_( c.getNumChildren() == 0 ) 934 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 935 pass 936 937 def test_SBML_C_parseL3Formula_oddMathML1(self): 938 r = libsbml.parseL3Formula("sqrt(3)") 939 self.assert_( r.getType() == libsbml.AST_FUNCTION_ROOT ) 940 self.assert_( r.getNumChildren() == 2 ) 941 c = r.getLeftChild() 942 self.assert_( c.getType() == libsbml.AST_INTEGER ) 943 self.assert_( c.getInteger() == 2 ) 944 self.assert_( c.getNumChildren() == 0 ) 945 c = r.getRightChild() 946 self.assert_( c.getType() == libsbml.AST_INTEGER ) 947 self.assert_( c.getInteger() == 3 ) 948 self.assert_( c.getNumChildren() == 0 ) 949 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 950 pass 951 952 def test_SBML_C_parseL3Formula_oddMathML2(self): 953 r = libsbml.parseL3Formula("sqr(3)") 954 self.assert_( r.getType() == libsbml.AST_FUNCTION_POWER ) 955 self.assert_( r.getNumChildren() == 2 ) 956 c = r.getLeftChild() 957 self.assert_( c.getType() == libsbml.AST_INTEGER ) 958 self.assert_( c.getInteger() == 3 ) 959 self.assert_( c.getNumChildren() == 0 ) 960 c = r.getRightChild() 961 self.assert_( c.getType() == libsbml.AST_INTEGER ) 962 self.assert_( c.getInteger() == 2 ) 963 self.assert_( c.getNumChildren() == 0 ) 964 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 965 pass 966 967 def test_SBML_C_parseL3Formula_oddMathML3(self): 968 r = libsbml.parseL3Formula("log10(3)") 969 self.assert_( r.getType() == libsbml.AST_FUNCTION_LOG ) 970 self.assert_( r.getNumChildren() == 2 ) 971 c = r.getLeftChild() 972 self.assert_( c.getType() == libsbml.AST_INTEGER ) 973 self.assert_( c.getInteger() == 10 ) 974 self.assert_( c.getNumChildren() == 0 ) 975 c = r.getRightChild() 976 self.assert_( c.getType() == libsbml.AST_INTEGER ) 977 self.assert_( c.getInteger() == 3 ) 978 self.assert_( c.getNumChildren() == 0 ) 979 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 980 pass 981 982 def test_SBML_C_parseL3Formula_oddMathML4(self): 983 r = libsbml.parseL3Formula("log(4.4, 3)") 984 self.assert_( r.getType() == libsbml.AST_FUNCTION_LOG ) 985 self.assert_( r.getNumChildren() == 2 ) 986 c = r.getLeftChild() 987 self.assert_( c.getType() == libsbml.AST_REAL ) 988 self.assert_( c.getReal() == 4.4 ) 989 self.assert_( c.getNumChildren() == 0 ) 990 c = r.getRightChild() 991 self.assert_( c.getType() == libsbml.AST_INTEGER ) 992 self.assert_( c.getInteger() == 3 ) 993 self.assert_( c.getNumChildren() == 0 ) 994 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 995 pass 996 997 def test_SBML_C_parseL3Formula_oddMathML5(self): 998 r = libsbml.parseL3Formula("root(1.1, 3)") 999 self.assert_( r.getType() == libsbml.AST_FUNCTION_ROOT ) 1000 self.assert_( r.getNumChildren() == 2 ) 1001 c = r.getLeftChild() 1002 self.assert_( c.getType() == libsbml.AST_REAL ) 1003 self.assert_( c.getReal() == 1.1 ) 1004 self.assert_( c.getNumChildren() == 0 ) 1005 c = r.getRightChild() 1006 self.assert_( c.getType() == libsbml.AST_INTEGER ) 1007 self.assert_( c.getInteger() == 3 ) 1008 self.assert_( c.getNumChildren() == 0 ) 1009 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 1010 pass 1011 1012 def test_SBML_C_parseL3Formula_parselogsettings(self): 1013 r = libsbml.parseL3Formula("log(4.4)") 1014 self.assert_( r.getType() == libsbml.AST_FUNCTION_LOG ) 1015 self.assert_( r.getNumChildren() == 2 ) 1016 c = r.getLeftChild() 1017 self.assert_( c.getType() == libsbml.AST_INTEGER ) 1018 self.assert_( c.getInteger() == 10 ) 1019 self.assert_( c.getNumChildren() == 0 ) 1020 c = r.getRightChild() 1021 self.assert_( c.getType() == libsbml.AST_REAL ) 1022 self.assert_( c.getReal() == 4.4 ) 1023 self.assert_( c.getNumChildren() == 0 ) 1024 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 1025 settings = libsbml.L3ParserSettings() 1026 settings.setParseLog(libsbml.L3P_PARSE_LOG_AS_LN) 1027 self.assert_( settings.getParseLog() == libsbml.L3P_PARSE_LOG_AS_LN ) 1028 r = libsbml.parseL3FormulaWithSettings("log(4.4)", settings) 1029 self.assert_( r.getType() == libsbml.AST_FUNCTION_LN ) 1030 self.assert_( r.getNumChildren() == 1 ) 1031 c = r.getLeftChild() 1032 self.assert_( c.getType() == libsbml.AST_REAL ) 1033 self.assert_( c.getReal() == 4.4 ) 1034 self.assert_( c.getNumChildren() == 0 ) 1035 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 1036 settings.setParseLog(libsbml.L3P_PARSE_LOG_AS_LOG10) 1037 self.assert_( settings.getParseLog() == libsbml.L3P_PARSE_LOG_AS_LOG10 ) 1038 r = libsbml.parseL3FormulaWithSettings("log(4.4)", settings) 1039 self.assert_( r.getType() == libsbml.AST_FUNCTION_LOG ) 1040 self.assert_( r.getNumChildren() == 2 ) 1041 c = r.getLeftChild() 1042 self.assert_( c.getType() == libsbml.AST_INTEGER ) 1043 self.assert_( c.getInteger() == 10 ) 1044 self.assert_( c.getNumChildren() == 0 ) 1045 c = r.getRightChild() 1046 self.assert_( c.getType() == libsbml.AST_REAL ) 1047 self.assert_( c.getReal() == 4.4 ) 1048 self.assert_( c.getNumChildren() == 0 ) 1049 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 1050 settings.setParseLog(libsbml.L3P_PARSE_LOG_AS_ERROR) 1051 self.assert_( settings.getParseLog() == libsbml.L3P_PARSE_LOG_AS_ERROR ) 1052 r = libsbml.parseL3FormulaWithSettings("log(4.4)", settings) 1053 self.assert_( r == None ) 1054 self.assert_(( "Error when parsing input 'log(4.4)' at position 8: Writing a function as 'log(x)' was legal in the L1 parser, but translated as the natural log, not the base-10 log. This construct is disallowed entirely as being ambiguous, and you are encouraged instead to use 'ln(x)', 'log10(x)', or 'log(base, x)'." == libsbml.getLastParseL3Error() )) 1055 _dummyList = [ settings ]; _dummyList[:] = []; del _dummyList 1056 pass 1057 1058 def test_SBML_C_parseL3Formula_precedence(self): 1059 root = libsbml.parseL3Formula("a && b == !(c - d * e^-f) ") 1060 self.assert_( root.getType() == libsbml.AST_LOGICAL_AND ) 1061 self.assert_(( "and" == root.getName() )) 1062 self.assert_( root.getNumChildren() == 2 ) 1063 left = root.getLeftChild() 1064 self.assert_( left.getType() == libsbml.AST_NAME ) 1065 self.assert_(( "a" == left.getName() )) 1066 self.assert_( left.getNumChildren() == 0 ) 1067 right = root.getRightChild() 1068 self.assert_( right.getType() == libsbml.AST_RELATIONAL_EQ ) 1069 self.assert_(( "eq" == right.getName() )) 1070 self.assert_( right.getNumChildren() == 2 ) 1071 left = right.getLeftChild() 1072 self.assert_( left.getType() == libsbml.AST_NAME ) 1073 self.assert_(( "b" == left.getName() )) 1074 self.assert_( left.getNumChildren() == 0 ) 1075 right = right.getRightChild() 1076 self.assert_( right.getType() == libsbml.AST_LOGICAL_NOT ) 1077 self.assert_(( "not" == right.getName() )) 1078 self.assert_( right.getNumChildren() == 1 ) 1079 right = right.getLeftChild() 1080 self.assert_( right.getType() == libsbml.AST_MINUS ) 1081 self.assert_( right.getCharacter() == '-' ) 1082 self.assert_( right.getNumChildren() == 2 ) 1083 left = right.getLeftChild() 1084 self.assert_( left.getType() == libsbml.AST_NAME ) 1085 self.assert_(( "c" == left.getName() )) 1086 self.assert_( left.getNumChildren() == 0 ) 1087 right = right.getRightChild() 1088 self.assert_( right.getType() == libsbml.AST_TIMES ) 1089 self.assert_( right.getCharacter() == '*' ) 1090 self.assert_( right.getNumChildren() == 2 ) 1091 left = right.getLeftChild() 1092 self.assert_( left.getType() == libsbml.AST_NAME ) 1093 self.assert_(( "d" == left.getName() )) 1094 self.assert_( left.getNumChildren() == 0 ) 1095 right = right.getRightChild() 1096 self.assert_( right.getType() == libsbml.AST_POWER ) 1097 self.assert_( right.getCharacter() == '^' ) 1098 self.assert_( right.getNumChildren() == 2 ) 1099 left = right.getLeftChild() 1100 self.assert_( left.getType() == libsbml.AST_NAME ) 1101 self.assert_(( "e" == left.getName() )) 1102 self.assert_( left.getNumChildren() == 0 ) 1103 right = right.getRightChild() 1104 self.assert_( right.getType() == libsbml.AST_MINUS ) 1105 self.assert_( right.getCharacter() == '-' ) 1106 self.assert_( right.getNumChildren() == 1 ) 1107 left = right.getLeftChild() 1108 self.assert_( left.getType() == libsbml.AST_NAME ) 1109 self.assert_(( "f" == left.getName() )) 1110 self.assert_( left.getNumChildren() == 0 ) 1111 _dummyList = [ root ]; _dummyList[:] = []; del _dummyList 1112 pass 1113 1114 def test_SBML_C_parseL3Formula_rational1(self): 1115 r = libsbml.parseL3Formula("(3/4)") 1116 self.assert_( r.getType() == libsbml.AST_RATIONAL ) 1117 self.assert_( r.getNumerator() == 3 ) 1118 self.assert_( r.getDenominator() == 4 ) 1119 self.assert_( r.getNumChildren() == 0 ) 1120 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 1121 pass 1122 1123 def test_SBML_C_parseL3Formula_rational2(self): 1124 r = libsbml.parseL3Formula("(3/4) mL") 1125 self.assert_( r.getType() == libsbml.AST_RATIONAL ) 1126 self.assert_( r.getNumerator() == 3 ) 1127 self.assert_( r.getDenominator() == 4 ) 1128 self.assert_(( "mL" == r.getUnits() )) 1129 self.assert_( r.getNumChildren() == 0 ) 1130 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 1131 pass 1132 1133 def test_SBML_C_parseL3Formula_rational3(self): 1134 r = libsbml.parseL3Formula("3/4") 1135 self.assert_( r.getType() == libsbml.AST_DIVIDE ) 1136 self.assert_( r.getCharacter() == '/' ) 1137 self.assert_( r.getNumChildren() == 2 ) 1138 c = r.getLeftChild() 1139 self.assert_( c.getType() == libsbml.AST_INTEGER ) 1140 self.assert_( c.getInteger() == 3 ) 1141 self.assert_( c.getNumChildren() == 0 ) 1142 c = r.getRightChild() 1143 self.assert_( c.getType() == libsbml.AST_INTEGER ) 1144 self.assert_( c.getInteger() == 4 ) 1145 self.assert_( c.getNumChildren() == 0 ) 1146 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 1147 pass 1148 1149 def test_SBML_C_parseL3Formula_rational4(self): 1150 r = libsbml.parseL3Formula("(3/x)") 1151 self.assert_( r.getType() == libsbml.AST_DIVIDE ) 1152 self.assert_( r.getCharacter() == '/' ) 1153 self.assert_( r.getNumChildren() == 2 ) 1154 c = r.getLeftChild() 1155 self.assert_( c.getType() == libsbml.AST_INTEGER ) 1156 self.assert_( c.getInteger() == 3 ) 1157 self.assert_( c.getNumChildren() == 0 ) 1158 c = r.getRightChild() 1159 self.assert_( c.getType() == libsbml.AST_NAME ) 1160 self.assert_(( "x" == c.getName() )) 1161 self.assert_( c.getNumChildren() == 0 ) 1162 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 1163 pass 1164 1165 def test_SBML_C_parseL3Formula_rational5(self): 1166 r = libsbml.parseL3Formula("(3/4.4)") 1167 self.assert_( r.getType() == libsbml.AST_DIVIDE ) 1168 self.assert_( r.getCharacter() == '/' ) 1169 self.assert_( r.getNumChildren() == 2 ) 1170 c = r.getLeftChild() 1171 self.assert_( c.getType() == libsbml.AST_INTEGER ) 1172 self.assert_( c.getInteger() == 3 ) 1173 self.assert_( c.getNumChildren() == 0 ) 1174 c = r.getRightChild() 1175 self.assert_( c.getType() == libsbml.AST_REAL ) 1176 self.assert_( c.getReal() == 4.4 ) 1177 self.assert_( c.getNumChildren() == 0 ) 1178 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 1179 pass 1180 1181 def test_SBML_C_parseL3Formula_rational6(self): 1182 r = libsbml.parseL3Formula("3/4 ml") 1183 self.assert_( r.getType() == libsbml.AST_DIVIDE ) 1184 self.assert_( r.getCharacter() == '/' ) 1185 self.assert_( r.getNumChildren() == 2 ) 1186 c = r.getLeftChild() 1187 self.assert_( c.getType() == libsbml.AST_INTEGER ) 1188 self.assert_( c.getInteger() == 3 ) 1189 self.assert_( c.getNumChildren() == 0 ) 1190 c = r.getRightChild() 1191 self.assert_( c.getType() == libsbml.AST_INTEGER ) 1192 self.assert_( c.getInteger() == 4 ) 1193 self.assert_(( "ml" == c.getUnits() )) 1194 self.assert_( c.getNumChildren() == 0 ) 1195 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 1196 pass 1197 1198 def test_SBML_C_parseL3Formula_rational7(self): 1199 r = libsbml.parseL3Formula("(3/4.4) ml") 1200 self.assert_( r == None ) 1201 self.assert_(( "Error when parsing input '(3/4.4) ml' at position 10: syntax error, unexpected element name" == libsbml.getLastParseL3Error() )) 1202 pass 1203 1204 def test_SBML_C_parseL3Formula_targetl2settings(self): 1205 r = libsbml.parseL3Formula("4 mL") 1206 self.assert_( r.getType() == libsbml.AST_INTEGER ) 1207 self.assert_( r.getInteger() == 4 ) 1208 self.assert_(( "mL" == r.getUnits() )) 1209 self.assert_( r.getNumChildren() == 0 ) 1210 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 1211 r = libsbml.parseL3Formula("avogadro") 1212 self.assert_( r.getType() == libsbml.AST_NAME_AVOGADRO ) 1213 self.assert_( r.getNumChildren() == 0 ) 1214 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 1215 settings = libsbml.getDefaultL3ParserSettings() 1216 settings.setParseUnits(False) 1217 settings.setParseAvogadroCsymbol(False) 1218 self.assert_( settings.getParseUnits() == False ) 1219 self.assert_( settings.getParseAvogadroCsymbol() == False ) 1220 r = libsbml.parseL3FormulaWithSettings("4 mL", settings) 1221 self.assert_( r == None ) 1222 self.assert_(( "Error when parsing input '4 mL' at position 4: The ability to associate units with numbers has been disabled." == libsbml.getLastParseL3Error() )) 1223 r = libsbml.parseL3FormulaWithSettings("avogadro", settings) 1224 self.assert_( r.getType() == libsbml.AST_NAME ) 1225 self.assert_(( "avogadro" == r.getName() )) 1226 self.assert_( r.getNumChildren() == 0 ) 1227 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 1228 settings.setParseUnits(True) 1229 settings.setParseAvogadroCsymbol(True) 1230 self.assert_( settings.getParseUnits() == True ) 1231 self.assert_( settings.getParseAvogadroCsymbol() == True ) 1232 r = libsbml.parseL3FormulaWithSettings("4 mL", settings) 1233 self.assert_( r.getType() == libsbml.AST_INTEGER ) 1234 self.assert_( r.getInteger() == 4 ) 1235 self.assert_(( "mL" == r.getUnits() )) 1236 self.assert_( r.getNumChildren() == 0 ) 1237 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 1238 r = libsbml.parseL3FormulaWithSettings("avogadro", settings) 1239 self.assert_( r.getType() == libsbml.AST_NAME_AVOGADRO ) 1240 self.assert_( r.getNumChildren() == 0 ) 1241 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 1242 _dummyList = [ settings ]; _dummyList[:] = []; del _dummyList 1243 pass 1244 1245 def test_SBML_C_parseL3Formula_unitssettings(self): 1246 r = libsbml.parseL3Formula("4 mL") 1247 self.assert_( r.getType() == libsbml.AST_INTEGER ) 1248 self.assert_( r.getInteger() == 4 ) 1249 self.assert_(( "mL" == r.getUnits() )) 1250 self.assert_( r.getNumChildren() == 0 ) 1251 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 1252 settings = libsbml.getDefaultL3ParserSettings() 1253 settings.setParseUnits(False) 1254 self.assert_( settings.getParseUnits() == False ) 1255 r = libsbml.parseL3FormulaWithSettings("4 mL", settings) 1256 self.assert_( r == None ) 1257 self.assert_(( "Error when parsing input '4 mL' at position 4: The ability to associate units with numbers has been disabled." == libsbml.getLastParseL3Error() )) 1258 settings.setParseUnits(True) 1259 self.assert_( settings.getParseUnits() == True ) 1260 r = libsbml.parseL3FormulaWithSettings("4 mL", settings) 1261 self.assert_( r.getType() == libsbml.AST_INTEGER ) 1262 self.assert_( r.getInteger() == 4 ) 1263 self.assert_(( "mL" == r.getUnits() )) 1264 self.assert_( r.getNumChildren() == 0 ) 1265 _dummyList = [ r ]; _dummyList[:] = []; del _dummyList 1266 _dummyList = [ settings ]; _dummyList[:] = []; del _dummyList 1267 pass 1268 1269def suite(): 1270 suite = unittest.TestSuite() 1271 suite.addTest(unittest.makeSuite(TestL3FormulaParserC)) 1272 1273 return suite 1274 1275if __name__ == "__main__": 1276 if unittest.TextTestRunner(verbosity=1).run(suite()).wasSuccessful() : 1277 sys.exit(0) 1278 else: 1279 sys.exit(1) 1280