1# @file TestASTNode.rb 2# @brief ASTNode 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/math/test/TestASTNode.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 TestASTNode < Test::Unit::TestCase 35 36 @@DBL_EPSILON = 2.2204460492503131e-16 37 def test_ASTNode_addChild1 38 node = LibSBML::ASTNode.new() 39 c1 = LibSBML::ASTNode.new() 40 c2 = LibSBML::ASTNode.new() 41 c1_1 = LibSBML::ASTNode.new() 42 i = 0 43 node.setType(LibSBML::AST_LOGICAL_AND) 44 c1.setName( "a") 45 c2.setName( "b") 46 node.addChild(c1) 47 node.addChild(c2) 48 assert( node.getNumChildren() == 2 ) 49 assert (( "and(a, b)" == LibSBML::formulaToString(node) )) 50 c1_1.setName( "d") 51 i = node.addChild(c1_1) 52 assert( i == LibSBML::LIBSBML_OPERATION_SUCCESS ) 53 assert( node.getNumChildren() == 3 ) 54 assert (( "and(a, b, d)" == LibSBML::formulaToString(node) )) 55 assert (( "a" == node.getChild(0).getName() )) 56 assert (( "b" == node.getChild(1).getName() )) 57 assert (( "d" == node.getChild(2).getName() )) 58 node = nil 59 end 60 61 def test_ASTNode_addSemanticsAnnotation 62 ann = LibSBML::XMLNode.new() 63 node = LibSBML::ASTNode.new() 64 i = 0 65 i = node.addSemanticsAnnotation(ann) 66 assert( i == LibSBML::LIBSBML_OPERATION_SUCCESS ) 67 assert( node.getNumSemanticsAnnotations() == 1 ) 68 i = node.addSemanticsAnnotation(nil) 69 assert( i == LibSBML::LIBSBML_OPERATION_FAILED ) 70 assert( node.getNumSemanticsAnnotations() == 1 ) 71 node = nil 72 end 73 74 def test_ASTNode_avogadro 75 n = LibSBML::ASTNode.new() 76 n.setType(LibSBML::AST_NAME_AVOGADRO) 77 n.setName( "NA") 78 assert (( "NA" == n.getName() )) 79 val = n.getReal() 80 assert( val == 6.02214179e23 ) 81 assert( true == n.isConstant() ) 82 n = nil 83 end 84 85 def test_ASTNode_avogadro_bug 86 n = LibSBML::ASTNode.new() 87 n.setName( "NA") 88 n.setType(LibSBML::AST_NAME_AVOGADRO) 89 assert (( "NA" == n.getName() )) 90 val = n.getReal() 91 assert( val == 6.02214179e23 ) 92 assert( true == n.isConstant() ) 93 n = nil 94 end 95 96 def test_ASTNode_canonicalizeConstants 97 n = LibSBML::ASTNode.new() 98 n.setName( "ExponentialE") 99 assert_equal true, n.isName() 100 n.canonicalize() 101 assert( n.getType() == LibSBML::AST_CONSTANT_E ) 102 n.setType(LibSBML::AST_NAME) 103 n.setName( "False") 104 assert_equal true, n.isName() 105 n.canonicalize() 106 assert( n.getType() == LibSBML::AST_CONSTANT_FALSE ) 107 n.setType(LibSBML::AST_NAME) 108 n.setName( "Pi") 109 assert_equal true, n.isName() 110 n.canonicalize() 111 assert( n.getType() == LibSBML::AST_CONSTANT_PI ) 112 n.setType(LibSBML::AST_NAME) 113 n.setName( "True") 114 assert_equal true, n.isName() 115 n.canonicalize() 116 assert( n.getType() == LibSBML::AST_CONSTANT_TRUE ) 117 n.setType(LibSBML::AST_NAME) 118 n.setName( "Foo") 119 assert_equal true, n.isName() 120 n.canonicalize() 121 assert_equal true, n.isName() 122 n = nil 123 end 124 125 def test_ASTNode_canonicalizeFunctions 126 n = LibSBML::ASTNode.new(LibSBML::AST_FUNCTION) 127 n.setName( "abs") 128 assert( n.getType() == LibSBML::AST_FUNCTION ) 129 n.canonicalize() 130 assert( n.getType() == LibSBML::AST_FUNCTION_ABS ) 131 n.setType(LibSBML::AST_FUNCTION) 132 n.setName( "arccos") 133 assert( n.getType() == LibSBML::AST_FUNCTION ) 134 n.canonicalize() 135 assert( n.getType() == LibSBML::AST_FUNCTION_ARCCOS ) 136 n.setType(LibSBML::AST_FUNCTION) 137 n.setName( "arccosh") 138 assert( n.getType() == LibSBML::AST_FUNCTION ) 139 n.canonicalize() 140 assert( n.getType() == LibSBML::AST_FUNCTION_ARCCOSH ) 141 n.setType(LibSBML::AST_FUNCTION) 142 n.setName( "arccot") 143 assert( n.getType() == LibSBML::AST_FUNCTION ) 144 n.canonicalize() 145 assert( n.getType() == LibSBML::AST_FUNCTION_ARCCOT ) 146 n.setType(LibSBML::AST_FUNCTION) 147 n.setName( "arccoth") 148 assert( n.getType() == LibSBML::AST_FUNCTION ) 149 n.canonicalize() 150 assert( n.getType() == LibSBML::AST_FUNCTION_ARCCOTH ) 151 n.setType(LibSBML::AST_FUNCTION) 152 n.setName( "arccsc") 153 assert( n.getType() == LibSBML::AST_FUNCTION ) 154 n.canonicalize() 155 assert( n.getType() == LibSBML::AST_FUNCTION_ARCCSC ) 156 n.setType(LibSBML::AST_FUNCTION) 157 n.setName( "arccsch") 158 assert( n.getType() == LibSBML::AST_FUNCTION ) 159 n.canonicalize() 160 assert( n.getType() == LibSBML::AST_FUNCTION_ARCCSCH ) 161 n.setType(LibSBML::AST_FUNCTION) 162 n.setName( "arcsec") 163 assert( n.getType() == LibSBML::AST_FUNCTION ) 164 n.canonicalize() 165 assert( n.getType() == LibSBML::AST_FUNCTION_ARCSEC ) 166 n.setType(LibSBML::AST_FUNCTION) 167 n.setName( "arcsech") 168 assert( n.getType() == LibSBML::AST_FUNCTION ) 169 n.canonicalize() 170 assert( n.getType() == LibSBML::AST_FUNCTION_ARCSECH ) 171 n.setType(LibSBML::AST_FUNCTION) 172 n.setName( "arcsin") 173 assert( n.getType() == LibSBML::AST_FUNCTION ) 174 n.canonicalize() 175 assert( n.getType() == LibSBML::AST_FUNCTION_ARCSIN ) 176 n.setType(LibSBML::AST_FUNCTION) 177 n.setName( "arcsinh") 178 assert( n.getType() == LibSBML::AST_FUNCTION ) 179 n.canonicalize() 180 assert( n.getType() == LibSBML::AST_FUNCTION_ARCSINH ) 181 n.setType(LibSBML::AST_FUNCTION) 182 n.setName( "arctan") 183 assert( n.getType() == LibSBML::AST_FUNCTION ) 184 n.canonicalize() 185 assert( n.getType() == LibSBML::AST_FUNCTION_ARCTAN ) 186 n.setType(LibSBML::AST_FUNCTION) 187 n.setName( "arctanh") 188 assert( n.getType() == LibSBML::AST_FUNCTION ) 189 n.canonicalize() 190 assert( n.getType() == LibSBML::AST_FUNCTION_ARCTANH ) 191 n.setType(LibSBML::AST_FUNCTION) 192 n.setName( "ceiling") 193 assert( n.getType() == LibSBML::AST_FUNCTION ) 194 n.canonicalize() 195 assert( n.getType() == LibSBML::AST_FUNCTION_CEILING ) 196 n.setType(LibSBML::AST_FUNCTION) 197 n.setName( "cos") 198 assert( n.getType() == LibSBML::AST_FUNCTION ) 199 n.canonicalize() 200 assert( n.getType() == LibSBML::AST_FUNCTION_COS ) 201 n.setType(LibSBML::AST_FUNCTION) 202 n.setName( "cosh") 203 assert( n.getType() == LibSBML::AST_FUNCTION ) 204 n.canonicalize() 205 assert( n.getType() == LibSBML::AST_FUNCTION_COSH ) 206 n.setType(LibSBML::AST_FUNCTION) 207 n.setName( "cot") 208 assert( n.getType() == LibSBML::AST_FUNCTION ) 209 n.canonicalize() 210 assert( n.getType() == LibSBML::AST_FUNCTION_COT ) 211 n.setType(LibSBML::AST_FUNCTION) 212 n.setName( "coth") 213 assert( n.getType() == LibSBML::AST_FUNCTION ) 214 n.canonicalize() 215 assert( n.getType() == LibSBML::AST_FUNCTION_COTH ) 216 n.setType(LibSBML::AST_FUNCTION) 217 n.setName( "csc") 218 assert( n.getType() == LibSBML::AST_FUNCTION ) 219 n.canonicalize() 220 assert( n.getType() == LibSBML::AST_FUNCTION_CSC ) 221 n.setType(LibSBML::AST_FUNCTION) 222 n.setName( "csch") 223 assert( n.getType() == LibSBML::AST_FUNCTION ) 224 n.canonicalize() 225 assert( n.getType() == LibSBML::AST_FUNCTION_CSCH ) 226 n.setType(LibSBML::AST_FUNCTION) 227 n.setName( "exp") 228 assert( n.getType() == LibSBML::AST_FUNCTION ) 229 n.canonicalize() 230 assert( n.getType() == LibSBML::AST_FUNCTION_EXP ) 231 n.setType(LibSBML::AST_FUNCTION) 232 n.setName( "factorial") 233 assert( n.getType() == LibSBML::AST_FUNCTION ) 234 n.canonicalize() 235 assert( n.getType() == LibSBML::AST_FUNCTION_FACTORIAL ) 236 n.setType(LibSBML::AST_FUNCTION) 237 n.setName( "floor") 238 assert( n.getType() == LibSBML::AST_FUNCTION ) 239 n.canonicalize() 240 assert( n.getType() == LibSBML::AST_FUNCTION_FLOOR ) 241 n.setType(LibSBML::AST_FUNCTION) 242 n.setName( "lambda") 243 assert( n.getType() == LibSBML::AST_FUNCTION ) 244 n.canonicalize() 245 assert( n.getType() == LibSBML::AST_LAMBDA ) 246 n.setType(LibSBML::AST_FUNCTION) 247 n.setName( "ln") 248 assert( n.getType() == LibSBML::AST_FUNCTION ) 249 n.canonicalize() 250 assert( n.getType() == LibSBML::AST_FUNCTION_LN ) 251 n.setType(LibSBML::AST_FUNCTION) 252 n.setName( "log") 253 assert( n.getType() == LibSBML::AST_FUNCTION ) 254 n.canonicalize() 255 assert( n.getType() == LibSBML::AST_FUNCTION_LOG ) 256 n.setType(LibSBML::AST_FUNCTION) 257 n.setName( "piecewise") 258 assert( n.getType() == LibSBML::AST_FUNCTION ) 259 n.canonicalize() 260 assert( n.getType() == LibSBML::AST_FUNCTION_PIECEWISE ) 261 n.setType(LibSBML::AST_FUNCTION) 262 n.setName( "power") 263 assert( n.getType() == LibSBML::AST_FUNCTION ) 264 n.canonicalize() 265 assert( n.getType() == LibSBML::AST_FUNCTION_POWER ) 266 n.setType(LibSBML::AST_FUNCTION) 267 n.setName( "root") 268 assert( n.getType() == LibSBML::AST_FUNCTION ) 269 n.canonicalize() 270 assert( n.getType() == LibSBML::AST_FUNCTION_ROOT ) 271 n.setType(LibSBML::AST_FUNCTION) 272 n.setName( "sec") 273 assert( n.getType() == LibSBML::AST_FUNCTION ) 274 n.canonicalize() 275 assert( n.getType() == LibSBML::AST_FUNCTION_SEC ) 276 n.setType(LibSBML::AST_FUNCTION) 277 n.setName( "sech") 278 assert( n.getType() == LibSBML::AST_FUNCTION ) 279 n.canonicalize() 280 assert( n.getType() == LibSBML::AST_FUNCTION_SECH ) 281 n.setType(LibSBML::AST_FUNCTION) 282 n.setName( "sin") 283 assert( n.getType() == LibSBML::AST_FUNCTION ) 284 n.canonicalize() 285 assert( n.getType() == LibSBML::AST_FUNCTION_SIN ) 286 n.setType(LibSBML::AST_FUNCTION) 287 n.setName( "sinh") 288 assert( n.getType() == LibSBML::AST_FUNCTION ) 289 n.canonicalize() 290 assert( n.getType() == LibSBML::AST_FUNCTION_SINH ) 291 n.setType(LibSBML::AST_FUNCTION) 292 n.setName( "tan") 293 assert( n.getType() == LibSBML::AST_FUNCTION ) 294 n.canonicalize() 295 assert( n.getType() == LibSBML::AST_FUNCTION_TAN ) 296 n.setType(LibSBML::AST_FUNCTION) 297 n.setName( "tanh") 298 assert( n.getType() == LibSBML::AST_FUNCTION ) 299 n.canonicalize() 300 assert( n.getType() == LibSBML::AST_FUNCTION_TANH ) 301 n.setType(LibSBML::AST_FUNCTION) 302 n.setName( "Foo") 303 assert( n.getType() == LibSBML::AST_FUNCTION ) 304 n.canonicalize() 305 assert( n.getType() == LibSBML::AST_FUNCTION ) 306 n = nil 307 end 308 309 def test_ASTNode_canonicalizeFunctionsL1 310 n = LibSBML::ASTNode.new(LibSBML::AST_FUNCTION) 311 n.setName( "acos") 312 assert( n.getType() == LibSBML::AST_FUNCTION ) 313 n.canonicalize() 314 assert( n.getType() == LibSBML::AST_FUNCTION_ARCCOS ) 315 n.setType(LibSBML::AST_FUNCTION) 316 n.setName( "asin") 317 assert( n.getType() == LibSBML::AST_FUNCTION ) 318 n.canonicalize() 319 assert( n.getType() == LibSBML::AST_FUNCTION_ARCSIN ) 320 n.setType(LibSBML::AST_FUNCTION) 321 n.setName( "atan") 322 assert( n.getType() == LibSBML::AST_FUNCTION ) 323 n.canonicalize() 324 assert( n.getType() == LibSBML::AST_FUNCTION_ARCTAN ) 325 n.setType(LibSBML::AST_FUNCTION) 326 n.setName( "ceil") 327 assert( n.getType() == LibSBML::AST_FUNCTION ) 328 n.canonicalize() 329 assert( n.getType() == LibSBML::AST_FUNCTION_CEILING ) 330 n.setType(LibSBML::AST_FUNCTION) 331 n.setName( "pow") 332 assert( n.getType() == LibSBML::AST_FUNCTION ) 333 n.canonicalize() 334 assert( n.getType() == LibSBML::AST_FUNCTION_POWER ) 335 n = nil 336 n = LibSBML::ASTNode.new(LibSBML::AST_FUNCTION) 337 n.setName( "log") 338 c = LibSBML::ASTNode.new() 339 c.setName( "x") 340 n.addChild(c) 341 assert( n.getType() == LibSBML::AST_FUNCTION ) 342 assert( n.getNumChildren() == 1 ) 343 n.canonicalize() 344 assert( n.getType() == LibSBML::AST_FUNCTION_LN ) 345 assert( n.getNumChildren() == 1 ) 346 n.setType(LibSBML::AST_FUNCTION) 347 c = LibSBML::ASTNode.new() 348 c.setName( "y") 349 n.addChild(c) 350 assert( n.getType() == LibSBML::AST_FUNCTION ) 351 assert( n.getNumChildren() == 2 ) 352 n.canonicalize() 353 assert( n.getType() == LibSBML::AST_FUNCTION_LOG ) 354 n = nil 355 n = LibSBML::ASTNode.new(LibSBML::AST_FUNCTION) 356 n.setName( "log10") 357 c = LibSBML::ASTNode.new() 358 c.setName( "x") 359 n.addChild(c) 360 assert( n.getType() == LibSBML::AST_FUNCTION ) 361 assert( n.getNumChildren() == 1 ) 362 n.canonicalize() 363 assert( n.getType() == LibSBML::AST_FUNCTION_LOG ) 364 assert( n.getNumChildren() == 2 ) 365 c = n.getLeftChild() 366 assert( c.getType() == LibSBML::AST_INTEGER ) 367 assert( c.getInteger() == 10 ) 368 c = n.getRightChild() 369 assert( c.getType() == LibSBML::AST_NAME ) 370 assert (( "x" == c.getName() )) 371 n = nil 372 n = LibSBML::ASTNode.new(LibSBML::AST_FUNCTION) 373 n.setName( "sqr") 374 c = LibSBML::ASTNode.new() 375 c.setName( "x") 376 n.addChild(c) 377 assert( n.getType() == LibSBML::AST_FUNCTION ) 378 assert( n.getNumChildren() == 1 ) 379 n.canonicalize() 380 assert( n.getType() == LibSBML::AST_FUNCTION_POWER ) 381 assert( n.getNumChildren() == 2 ) 382 c = n.getLeftChild() 383 assert( c.getType() == LibSBML::AST_NAME ) 384 assert (( "x" == c.getName() )) 385 c = n.getRightChild() 386 assert( c.getType() == LibSBML::AST_INTEGER ) 387 assert( c.getInteger() == 2 ) 388 n = nil 389 n = LibSBML::ASTNode.new(LibSBML::AST_FUNCTION) 390 n.setName( "sqrt") 391 c = LibSBML::ASTNode.new() 392 c.setName( "x") 393 n.addChild(c) 394 assert( n.getType() == LibSBML::AST_FUNCTION ) 395 assert( n.getNumChildren() == 1 ) 396 n.canonicalize() 397 assert( n.getType() == LibSBML::AST_FUNCTION_ROOT ) 398 assert( n.getNumChildren() == 2 ) 399 c = n.getLeftChild() 400 assert( c.getType() == LibSBML::AST_INTEGER ) 401 assert( c.getInteger() == 2 ) 402 c = n.getRightChild() 403 assert( c.getType() == LibSBML::AST_NAME ) 404 assert (( "x" == c.getName() )) 405 n = nil 406 end 407 408 def test_ASTNode_canonicalizeLogical 409 n = LibSBML::ASTNode.new(LibSBML::AST_FUNCTION) 410 n.setName( "and") 411 assert( n.getType() == LibSBML::AST_FUNCTION ) 412 n.canonicalize() 413 assert( n.getType() == LibSBML::AST_LOGICAL_AND ) 414 n.setType(LibSBML::AST_FUNCTION) 415 n.setName( "not") 416 assert( n.getType() == LibSBML::AST_FUNCTION ) 417 n.canonicalize() 418 assert( n.getType() == LibSBML::AST_LOGICAL_NOT ) 419 n.setType(LibSBML::AST_FUNCTION) 420 n.setName( "or") 421 assert( n.getType() == LibSBML::AST_FUNCTION ) 422 n.canonicalize() 423 assert( n.getType() == LibSBML::AST_LOGICAL_OR ) 424 n.setType(LibSBML::AST_FUNCTION) 425 n.setName( "xor") 426 assert( n.getType() == LibSBML::AST_FUNCTION ) 427 n.canonicalize() 428 assert( n.getType() == LibSBML::AST_LOGICAL_XOR ) 429 n.setType(LibSBML::AST_FUNCTION) 430 n = nil 431 end 432 433 def test_ASTNode_canonicalizeRelational 434 n = LibSBML::ASTNode.new(LibSBML::AST_FUNCTION) 435 n.setName( "eq") 436 assert( n.getType() == LibSBML::AST_FUNCTION ) 437 n.canonicalize() 438 assert( n.getType() == LibSBML::AST_RELATIONAL_EQ ) 439 n.setType(LibSBML::AST_FUNCTION) 440 n.setName( "geq") 441 assert( n.getType() == LibSBML::AST_FUNCTION ) 442 n.canonicalize() 443 assert( n.getType() == LibSBML::AST_RELATIONAL_GEQ ) 444 n.setType(LibSBML::AST_FUNCTION) 445 n.setName( "gt") 446 assert( n.getType() == LibSBML::AST_FUNCTION ) 447 n.canonicalize() 448 assert( n.getType() == LibSBML::AST_RELATIONAL_GT ) 449 n.setType(LibSBML::AST_FUNCTION) 450 n.setName( "leq") 451 assert( n.getType() == LibSBML::AST_FUNCTION ) 452 n.canonicalize() 453 assert( n.getType() == LibSBML::AST_RELATIONAL_LEQ ) 454 n.setType(LibSBML::AST_FUNCTION) 455 n.setName( "lt") 456 assert( n.getType() == LibSBML::AST_FUNCTION ) 457 n.canonicalize() 458 assert( n.getType() == LibSBML::AST_RELATIONAL_LT ) 459 n.setType(LibSBML::AST_FUNCTION) 460 n.setName( "neq") 461 assert( n.getType() == LibSBML::AST_FUNCTION ) 462 n.canonicalize() 463 assert( n.getType() == LibSBML::AST_RELATIONAL_NEQ ) 464 n.setType(LibSBML::AST_FUNCTION) 465 n = nil 466 end 467 468 def test_ASTNode_children 469 parent = LibSBML::ASTNode.new() 470 left = LibSBML::ASTNode.new() 471 right = LibSBML::ASTNode.new() 472 right2 = LibSBML::ASTNode.new() 473 parent.setType(LibSBML::AST_PLUS) 474 left.setValue(1) 475 right.setValue(2) 476 right2.setValue(3) 477 parent.addChild(left) 478 parent.addChild(right) 479 assert( parent.getNumChildren() == 2 ) 480 assert( left.getNumChildren() == 0 ) 481 assert( right.getNumChildren() == 0 ) 482 assert( parent.getLeftChild() == left ) 483 assert( parent.getRightChild() == right ) 484 assert( parent.getChild(0) == left ) 485 assert( parent.getChild(1) == right ) 486 assert( parent.getChild(2) == nil ) 487 parent.addChild(right2) 488 assert( parent.getNumChildren() == 3 ) 489 assert( left.getNumChildren() == 0 ) 490 assert( right.getNumChildren() == 0 ) 491 assert( right2.getNumChildren() == 0 ) 492 assert( parent.getLeftChild() == left ) 493 assert( parent.getRightChild() == right2 ) 494 assert( parent.getChild(0) == left ) 495 assert( parent.getChild(1) == right ) 496 assert( parent.getChild(2) == right2 ) 497 assert( parent.getChild(3) == nil ) 498 parent = nil 499 end 500 501 def test_ASTNode_create 502 n = LibSBML::ASTNode.new() 503 ea = LibSBML::EventAssignment.new(2,4) 504 assert( n.getType() == LibSBML::AST_UNKNOWN ) 505 assert( n.getCharacter() == "\0" ) 506 assert( n.getName() == nil ) 507 assert( n.getInteger() == 0 ) 508 assert( n.getExponent() == 0 ) 509 assert( n.getNumChildren() == 0 ) 510 assert( n.getParentSBMLObject() == nil ) 511 ea = nil 512 n = nil 513 end 514 515 def test_ASTNode_deepCopy_1 516 node = LibSBML::ASTNode.new() 517 node.setCharacter( '+') 518 node.addChild(LibSBML::ASTNode.new()) 519 node.addChild(LibSBML::ASTNode.new()) 520 node.getLeftChild().setValue(1) 521 node.getRightChild().setValue(2) 522 assert( node.getType() == LibSBML::AST_PLUS ) 523 assert( node.getCharacter() == '+' ) 524 assert( node.getNumChildren() == 2 ) 525 child = node.getLeftChild() 526 assert( child.getType() == LibSBML::AST_INTEGER ) 527 assert( child.getInteger() == 1 ) 528 assert( child.getNumChildren() == 0 ) 529 child = node.getRightChild() 530 assert( child.getType() == LibSBML::AST_INTEGER ) 531 assert( child.getInteger() == 2 ) 532 assert( child.getNumChildren() == 0 ) 533 copy = node.deepCopy() 534 assert( copy != node ) 535 assert( copy.getType() == LibSBML::AST_PLUS ) 536 assert( copy.getCharacter() == '+' ) 537 assert( copy.getNumChildren() == 2 ) 538 child = copy.getLeftChild() 539 assert( child != node.getLeftChild() ) 540 assert( child.getType() == LibSBML::AST_INTEGER ) 541 assert( child.getInteger() == 1 ) 542 assert( child.getNumChildren() == 0 ) 543 child = copy.getRightChild() 544 assert( child != node.getRightChild() ) 545 assert( child.getType() == LibSBML::AST_INTEGER ) 546 assert( child.getInteger() == 2 ) 547 assert( child.getNumChildren() == 0 ) 548 node = nil 549 copy = nil 550 end 551 552 def test_ASTNode_deepCopy_2 553 node = LibSBML::ASTNode.new() 554 node.setName( "Foo") 555 assert( node.getType() == LibSBML::AST_NAME ) 556 assert (( "Foo" == node.getName() )) 557 assert( node.getNumChildren() == 0 ) 558 copy = node.deepCopy() 559 assert( copy != node ) 560 assert( copy.getType() == LibSBML::AST_NAME ) 561 assert (( "Foo" == copy.getName() )) 562 assert( copy.getNumChildren() == 0 ) 563 node = nil 564 copy = nil 565 end 566 567 def test_ASTNode_deepCopy_3 568 node = LibSBML::ASTNode.new(LibSBML::AST_FUNCTION) 569 node.setName( "Foo") 570 assert( node.getType() == LibSBML::AST_FUNCTION ) 571 assert (( "Foo" == node.getName() )) 572 assert( node.getNumChildren() == 0 ) 573 copy = node.deepCopy() 574 assert( copy != node ) 575 assert( copy.getType() == LibSBML::AST_FUNCTION ) 576 assert (( "Foo" == copy.getName() )) 577 assert( copy.getNumChildren() == 0 ) 578 node = nil 579 copy = nil 580 end 581 582 def test_ASTNode_deepCopy_4 583 node = LibSBML::ASTNode.new(LibSBML::AST_FUNCTION_ABS) 584 node.setName( "ABS") 585 assert( node.getType() == LibSBML::AST_FUNCTION_ABS ) 586 assert (( "ABS" == node.getName() )) 587 assert( node.getNumChildren() == 0 ) 588 copy = node.deepCopy() 589 assert( copy != node ) 590 assert( copy.getType() == LibSBML::AST_FUNCTION_ABS ) 591 assert (( "ABS" == copy.getName() )) 592 assert( copy.getNumChildren() == 0 ) 593 node = nil 594 copy = nil 595 end 596 597 def test_ASTNode_freeName 598 node = LibSBML::ASTNode.new() 599 i = 0 600 i = node.setName( "a") 601 assert( i == LibSBML::LIBSBML_OPERATION_SUCCESS ) 602 assert (( "a" == LibSBML::formulaToString(node) )) 603 assert (( "a" == node.getName() )) 604 i = node.freeName() 605 assert( i == LibSBML::LIBSBML_OPERATION_SUCCESS ) 606 assert( node.getName() == nil ) 607 i = node.freeName() 608 assert( i == LibSBML::LIBSBML_UNEXPECTED_ATTRIBUTE ) 609 assert( node.getName() == nil ) 610 node.setType(LibSBML::AST_UNKNOWN) 611 i = node.freeName() 612 assert( i == LibSBML::LIBSBML_UNEXPECTED_ATTRIBUTE ) 613 assert( node.getName() == nil ) 614 node = nil 615 end 616 617 def test_ASTNode_free_NULL 618 end 619 620 def test_ASTNode_getName 621 n = LibSBML::ASTNode.new() 622 n.setName( "foo") 623 assert (( "foo" == n.getName() )) 624 n.setType(LibSBML::AST_NAME_TIME) 625 assert (( "foo" == n.getName() )) 626 n.setName(nil) 627 assert( n.getName() == nil ) 628 n.setType(LibSBML::AST_CONSTANT_E) 629 assert (( "exponentiale" == n.getName() )) 630 n.setType(LibSBML::AST_CONSTANT_FALSE) 631 assert (( "false" == n.getName() )) 632 n.setType(LibSBML::AST_CONSTANT_PI) 633 assert (( "pi" == n.getName() )) 634 n.setType(LibSBML::AST_CONSTANT_TRUE) 635 assert (( "true" == n.getName() )) 636 n.setType(LibSBML::AST_LAMBDA) 637 assert (( "lambda" == n.getName() )) 638 n.setType(LibSBML::AST_FUNCTION) 639 n.setName( "f") 640 assert (( "f" == n.getName() )) 641 n.setType(LibSBML::AST_FUNCTION_DELAY) 642 assert (( "f" == n.getName() )) 643 n.setName(nil) 644 assert (( "delay" == n.getName() )) 645 n.setType(LibSBML::AST_FUNCTION) 646 assert( n.getName() == nil ) 647 n.setType(LibSBML::AST_FUNCTION_ABS) 648 assert (( "abs" == n.getName() )) 649 n.setType(LibSBML::AST_FUNCTION_ARCCOS) 650 assert (( "arccos" == n.getName() )) 651 n.setType(LibSBML::AST_FUNCTION_TAN) 652 assert (( "tan" == n.getName() )) 653 n.setType(LibSBML::AST_FUNCTION_TANH) 654 assert (( "tanh" == n.getName() )) 655 n.setType(LibSBML::AST_LOGICAL_AND) 656 assert (( "and" == n.getName() )) 657 n.setType(LibSBML::AST_LOGICAL_NOT) 658 assert (( "not" == n.getName() )) 659 n.setType(LibSBML::AST_LOGICAL_OR) 660 assert (( "or" == n.getName() )) 661 n.setType(LibSBML::AST_LOGICAL_XOR) 662 assert (( "xor" == n.getName() )) 663 n.setType(LibSBML::AST_RELATIONAL_EQ) 664 assert (( "eq" == n.getName() )) 665 n.setType(LibSBML::AST_RELATIONAL_GEQ) 666 assert (( "geq" == n.getName() )) 667 n.setType(LibSBML::AST_RELATIONAL_LT) 668 assert (( "lt" == n.getName() )) 669 n.setType(LibSBML::AST_RELATIONAL_NEQ) 670 assert (( "neq" == n.getName() )) 671 n = nil 672 end 673 674 def test_ASTNode_getPrecedence 675 n = LibSBML::ASTNode.new() 676 n.setType(LibSBML::AST_PLUS) 677 assert( n.getPrecedence() == 2 ) 678 n.setType(LibSBML::AST_MINUS) 679 assert( n.getPrecedence() == 2 ) 680 n.setType(LibSBML::AST_TIMES) 681 assert( n.getPrecedence() == 3 ) 682 n.setType(LibSBML::AST_DIVIDE) 683 assert( n.getPrecedence() == 3 ) 684 n.setType(LibSBML::AST_POWER) 685 assert( n.getPrecedence() == 4 ) 686 n.setType(LibSBML::AST_MINUS) 687 n.addChild(LibSBML::ASTNode.new(LibSBML::AST_NAME)) 688 assert( n.isUMinus() == true ) 689 assert( n.getPrecedence() == 5 ) 690 n.setType(LibSBML::AST_NAME) 691 assert( n.getPrecedence() == 6 ) 692 n.setType(LibSBML::AST_FUNCTION) 693 assert( n.getPrecedence() == 6 ) 694 n = nil 695 end 696 697 def test_ASTNode_getReal 698 n = LibSBML::ASTNode.new() 699 n.setType(LibSBML::AST_REAL) 700 n.setValue(1.6) 701 assert( n.getReal() == 1.6 ) 702 n.setType(LibSBML::AST_REAL_E) 703 n.setValue(12.3,3) 704 val = (n.getReal() - 12300.0).abs 705 assert( val < @@DBL_EPSILON ) 706 n.setType(LibSBML::AST_RATIONAL) 707 n.setValue(1,2) 708 assert( n.getReal() == 0.5 ) 709 n = nil 710 end 711 712 def test_ASTNode_insertChild 713 node = LibSBML::ASTNode.new() 714 c1 = LibSBML::ASTNode.new() 715 c2 = LibSBML::ASTNode.new() 716 c3 = LibSBML::ASTNode.new() 717 newc = LibSBML::ASTNode.new() 718 newc1 = LibSBML::ASTNode.new() 719 i = 0 720 node.setType(LibSBML::AST_LOGICAL_AND) 721 c1.setName( "a") 722 c2.setName( "b") 723 c3.setName( "c") 724 node.addChild(c1) 725 node.addChild(c2) 726 node.addChild(c3) 727 assert( node.getNumChildren() == 3 ) 728 assert (( "and(a, b, c)" == LibSBML::formulaToString(node) )) 729 newc.setName( "d") 730 newc1.setName( "e") 731 i = node.insertChild(1,newc) 732 assert( i == LibSBML::LIBSBML_OPERATION_SUCCESS ) 733 assert( node.getNumChildren() == 4 ) 734 assert (( "and(a, d, b, c)" == LibSBML::formulaToString(node) )) 735 i = node.insertChild(5,newc) 736 assert( i == LibSBML::LIBSBML_INDEX_EXCEEDS_SIZE ) 737 assert( node.getNumChildren() == 4 ) 738 assert (( "and(a, d, b, c)" == LibSBML::formulaToString(node) )) 739 i = node.insertChild(2,newc1) 740 assert( i == LibSBML::LIBSBML_OPERATION_SUCCESS ) 741 assert( node.getNumChildren() == 5 ) 742 assert (( "and(a, d, e, b, c)" == LibSBML::formulaToString(node) )) 743 node = nil 744 end 745 746 def test_ASTNode_isLog10 747 n = LibSBML::ASTNode.new() 748 n.setType(LibSBML::AST_FUNCTION) 749 assert( n.isLog10() == false ) 750 n.setType(LibSBML::AST_FUNCTION_LOG) 751 assert( n.isLog10() == false ) 752 c = LibSBML::ASTNode.new() 753 n.addChild(c) 754 c.setValue(10) 755 assert( n.isLog10() == false ) 756 n.addChild(LibSBML::ASTNode.new()) 757 assert( n.isLog10() == true ) 758 c.setValue(2) 759 assert( n.isLog10() == false ) 760 n = nil 761 end 762 763 def test_ASTNode_isSqrt 764 n = LibSBML::ASTNode.new() 765 n.setType(LibSBML::AST_FUNCTION) 766 assert( n.isSqrt() == false ) 767 n.setType(LibSBML::AST_FUNCTION_ROOT) 768 assert( n.isSqrt() == false ) 769 c = LibSBML::ASTNode.new() 770 n.addChild(c) 771 c.setValue(2) 772 assert( n.isSqrt() == false ) 773 n.addChild(LibSBML::ASTNode.new()) 774 assert( n.isSqrt() == true ) 775 c.setValue(3) 776 assert( n.isSqrt() == false ) 777 n = nil 778 end 779 780 def test_ASTNode_isUMinus 781 n = LibSBML::ASTNode.new() 782 n.setType(LibSBML::AST_MINUS) 783 assert( n.isUMinus() == false ) 784 n.addChild(LibSBML::ASTNode.new(LibSBML::AST_NAME)) 785 assert( n.isUMinus() == true ) 786 n = nil 787 end 788 789 def test_ASTNode_no_children 790 node = LibSBML::ASTNode.new() 791 assert( node.getNumChildren() == 0 ) 792 assert( node.getLeftChild() == nil ) 793 assert( node.getRightChild() == nil ) 794 assert( node.getChild(0) == nil ) 795 node = nil 796 end 797 798 def test_ASTNode_one_child 799 node = LibSBML::ASTNode.new() 800 child = LibSBML::ASTNode.new() 801 node.addChild(child) 802 assert( node.getNumChildren() == 1 ) 803 assert( node.getLeftChild() == child ) 804 assert( node.getRightChild() == nil ) 805 assert( node.getChild(0) == child ) 806 assert( node.getChild(1) == nil ) 807 node = nil 808 end 809 810 def test_ASTNode_prependChild1 811 node = LibSBML::ASTNode.new() 812 c1 = LibSBML::ASTNode.new() 813 c2 = LibSBML::ASTNode.new() 814 c1_1 = LibSBML::ASTNode.new() 815 i = 0 816 node.setType(LibSBML::AST_LOGICAL_AND) 817 c1.setName( "a") 818 c2.setName( "b") 819 node.addChild(c1) 820 node.addChild(c2) 821 assert( node.getNumChildren() == 2 ) 822 assert (( "and(a, b)" == LibSBML::formulaToString(node) )) 823 c1_1.setName( "d") 824 i = node.prependChild(c1_1) 825 assert( i == LibSBML::LIBSBML_OPERATION_SUCCESS ) 826 assert( node.getNumChildren() == 3 ) 827 assert (( "and(d, a, b)" == LibSBML::formulaToString(node) )) 828 assert (( "d" == node.getChild(0).getName() )) 829 assert (( "a" == node.getChild(1).getName() )) 830 assert (( "b" == node.getChild(2).getName() )) 831 node = nil 832 end 833 834 def test_ASTNode_removeChild 835 node = LibSBML::ASTNode.new() 836 c1 = LibSBML::ASTNode.new() 837 c2 = LibSBML::ASTNode.new() 838 i = 0 839 node.setType(LibSBML::AST_PLUS) 840 c1.setName( "foo") 841 c2.setName( "foo2") 842 node.addChild(c1) 843 node.addChild(c2) 844 assert( node.getNumChildren() == 2 ) 845 i = node.removeChild(0) 846 assert( i == LibSBML::LIBSBML_OPERATION_SUCCESS ) 847 assert( node.getNumChildren() == 1 ) 848 i = node.removeChild(1) 849 assert( i == LibSBML::LIBSBML_INDEX_EXCEEDS_SIZE ) 850 assert( node.getNumChildren() == 1 ) 851 i = node.removeChild(0) 852 assert( i == LibSBML::LIBSBML_OPERATION_SUCCESS ) 853 assert( node.getNumChildren() == 0 ) 854 node = nil 855 end 856 857 def test_ASTNode_replaceChild 858 node = LibSBML::ASTNode.new() 859 c1 = LibSBML::ASTNode.new() 860 c2 = LibSBML::ASTNode.new() 861 c3 = LibSBML::ASTNode.new() 862 newc = LibSBML::ASTNode.new() 863 i = 0 864 node.setType(LibSBML::AST_LOGICAL_AND) 865 c1.setName( "a") 866 c2.setName( "b") 867 c3.setName( "c") 868 node.addChild(c1) 869 node.addChild(c2) 870 node.addChild(c3) 871 assert( node.getNumChildren() == 3 ) 872 assert (( "and(a, b, c)" == LibSBML::formulaToString(node) )) 873 newc.setName( "d") 874 i = node.replaceChild(0,newc) 875 assert( i == LibSBML::LIBSBML_OPERATION_SUCCESS ) 876 assert( node.getNumChildren() == 3 ) 877 assert (( "and(d, b, c)" == LibSBML::formulaToString(node) )) 878 i = node.replaceChild(3,newc) 879 assert( i == LibSBML::LIBSBML_INDEX_EXCEEDS_SIZE ) 880 assert( node.getNumChildren() == 3 ) 881 assert (( "and(d, b, c)" == LibSBML::formulaToString(node) )) 882 i = node.replaceChild(1,c1) 883 assert( i == LibSBML::LIBSBML_OPERATION_SUCCESS ) 884 assert( node.getNumChildren() == 3 ) 885 assert (( "and(d, a, c)" == LibSBML::formulaToString(node) )) 886 node = nil 887 end 888 889 def test_ASTNode_setCharacter 890 node = LibSBML::ASTNode.new() 891 node.setName( "foo") 892 assert( node.getType() == LibSBML::AST_NAME ) 893 assert( node.getCharacter() == "\0" ) 894 assert (( "foo" == node.getName() )) 895 assert( node.getInteger() == 0 ) 896 assert( node.getReal() == 0 ) 897 assert( node.getExponent() == 0 ) 898 assert( node.getDenominator() == 1 ) 899 node.setCharacter( '+') 900 assert( node.getType() == LibSBML::AST_PLUS ) 901 assert( node.getCharacter() == '+' ) 902 assert( node.getName() == nil ) 903 assert( node.getInteger() == 0 ) 904 assert( node.getReal() == 0 ) 905 assert( node.getExponent() == 0 ) 906 assert( node.getDenominator() == 1 ) 907 node.setCharacter( '-') 908 assert( node.getType() == LibSBML::AST_MINUS ) 909 assert( node.getCharacter() == '-' ) 910 assert( node.getName() == nil ) 911 assert( node.getInteger() == 0 ) 912 assert( node.getReal() == 0 ) 913 assert( node.getExponent() == 0 ) 914 assert( node.getDenominator() == 1 ) 915 node.setCharacter( '*') 916 assert( node.getType() == LibSBML::AST_TIMES ) 917 assert( node.getCharacter() == '*' ) 918 assert( node.getName() == nil ) 919 assert( node.getInteger() == 0 ) 920 assert( node.getReal() == 0 ) 921 assert( node.getExponent() == 0 ) 922 assert( node.getDenominator() == 1 ) 923 node.setCharacter( '/') 924 assert( node.getType() == LibSBML::AST_DIVIDE ) 925 assert( node.getCharacter() == '/' ) 926 assert( node.getName() == nil ) 927 assert( node.getInteger() == 0 ) 928 assert( node.getReal() == 0 ) 929 assert( node.getExponent() == 0 ) 930 assert( node.getDenominator() == 1 ) 931 node.setCharacter( '^') 932 assert( node.getType() == LibSBML::AST_POWER ) 933 assert( node.getCharacter() == '^' ) 934 assert( node.getName() == nil ) 935 assert( node.getInteger() == 0 ) 936 assert( node.getReal() == 0 ) 937 assert( node.getExponent() == 0 ) 938 assert( node.getDenominator() == 1 ) 939 node.setCharacter( '$') 940 assert( node.getType() == LibSBML::AST_UNKNOWN ) 941 assert( node.getCharacter() == '$' ) 942 assert( node.getName() == nil ) 943 assert( node.getInteger() == 0 ) 944 assert( node.getReal() == 0 ) 945 assert( node.getExponent() == 0 ) 946 assert( node.getDenominator() == 1 ) 947 node = nil 948 end 949 950 def test_ASTNode_setInteger 951 node = LibSBML::ASTNode.new() 952 node.setName( "foo") 953 assert( node.getType() == LibSBML::AST_NAME ) 954 assert (( "foo" == node.getName() )) 955 assert( node.getCharacter() == "\0" ) 956 assert( node.getInteger() == 0 ) 957 assert( node.getReal() == 0 ) 958 assert( node.getExponent() == 0 ) 959 assert( node.getDenominator() == 1 ) 960 node.setValue(3.2) 961 assert( node.getType() == LibSBML::AST_REAL ) 962 assert( node.getInteger() == 0 ) 963 assert( node.getName() == nil ) 964 assert( node.getCharacter() == "\0" ) 965 assert( node.getReal() == 3.2 ) 966 assert( node.getExponent() == 0 ) 967 assert( node.getDenominator() == 1 ) 968 node.setValue(321) 969 assert( node.getType() == LibSBML::AST_INTEGER ) 970 assert( node.getInteger() == 321 ) 971 assert( node.getName() == nil ) 972 assert( node.getCharacter() == "\0" ) 973 assert( node.getReal() == 0 ) 974 assert( node.getExponent() == 0 ) 975 assert( node.getDenominator() == 1 ) 976 node = nil 977 end 978 979 def test_ASTNode_setName 980 name = "foo"; 981 node = LibSBML::ASTNode.new() 982 assert( node.getType() == LibSBML::AST_UNKNOWN ) 983 node.setName(name) 984 assert( node.getType() == LibSBML::AST_NAME ) 985 assert (( name == node.getName() )) 986 assert( node.getCharacter() == "\0" ) 987 assert( node.getInteger() == 0 ) 988 assert( node.getReal() == 0 ) 989 assert( node.getExponent() == 0 ) 990 assert( node.getDenominator() == 1 ) 991 if (node.getName() == name) 992 end 993 node.setName(nil) 994 assert( node.getType() == LibSBML::AST_NAME ) 995 if (node.getName() != nil) 996 end 997 node.setType(LibSBML::AST_FUNCTION_COS) 998 assert( node.getType() == LibSBML::AST_FUNCTION_COS ) 999 assert (( "cos" == node.getName() )) 1000 assert( node.getCharacter() == "\0" ) 1001 assert( node.getInteger() == 0 ) 1002 assert( node.getReal() == 0 ) 1003 assert( node.getExponent() == 0 ) 1004 assert( node.getDenominator() == 1 ) 1005 node.setType(LibSBML::AST_PLUS) 1006 node.setName(name) 1007 assert( node.getType() == LibSBML::AST_NAME ) 1008 assert (( name == node.getName() )) 1009 assert( node.getCharacter() == '+' ) 1010 assert( node.getInteger() == 0 ) 1011 assert( node.getReal() == 0 ) 1012 assert( node.getExponent() == 0 ) 1013 assert( node.getDenominator() == 1 ) 1014 node = nil 1015 end 1016 1017 def test_ASTNode_setName_override 1018 node = LibSBML::ASTNode.new(LibSBML::AST_FUNCTION_SIN) 1019 assert (( "sin" == node.getName() )) 1020 assert( node.getType() == LibSBML::AST_FUNCTION_SIN ) 1021 node.setName( "MySinFunc") 1022 assert (( "MySinFunc" == node.getName() )) 1023 assert( node.getType() == LibSBML::AST_FUNCTION_SIN ) 1024 node.setName(nil) 1025 assert (( "sin" == node.getName() )) 1026 assert( node.getType() == LibSBML::AST_FUNCTION_SIN ) 1027 node = nil 1028 end 1029 1030 def test_ASTNode_setReal 1031 node = LibSBML::ASTNode.new() 1032 node.setName( "foo") 1033 assert( node.getType() == LibSBML::AST_NAME ) 1034 node.setValue(32.1) 1035 assert( node.getType() == LibSBML::AST_REAL ) 1036 assert( node.getInteger() == 0 ) 1037 assert( node.getName() == nil ) 1038 assert( node.getCharacter() == "\0" ) 1039 assert( node.getReal() == 32.1 ) 1040 assert( node.getExponent() == 0 ) 1041 assert( node.getDenominator() == 1 ) 1042 assert( node.getMantissa() == 32.1 ) 1043 node.setValue(45,90) 1044 assert( node.getType() == LibSBML::AST_RATIONAL ) 1045 assert( node.getInteger() == 45 ) 1046 assert( node.getName() == nil ) 1047 assert( node.getCharacter() == "\0" ) 1048 assert( node.getReal() == 0.5 ) 1049 assert( node.getExponent() == 0 ) 1050 assert( node.getDenominator() == 90 ) 1051 assert( node.getMantissa() == 0 ) 1052 node.setValue(32.0,4) 1053 assert( node.getType() == LibSBML::AST_REAL_E ) 1054 assert( node.getInteger() == 0 ) 1055 assert( node.getName() == nil ) 1056 assert( node.getCharacter() == "\0" ) 1057 assert( node.getReal() == 320000 ) 1058 assert( node.getExponent() == 4 ) 1059 assert( node.getDenominator() == 1 ) 1060 assert( node.getMantissa() == 32 ) 1061 node = nil 1062 end 1063 1064 def test_ASTNode_setType 1065 node = LibSBML::ASTNode.new() 1066 node.setName( "foo") 1067 assert( node.getType() == LibSBML::AST_NAME ) 1068 node.setType(LibSBML::AST_FUNCTION) 1069 assert( node.getType() == LibSBML::AST_FUNCTION ) 1070 assert (( "foo" == node.getName() )) 1071 node.setType(LibSBML::AST_NAME) 1072 assert( node.getType() == LibSBML::AST_NAME ) 1073 assert (( "foo" == node.getName() )) 1074 node.setType(LibSBML::AST_INTEGER) 1075 assert( node.getType() == LibSBML::AST_INTEGER ) 1076 node.setType(LibSBML::AST_REAL) 1077 assert( node.getType() == LibSBML::AST_REAL ) 1078 node.setType(LibSBML::AST_UNKNOWN) 1079 assert( node.getType() == LibSBML::AST_UNKNOWN ) 1080 node.setType(LibSBML::AST_PLUS) 1081 assert( node.getType() == LibSBML::AST_PLUS ) 1082 assert( node.getCharacter() == '+' ) 1083 node.setType(LibSBML::AST_MINUS) 1084 assert( node.getType() == LibSBML::AST_MINUS ) 1085 assert( node.getCharacter() == '-' ) 1086 node.setType(LibSBML::AST_TIMES) 1087 assert( node.getType() == LibSBML::AST_TIMES ) 1088 assert( node.getCharacter() == '*' ) 1089 node.setType(LibSBML::AST_DIVIDE) 1090 assert( node.getType() == LibSBML::AST_DIVIDE ) 1091 assert( node.getCharacter() == '/' ) 1092 node.setType(LibSBML::AST_POWER) 1093 assert( node.getType() == LibSBML::AST_POWER ) 1094 assert( node.getCharacter() == '^' ) 1095 node = nil 1096 end 1097 1098 def test_ASTNode_swapChildren 1099 node = LibSBML::ASTNode.new() 1100 c1 = LibSBML::ASTNode.new() 1101 c2 = LibSBML::ASTNode.new() 1102 node_1 = LibSBML::ASTNode.new() 1103 c1_1 = LibSBML::ASTNode.new() 1104 c2_1 = LibSBML::ASTNode.new() 1105 i = 0 1106 node.setType(LibSBML::AST_LOGICAL_AND) 1107 c1.setName( "a") 1108 c2.setName( "b") 1109 node.addChild(c1) 1110 node.addChild(c2) 1111 assert( node.getNumChildren() == 2 ) 1112 assert (( "and(a, b)" == LibSBML::formulaToString(node) )) 1113 node_1.setType(LibSBML::AST_LOGICAL_AND) 1114 c1_1.setName( "d") 1115 c2_1.setName( "f") 1116 node_1.addChild(c1_1) 1117 node_1.addChild(c2_1) 1118 assert( node_1.getNumChildren() == 2 ) 1119 assert (( "and(d, f)" == LibSBML::formulaToString(node_1) )) 1120 i = node.swapChildren(node_1) 1121 assert( i == LibSBML::LIBSBML_OPERATION_SUCCESS ) 1122 assert( node.getNumChildren() == 2 ) 1123 assert (( "and(d, f)" == LibSBML::formulaToString(node) )) 1124 assert( node_1.getNumChildren() == 2 ) 1125 assert (( "and(a, b)" == LibSBML::formulaToString(node_1) )) 1126 node_1 = nil 1127 node = nil 1128 end 1129 1130 def test_ASTNode_units 1131 n = LibSBML::ASTNode.new() 1132 n.setType(LibSBML::AST_REAL) 1133 n.setValue(1.6) 1134 i = n.setUnits( "mole") 1135 assert( i == LibSBML::LIBSBML_OPERATION_SUCCESS ) 1136 assert( n.isSetUnits() == true ) 1137 assert (( "mole" == n.getUnits() )) 1138 i = n.unsetUnits() 1139 assert( i == LibSBML::LIBSBML_OPERATION_SUCCESS ) 1140 assert( n.isSetUnits() == false ) 1141 assert (( "" == n.getUnits() )) 1142 i = n.setUnits( "1mole") 1143 assert( i == LibSBML::LIBSBML_INVALID_ATTRIBUTE_VALUE ) 1144 assert( n.isSetUnits() == false ) 1145 n.setType(LibSBML::AST_FUNCTION) 1146 i = n.setUnits( "mole") 1147 assert( i == LibSBML::LIBSBML_UNEXPECTED_ATTRIBUTE ) 1148 assert( n.isSetUnits() == false ) 1149 assert (( "" == n.getUnits() )) 1150 n = nil 1151 end 1152 1153end 1154 1155