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