1 /* 2 * @file TestASTNode.java 3 * @brief ASTNode unit tests 4 * 5 * @author Akiya Jouraku (Java conversion) 6 * @author Ben Bornstein 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 (C) 2020 jointly by the following organizations: 22 * 1. California Institute of Technology, Pasadena, CA, USA 23 * 2. University of Heidelberg, Heidelberg, Germany 24 * 3. University College London, London, UK 25 * 26 * Copyright 2005-2010 California Institute of Technology. 27 * Copyright 2002-2005 California Institute of Technology and 28 * Japan Science and Technology Corporation. 29 * 30 * This library is free software; you can redistribute it and/or modify it 31 * under the terms of the GNU Lesser General Public License as published by 32 * the Free Software Foundation. A copy of the license agreement is provided 33 * in the file named "LICENSE.txt" included with this software distribution 34 * and also available online as http://sbml.org/software/libsbml/license.html 35 * ----------------------------------------------------------------------------- 36 */ 37 38 package org.sbml.libsbml.test.math; 39 40 import org.sbml.libsbml.*; 41 42 import java.io.File; 43 import java.lang.AssertionError; 44 45 public class TestASTNode { 46 assertTrue(boolean condition)47 static void assertTrue(boolean condition) throws AssertionError 48 { 49 if (condition == true) 50 { 51 return; 52 } 53 throw new AssertionError(); 54 } 55 assertEquals(Object a, Object b)56 static void assertEquals(Object a, Object b) throws AssertionError 57 { 58 if ( (a == null) && (b == null) ) 59 { 60 return; 61 } 62 else if ( (a == null) || (b == null) ) 63 { 64 throw new AssertionError(); 65 } 66 else if (a.equals(b)) 67 { 68 return; 69 } 70 71 throw new AssertionError(); 72 } 73 assertNotEquals(Object a, Object b)74 static void assertNotEquals(Object a, Object b) throws AssertionError 75 { 76 if ( (a == null) && (b == null) ) 77 { 78 throw new AssertionError(); 79 } 80 else if ( (a == null) || (b == null) ) 81 { 82 return; 83 } 84 else if (a.equals(b)) 85 { 86 throw new AssertionError(); 87 } 88 } 89 assertEquals(boolean a, boolean b)90 static void assertEquals(boolean a, boolean b) throws AssertionError 91 { 92 if ( a == b ) 93 { 94 return; 95 } 96 throw new AssertionError(); 97 } 98 assertNotEquals(boolean a, boolean b)99 static void assertNotEquals(boolean a, boolean b) throws AssertionError 100 { 101 if ( a != b ) 102 { 103 return; 104 } 105 throw new AssertionError(); 106 } 107 assertEquals(int a, int b)108 static void assertEquals(int a, int b) throws AssertionError 109 { 110 if ( a == b ) 111 { 112 return; 113 } 114 throw new AssertionError(); 115 } 116 assertNotEquals(int a, int b)117 static void assertNotEquals(int a, int b) throws AssertionError 118 { 119 if ( a != b ) 120 { 121 return; 122 } 123 throw new AssertionError(); 124 } 125 126 public static final double DBL_EPSILON = 2.2204460492503131e-016; 127 test_ASTNode_addChild1()128 public void test_ASTNode_addChild1() 129 { 130 ASTNode node = new ASTNode(); 131 ASTNode c1 = new ASTNode(); 132 ASTNode c2 = new ASTNode(); 133 ASTNode c1_1 = new ASTNode(); 134 int i = 0; 135 node.setType(libsbml.AST_LOGICAL_AND); 136 c1.setName( "a"); 137 c2.setName( "b"); 138 node.addChild(c1); 139 node.addChild(c2); 140 assertTrue( node.getNumChildren() == 2 ); 141 assertTrue(libsbml.formulaToString(node).equals( "and(a, b)")); 142 c1_1.setName( "d"); 143 i = node.addChild(c1_1); 144 assertTrue( i == libsbml.LIBSBML_OPERATION_SUCCESS ); 145 assertTrue( node.getNumChildren() == 3 ); 146 assertTrue(libsbml.formulaToString(node).equals( "and(a, b, d)")); 147 assertTrue(node.getChild(0).getName().equals( "a")); 148 assertTrue(node.getChild(1).getName().equals( "b")); 149 assertTrue(node.getChild(2).getName().equals( "d")); 150 node = null; 151 } 152 test_ASTNode_addSemanticsAnnotation()153 public void test_ASTNode_addSemanticsAnnotation() 154 { 155 XMLNode ann = new XMLNode(); 156 ASTNode node = new ASTNode(); 157 int i = 0; 158 i = node.addSemanticsAnnotation(ann); 159 assertTrue( i == libsbml.LIBSBML_OPERATION_SUCCESS ); 160 assertTrue( node.getNumSemanticsAnnotations() == 1 ); 161 i = node.addSemanticsAnnotation(null); 162 assertTrue( i == libsbml.LIBSBML_OPERATION_FAILED ); 163 assertTrue( node.getNumSemanticsAnnotations() == 1 ); 164 node = null; 165 } 166 test_ASTNode_avogadro()167 public void test_ASTNode_avogadro() 168 { 169 ASTNode n = new ASTNode(); 170 n.setType(libsbml.AST_NAME_AVOGADRO); 171 n.setName( "NA"); 172 assertTrue(n.getName().equals( "NA")); 173 double val = n.getReal(); 174 assertTrue( val == 6.02214179e23 ); 175 assertTrue(true == n.isConstant()); 176 n = null; 177 } 178 test_ASTNode_avogadro_bug()179 public void test_ASTNode_avogadro_bug() 180 { 181 ASTNode n = new ASTNode(); 182 n.setName( "NA"); 183 n.setType(libsbml.AST_NAME_AVOGADRO); 184 assertTrue(n.getName().equals( "NA")); 185 double val = n.getReal(); 186 assertTrue( val == 6.02214179e23 ); 187 assertTrue(true == n.isConstant()); 188 n = null; 189 } 190 test_ASTNode_canonicalizeConstants()191 public void test_ASTNode_canonicalizeConstants() 192 { 193 ASTNode n = new ASTNode(); 194 n.setName( "ExponentialE"); 195 assertEquals( true, n.isName() ); 196 n.canonicalize(); 197 assertTrue( n.getType() == libsbml.AST_CONSTANT_E ); 198 n.setType(libsbml.AST_NAME); 199 n.setName( "False"); 200 assertEquals( true, n.isName() ); 201 n.canonicalize(); 202 assertTrue( n.getType() == libsbml.AST_CONSTANT_FALSE ); 203 n.setType(libsbml.AST_NAME); 204 n.setName( "Pi"); 205 assertEquals( true, n.isName() ); 206 n.canonicalize(); 207 assertTrue( n.getType() == libsbml.AST_CONSTANT_PI ); 208 n.setType(libsbml.AST_NAME); 209 n.setName( "True"); 210 assertEquals( true, n.isName() ); 211 n.canonicalize(); 212 assertTrue( n.getType() == libsbml.AST_CONSTANT_TRUE ); 213 n.setType(libsbml.AST_NAME); 214 n.setName( "Foo"); 215 assertEquals( true, n.isName() ); 216 n.canonicalize(); 217 assertEquals( true, n.isName() ); 218 n = null; 219 } 220 test_ASTNode_canonicalizeFunctions()221 public void test_ASTNode_canonicalizeFunctions() 222 { 223 ASTNode n = new ASTNode(libsbml.AST_FUNCTION); 224 n.setName( "abs"); 225 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 226 n.canonicalize(); 227 assertTrue( n.getType() == libsbml.AST_FUNCTION_ABS ); 228 n.setType(libsbml.AST_FUNCTION); 229 n.setName( "arccos"); 230 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 231 n.canonicalize(); 232 assertTrue( n.getType() == libsbml.AST_FUNCTION_ARCCOS ); 233 n.setType(libsbml.AST_FUNCTION); 234 n.setName( "arccosh"); 235 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 236 n.canonicalize(); 237 assertTrue( n.getType() == libsbml.AST_FUNCTION_ARCCOSH ); 238 n.setType(libsbml.AST_FUNCTION); 239 n.setName( "arccot"); 240 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 241 n.canonicalize(); 242 assertTrue( n.getType() == libsbml.AST_FUNCTION_ARCCOT ); 243 n.setType(libsbml.AST_FUNCTION); 244 n.setName( "arccoth"); 245 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 246 n.canonicalize(); 247 assertTrue( n.getType() == libsbml.AST_FUNCTION_ARCCOTH ); 248 n.setType(libsbml.AST_FUNCTION); 249 n.setName( "arccsc"); 250 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 251 n.canonicalize(); 252 assertTrue( n.getType() == libsbml.AST_FUNCTION_ARCCSC ); 253 n.setType(libsbml.AST_FUNCTION); 254 n.setName( "arccsch"); 255 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 256 n.canonicalize(); 257 assertTrue( n.getType() == libsbml.AST_FUNCTION_ARCCSCH ); 258 n.setType(libsbml.AST_FUNCTION); 259 n.setName( "arcsec"); 260 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 261 n.canonicalize(); 262 assertTrue( n.getType() == libsbml.AST_FUNCTION_ARCSEC ); 263 n.setType(libsbml.AST_FUNCTION); 264 n.setName( "arcsech"); 265 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 266 n.canonicalize(); 267 assertTrue( n.getType() == libsbml.AST_FUNCTION_ARCSECH ); 268 n.setType(libsbml.AST_FUNCTION); 269 n.setName( "arcsin"); 270 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 271 n.canonicalize(); 272 assertTrue( n.getType() == libsbml.AST_FUNCTION_ARCSIN ); 273 n.setType(libsbml.AST_FUNCTION); 274 n.setName( "arcsinh"); 275 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 276 n.canonicalize(); 277 assertTrue( n.getType() == libsbml.AST_FUNCTION_ARCSINH ); 278 n.setType(libsbml.AST_FUNCTION); 279 n.setName( "arctan"); 280 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 281 n.canonicalize(); 282 assertTrue( n.getType() == libsbml.AST_FUNCTION_ARCTAN ); 283 n.setType(libsbml.AST_FUNCTION); 284 n.setName( "arctanh"); 285 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 286 n.canonicalize(); 287 assertTrue( n.getType() == libsbml.AST_FUNCTION_ARCTANH ); 288 n.setType(libsbml.AST_FUNCTION); 289 n.setName( "ceiling"); 290 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 291 n.canonicalize(); 292 assertTrue( n.getType() == libsbml.AST_FUNCTION_CEILING ); 293 n.setType(libsbml.AST_FUNCTION); 294 n.setName( "cos"); 295 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 296 n.canonicalize(); 297 assertTrue( n.getType() == libsbml.AST_FUNCTION_COS ); 298 n.setType(libsbml.AST_FUNCTION); 299 n.setName( "cosh"); 300 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 301 n.canonicalize(); 302 assertTrue( n.getType() == libsbml.AST_FUNCTION_COSH ); 303 n.setType(libsbml.AST_FUNCTION); 304 n.setName( "cot"); 305 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 306 n.canonicalize(); 307 assertTrue( n.getType() == libsbml.AST_FUNCTION_COT ); 308 n.setType(libsbml.AST_FUNCTION); 309 n.setName( "coth"); 310 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 311 n.canonicalize(); 312 assertTrue( n.getType() == libsbml.AST_FUNCTION_COTH ); 313 n.setType(libsbml.AST_FUNCTION); 314 n.setName( "csc"); 315 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 316 n.canonicalize(); 317 assertTrue( n.getType() == libsbml.AST_FUNCTION_CSC ); 318 n.setType(libsbml.AST_FUNCTION); 319 n.setName( "csch"); 320 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 321 n.canonicalize(); 322 assertTrue( n.getType() == libsbml.AST_FUNCTION_CSCH ); 323 n.setType(libsbml.AST_FUNCTION); 324 n.setName( "exp"); 325 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 326 n.canonicalize(); 327 assertTrue( n.getType() == libsbml.AST_FUNCTION_EXP ); 328 n.setType(libsbml.AST_FUNCTION); 329 n.setName( "factorial"); 330 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 331 n.canonicalize(); 332 assertTrue( n.getType() == libsbml.AST_FUNCTION_FACTORIAL ); 333 n.setType(libsbml.AST_FUNCTION); 334 n.setName( "floor"); 335 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 336 n.canonicalize(); 337 assertTrue( n.getType() == libsbml.AST_FUNCTION_FLOOR ); 338 n.setType(libsbml.AST_FUNCTION); 339 n.setName( "lambda"); 340 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 341 n.canonicalize(); 342 assertTrue( n.getType() == libsbml.AST_LAMBDA ); 343 n.setType(libsbml.AST_FUNCTION); 344 n.setName( "ln"); 345 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 346 n.canonicalize(); 347 assertTrue( n.getType() == libsbml.AST_FUNCTION_LN ); 348 n.setType(libsbml.AST_FUNCTION); 349 n.setName( "log"); 350 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 351 n.canonicalize(); 352 assertTrue( n.getType() == libsbml.AST_FUNCTION_LOG ); 353 n.setType(libsbml.AST_FUNCTION); 354 n.setName( "piecewise"); 355 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 356 n.canonicalize(); 357 assertTrue( n.getType() == libsbml.AST_FUNCTION_PIECEWISE ); 358 n.setType(libsbml.AST_FUNCTION); 359 n.setName( "power"); 360 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 361 n.canonicalize(); 362 assertTrue( n.getType() == libsbml.AST_FUNCTION_POWER ); 363 n.setType(libsbml.AST_FUNCTION); 364 n.setName( "root"); 365 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 366 n.canonicalize(); 367 assertTrue( n.getType() == libsbml.AST_FUNCTION_ROOT ); 368 n.setType(libsbml.AST_FUNCTION); 369 n.setName( "sec"); 370 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 371 n.canonicalize(); 372 assertTrue( n.getType() == libsbml.AST_FUNCTION_SEC ); 373 n.setType(libsbml.AST_FUNCTION); 374 n.setName( "sech"); 375 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 376 n.canonicalize(); 377 assertTrue( n.getType() == libsbml.AST_FUNCTION_SECH ); 378 n.setType(libsbml.AST_FUNCTION); 379 n.setName( "sin"); 380 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 381 n.canonicalize(); 382 assertTrue( n.getType() == libsbml.AST_FUNCTION_SIN ); 383 n.setType(libsbml.AST_FUNCTION); 384 n.setName( "sinh"); 385 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 386 n.canonicalize(); 387 assertTrue( n.getType() == libsbml.AST_FUNCTION_SINH ); 388 n.setType(libsbml.AST_FUNCTION); 389 n.setName( "tan"); 390 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 391 n.canonicalize(); 392 assertTrue( n.getType() == libsbml.AST_FUNCTION_TAN ); 393 n.setType(libsbml.AST_FUNCTION); 394 n.setName( "tanh"); 395 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 396 n.canonicalize(); 397 assertTrue( n.getType() == libsbml.AST_FUNCTION_TANH ); 398 n.setType(libsbml.AST_FUNCTION); 399 n.setName( "Foo"); 400 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 401 n.canonicalize(); 402 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 403 n = null; 404 } 405 test_ASTNode_canonicalizeFunctionsL1()406 public void test_ASTNode_canonicalizeFunctionsL1() 407 { 408 ASTNode n = new ASTNode(libsbml.AST_FUNCTION); 409 ASTNode c; 410 n.setName( "acos"); 411 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 412 n.canonicalize(); 413 assertTrue( n.getType() == libsbml.AST_FUNCTION_ARCCOS ); 414 n.setType(libsbml.AST_FUNCTION); 415 n.setName( "asin"); 416 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 417 n.canonicalize(); 418 assertTrue( n.getType() == libsbml.AST_FUNCTION_ARCSIN ); 419 n.setType(libsbml.AST_FUNCTION); 420 n.setName( "atan"); 421 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 422 n.canonicalize(); 423 assertTrue( n.getType() == libsbml.AST_FUNCTION_ARCTAN ); 424 n.setType(libsbml.AST_FUNCTION); 425 n.setName( "ceil"); 426 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 427 n.canonicalize(); 428 assertTrue( n.getType() == libsbml.AST_FUNCTION_CEILING ); 429 n.setType(libsbml.AST_FUNCTION); 430 n.setName( "pow"); 431 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 432 n.canonicalize(); 433 assertTrue( n.getType() == libsbml.AST_FUNCTION_POWER ); 434 n = null; 435 n = new ASTNode(libsbml.AST_FUNCTION); 436 n.setName( "log"); 437 c = new ASTNode(); 438 c.setName( "x"); 439 n.addChild(c); 440 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 441 assertTrue( n.getNumChildren() == 1 ); 442 n.canonicalize(); 443 assertTrue( n.getType() == libsbml.AST_FUNCTION_LN ); 444 assertTrue( n.getNumChildren() == 1 ); 445 n.setType(libsbml.AST_FUNCTION); 446 c = new ASTNode(); 447 c.setName( "y"); 448 n.addChild(c); 449 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 450 assertTrue( n.getNumChildren() == 2 ); 451 n.canonicalize(); 452 assertTrue( n.getType() == libsbml.AST_FUNCTION_LOG ); 453 n = null; 454 n = new ASTNode(libsbml.AST_FUNCTION); 455 n.setName( "log10"); 456 c = new ASTNode(); 457 c.setName( "x"); 458 n.addChild(c); 459 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 460 assertTrue( n.getNumChildren() == 1 ); 461 n.canonicalize(); 462 assertTrue( n.getType() == libsbml.AST_FUNCTION_LOG ); 463 assertTrue( n.getNumChildren() == 2 ); 464 c = n.getLeftChild(); 465 assertTrue( c.getType() == libsbml.AST_INTEGER ); 466 assertTrue( c.getInteger() == 10 ); 467 c = n.getRightChild(); 468 assertTrue( c.getType() == libsbml.AST_NAME ); 469 assertTrue(c.getName().equals( "x")); 470 n = null; 471 n = new ASTNode(libsbml.AST_FUNCTION); 472 n.setName( "sqr"); 473 c = new ASTNode(); 474 c.setName( "x"); 475 n.addChild(c); 476 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 477 assertTrue( n.getNumChildren() == 1 ); 478 n.canonicalize(); 479 assertTrue( n.getType() == libsbml.AST_FUNCTION_POWER ); 480 assertTrue( n.getNumChildren() == 2 ); 481 c = n.getLeftChild(); 482 assertTrue( c.getType() == libsbml.AST_NAME ); 483 assertTrue(c.getName().equals( "x")); 484 c = n.getRightChild(); 485 assertTrue( c.getType() == libsbml.AST_INTEGER ); 486 assertTrue( c.getInteger() == 2 ); 487 n = null; 488 n = new ASTNode(libsbml.AST_FUNCTION); 489 n.setName( "sqrt"); 490 c = new ASTNode(); 491 c.setName( "x"); 492 n.addChild(c); 493 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 494 assertTrue( n.getNumChildren() == 1 ); 495 n.canonicalize(); 496 assertTrue( n.getType() == libsbml.AST_FUNCTION_ROOT ); 497 assertTrue( n.getNumChildren() == 2 ); 498 c = n.getLeftChild(); 499 assertTrue( c.getType() == libsbml.AST_INTEGER ); 500 assertTrue( c.getInteger() == 2 ); 501 c = n.getRightChild(); 502 assertTrue( c.getType() == libsbml.AST_NAME ); 503 assertTrue(c.getName().equals( "x")); 504 n = null; 505 } 506 test_ASTNode_canonicalizeLogical()507 public void test_ASTNode_canonicalizeLogical() 508 { 509 ASTNode n = new ASTNode(libsbml.AST_FUNCTION); 510 n.setName( "and"); 511 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 512 n.canonicalize(); 513 assertTrue( n.getType() == libsbml.AST_LOGICAL_AND ); 514 n.setType(libsbml.AST_FUNCTION); 515 n.setName( "not"); 516 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 517 n.canonicalize(); 518 assertTrue( n.getType() == libsbml.AST_LOGICAL_NOT ); 519 n.setType(libsbml.AST_FUNCTION); 520 n.setName( "or"); 521 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 522 n.canonicalize(); 523 assertTrue( n.getType() == libsbml.AST_LOGICAL_OR ); 524 n.setType(libsbml.AST_FUNCTION); 525 n.setName( "xor"); 526 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 527 n.canonicalize(); 528 assertTrue( n.getType() == libsbml.AST_LOGICAL_XOR ); 529 n.setType(libsbml.AST_FUNCTION); 530 n = null; 531 } 532 test_ASTNode_canonicalizeRelational()533 public void test_ASTNode_canonicalizeRelational() 534 { 535 ASTNode n = new ASTNode(libsbml.AST_FUNCTION); 536 n.setName( "eq"); 537 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 538 n.canonicalize(); 539 assertTrue( n.getType() == libsbml.AST_RELATIONAL_EQ ); 540 n.setType(libsbml.AST_FUNCTION); 541 n.setName( "geq"); 542 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 543 n.canonicalize(); 544 assertTrue( n.getType() == libsbml.AST_RELATIONAL_GEQ ); 545 n.setType(libsbml.AST_FUNCTION); 546 n.setName( "gt"); 547 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 548 n.canonicalize(); 549 assertTrue( n.getType() == libsbml.AST_RELATIONAL_GT ); 550 n.setType(libsbml.AST_FUNCTION); 551 n.setName( "leq"); 552 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 553 n.canonicalize(); 554 assertTrue( n.getType() == libsbml.AST_RELATIONAL_LEQ ); 555 n.setType(libsbml.AST_FUNCTION); 556 n.setName( "lt"); 557 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 558 n.canonicalize(); 559 assertTrue( n.getType() == libsbml.AST_RELATIONAL_LT ); 560 n.setType(libsbml.AST_FUNCTION); 561 n.setName( "neq"); 562 assertTrue( n.getType() == libsbml.AST_FUNCTION ); 563 n.canonicalize(); 564 assertTrue( n.getType() == libsbml.AST_RELATIONAL_NEQ ); 565 n.setType(libsbml.AST_FUNCTION); 566 n = null; 567 } 568 test_ASTNode_children()569 public void test_ASTNode_children() 570 { 571 ASTNode parent = new ASTNode(); 572 ASTNode left = new ASTNode(); 573 ASTNode right = new ASTNode(); 574 ASTNode right2 = new ASTNode(); 575 parent.setType(libsbml.AST_PLUS); 576 left.setValue(1); 577 right.setValue(2); 578 right2.setValue(3); 579 parent.addChild(left); 580 parent.addChild(right); 581 assertTrue( parent.getNumChildren() == 2 ); 582 assertTrue( left.getNumChildren() == 0 ); 583 assertTrue( right.getNumChildren() == 0 ); 584 assertTrue( parent.getLeftChild().equals(left) ); 585 assertTrue( parent.getRightChild().equals(right) ); 586 assertTrue( parent.getChild(0).equals(left) ); 587 assertTrue( parent.getChild(1).equals(right) ); 588 assertTrue( parent.getChild(2) == null ); 589 parent.addChild(right2); 590 assertTrue( parent.getNumChildren() == 3 ); 591 assertTrue( left.getNumChildren() == 0 ); 592 assertTrue( right.getNumChildren() == 0 ); 593 assertTrue( right2.getNumChildren() == 0 ); 594 assertTrue( parent.getLeftChild().equals(left) ); 595 assertTrue( parent.getRightChild().equals(right2) ); 596 assertTrue( parent.getChild(0).equals(left) ); 597 assertTrue( parent.getChild(1).equals(right) ); 598 assertTrue( parent.getChild(2).equals(right2) ); 599 assertTrue( parent.getChild(3) == null ); 600 parent = null; 601 } 602 test_ASTNode_create()603 public void test_ASTNode_create() 604 { 605 ASTNode n = new ASTNode(); 606 EventAssignment ea = new EventAssignment(2,4); 607 assertTrue( n.getType() == libsbml.AST_UNKNOWN ); 608 assertTrue( n.getCharacter() == '\0' ); 609 assertTrue( n.getName() == null ); 610 assertTrue( n.getInteger() == 0 ); 611 assertTrue( n.getExponent() == 0 ); 612 assertTrue( n.getNumChildren() == 0 ); 613 assertTrue( n.getParentSBMLObject() == null ); 614 ea = null; 615 n = null; 616 } 617 test_ASTNode_deepCopy_1()618 public void test_ASTNode_deepCopy_1() 619 { 620 ASTNode node = new ASTNode(); 621 ASTNode child, copy; 622 node.setCharacter( '+'); 623 node.addChild(new ASTNode()); 624 node.addChild(new ASTNode()); 625 node.getLeftChild().setValue(1); 626 node.getRightChild().setValue(2); 627 assertTrue( node.getType() == libsbml.AST_PLUS ); 628 assertTrue( node.getCharacter() == '+' ); 629 assertTrue( node.getNumChildren() == 2 ); 630 child = node.getLeftChild(); 631 assertTrue( child.getType() == libsbml.AST_INTEGER ); 632 assertTrue( child.getInteger() == 1 ); 633 assertTrue( child.getNumChildren() == 0 ); 634 child = node.getRightChild(); 635 assertTrue( child.getType() == libsbml.AST_INTEGER ); 636 assertTrue( child.getInteger() == 2 ); 637 assertTrue( child.getNumChildren() == 0 ); 638 copy = (ASTNode)node.deepCopy(); 639 assertTrue( !copy.equals(node) ); 640 assertTrue( copy.getType() == libsbml.AST_PLUS ); 641 assertTrue( copy.getCharacter() == '+' ); 642 assertTrue( copy.getNumChildren() == 2 ); 643 child = copy.getLeftChild(); 644 assertTrue( !child.equals(node.getLeftChild()) ); 645 assertTrue( child.getType() == libsbml.AST_INTEGER ); 646 assertTrue( child.getInteger() == 1 ); 647 assertTrue( child.getNumChildren() == 0 ); 648 child = copy.getRightChild(); 649 assertTrue( !child.equals(node.getRightChild()) ); 650 assertTrue( child.getType() == libsbml.AST_INTEGER ); 651 assertTrue( child.getInteger() == 2 ); 652 assertTrue( child.getNumChildren() == 0 ); 653 node = null; 654 copy = null; 655 } 656 test_ASTNode_deepCopy_2()657 public void test_ASTNode_deepCopy_2() 658 { 659 ASTNode node = new ASTNode(); 660 ASTNode copy; 661 node.setName( "Foo"); 662 assertTrue( node.getType() == libsbml.AST_NAME ); 663 assertTrue(node.getName().equals( "Foo")); 664 assertTrue( node.getNumChildren() == 0 ); 665 copy = (ASTNode)node.deepCopy(); 666 assertTrue( !copy.equals(node) ); 667 assertTrue( copy.getType() == libsbml.AST_NAME ); 668 assertTrue(copy.getName().equals( "Foo")); 669 assertTrue( copy.getNumChildren() == 0 ); 670 node = null; 671 copy = null; 672 } 673 test_ASTNode_deepCopy_3()674 public void test_ASTNode_deepCopy_3() 675 { 676 ASTNode node = new ASTNode(libsbml.AST_FUNCTION); 677 ASTNode copy; 678 node.setName( "Foo"); 679 assertTrue( node.getType() == libsbml.AST_FUNCTION ); 680 assertTrue(node.getName().equals( "Foo")); 681 assertTrue( node.getNumChildren() == 0 ); 682 copy = (ASTNode)node.deepCopy(); 683 assertTrue( !copy.equals(node) ); 684 assertTrue( copy.getType() == libsbml.AST_FUNCTION ); 685 assertTrue(copy.getName().equals( "Foo")); 686 assertTrue( copy.getNumChildren() == 0 ); 687 node = null; 688 copy = null; 689 } 690 test_ASTNode_deepCopy_4()691 public void test_ASTNode_deepCopy_4() 692 { 693 ASTNode node = new ASTNode(libsbml.AST_FUNCTION_ABS); 694 ASTNode copy; 695 node.setName( "ABS"); 696 assertTrue( node.getType() == libsbml.AST_FUNCTION_ABS ); 697 assertTrue(node.getName().equals( "ABS")); 698 assertTrue( node.getNumChildren() == 0 ); 699 copy = (ASTNode)node.deepCopy(); 700 assertTrue( !copy.equals(node) ); 701 assertTrue( copy.getType() == libsbml.AST_FUNCTION_ABS ); 702 assertTrue(copy.getName().equals( "ABS")); 703 assertTrue( copy.getNumChildren() == 0 ); 704 node = null; 705 copy = null; 706 } 707 test_ASTNode_freeName()708 public void test_ASTNode_freeName() 709 { 710 ASTNode node = new ASTNode(); 711 int i = 0; 712 i = node.setName( "a"); 713 assertTrue( i == libsbml.LIBSBML_OPERATION_SUCCESS ); 714 assertTrue(libsbml.formulaToString(node).equals( "a")); 715 assertTrue(node.getName().equals( "a")); 716 i = node.freeName(); 717 assertTrue( i == libsbml.LIBSBML_OPERATION_SUCCESS ); 718 assertTrue( node.getName() == null ); 719 i = node.freeName(); 720 assertTrue( i == libsbml.LIBSBML_UNEXPECTED_ATTRIBUTE ); 721 assertTrue( node.getName() == null ); 722 node.setType(libsbml.AST_UNKNOWN); 723 i = node.freeName(); 724 assertTrue( i == libsbml.LIBSBML_UNEXPECTED_ATTRIBUTE ); 725 assertTrue( node.getName() == null ); 726 node = null; 727 } 728 test_ASTNode_free_NULL()729 public void test_ASTNode_free_NULL() 730 { 731 } 732 test_ASTNode_getName()733 public void test_ASTNode_getName() 734 { 735 ASTNode n = new ASTNode(); 736 n.setName( "foo"); 737 assertTrue(n.getName().equals( "foo")); 738 n.setType(libsbml.AST_NAME_TIME); 739 assertTrue(n.getName().equals( "foo")); 740 n.setName(null); 741 assertTrue( n.getName() == null ); 742 n.setType(libsbml.AST_CONSTANT_E); 743 assertTrue(n.getName().equals( "exponentiale")); 744 n.setType(libsbml.AST_CONSTANT_FALSE); 745 assertTrue(n.getName().equals( "false")); 746 n.setType(libsbml.AST_CONSTANT_PI); 747 assertTrue(n.getName().equals( "pi")); 748 n.setType(libsbml.AST_CONSTANT_TRUE); 749 assertTrue(n.getName().equals( "true")); 750 n.setType(libsbml.AST_LAMBDA); 751 assertTrue(n.getName().equals( "lambda")); 752 n.setType(libsbml.AST_FUNCTION); 753 n.setName( "f"); 754 assertTrue(n.getName().equals( "f")); 755 n.setType(libsbml.AST_FUNCTION_DELAY); 756 assertTrue(n.getName().equals( "f")); 757 n.setName(null); 758 assertTrue(n.getName().equals( "delay")); 759 n.setType(libsbml.AST_FUNCTION); 760 assertTrue( n.getName() == null ); 761 n.setType(libsbml.AST_FUNCTION_ABS); 762 assertTrue(n.getName().equals( "abs")); 763 n.setType(libsbml.AST_FUNCTION_ARCCOS); 764 assertTrue(n.getName().equals( "arccos")); 765 n.setType(libsbml.AST_FUNCTION_TAN); 766 assertTrue(n.getName().equals( "tan")); 767 n.setType(libsbml.AST_FUNCTION_TANH); 768 assertTrue(n.getName().equals( "tanh")); 769 n.setType(libsbml.AST_LOGICAL_AND); 770 assertTrue(n.getName().equals( "and")); 771 n.setType(libsbml.AST_LOGICAL_NOT); 772 assertTrue(n.getName().equals( "not")); 773 n.setType(libsbml.AST_LOGICAL_OR); 774 assertTrue(n.getName().equals( "or")); 775 n.setType(libsbml.AST_LOGICAL_XOR); 776 assertTrue(n.getName().equals( "xor")); 777 n.setType(libsbml.AST_RELATIONAL_EQ); 778 assertTrue(n.getName().equals( "eq")); 779 n.setType(libsbml.AST_RELATIONAL_GEQ); 780 assertTrue(n.getName().equals( "geq")); 781 n.setType(libsbml.AST_RELATIONAL_LT); 782 assertTrue(n.getName().equals( "lt")); 783 n.setType(libsbml.AST_RELATIONAL_NEQ); 784 assertTrue(n.getName().equals( "neq")); 785 n = null; 786 } 787 test_ASTNode_getPrecedence()788 public void test_ASTNode_getPrecedence() 789 { 790 ASTNode n = new ASTNode(); 791 n.setType(libsbml.AST_PLUS); 792 assertTrue( n.getPrecedence() == 2 ); 793 n.setType(libsbml.AST_MINUS); 794 assertTrue( n.getPrecedence() == 2 ); 795 n.setType(libsbml.AST_TIMES); 796 assertTrue( n.getPrecedence() == 3 ); 797 n.setType(libsbml.AST_DIVIDE); 798 assertTrue( n.getPrecedence() == 3 ); 799 n.setType(libsbml.AST_POWER); 800 assertTrue( n.getPrecedence() == 4 ); 801 n.setType(libsbml.AST_MINUS); 802 n.addChild(new ASTNode(libsbml.AST_NAME)); 803 assertTrue( n.isUMinus() == true ); 804 assertTrue( n.getPrecedence() == 5 ); 805 n.setType(libsbml.AST_NAME); 806 assertTrue( n.getPrecedence() == 6 ); 807 n.setType(libsbml.AST_FUNCTION); 808 assertTrue( n.getPrecedence() == 6 ); 809 n = null; 810 } 811 test_ASTNode_getReal()812 public void test_ASTNode_getReal() 813 { 814 ASTNode n = new ASTNode(); 815 n.setType(libsbml.AST_REAL); 816 n.setValue(1.6); 817 assertTrue( n.getReal() == 1.6 ); 818 n.setType(libsbml.AST_REAL_E); 819 n.setValue(12.3,3); 820 double val = java.lang.Math.abs(n.getReal() - 12300.0); 821 assertTrue( val < DBL_EPSILON ); 822 n.setType(libsbml.AST_RATIONAL); 823 n.setValue(1,2); 824 assertTrue( n.getReal() == 0.5 ); 825 n = null; 826 } 827 828 public void test_ASTNode_insertChild() 829 { 830 ASTNode node = new ASTNode(); 831 ASTNode c1 = new ASTNode(); 832 ASTNode c2 = new ASTNode(); 833 ASTNode c3 = new ASTNode(); 834 ASTNode newc = new ASTNode(); 835 ASTNode newc1 = new ASTNode(); 836 int i = 0; 837 node.setType(libsbml.AST_LOGICAL_AND); 838 c1.setName( "a"); 839 c2.setName( "b"); 840 c3.setName( "c"); 841 node.addChild(c1); 842 node.addChild(c2); 843 node.addChild(c3); 844 assertTrue( node.getNumChildren() == 3 ); 845 assertTrue(libsbml.formulaToString(node).equals( "and(a, b, c)")); 846 newc.setName( "d"); 847 newc1.setName( "e"); 848 i = node.insertChild(1,newc); 849 assertTrue( i == libsbml.LIBSBML_OPERATION_SUCCESS ); 850 assertTrue( node.getNumChildren() == 4 ); 851 assertTrue(libsbml.formulaToString(node).equals( "and(a, d, b, c)")); 852 i = node.insertChild(5,newc); 853 assertTrue( i == libsbml.LIBSBML_INDEX_EXCEEDS_SIZE ); 854 assertTrue( node.getNumChildren() == 4 ); 855 assertTrue(libsbml.formulaToString(node).equals( "and(a, d, b, c)")); 856 i = node.insertChild(2,newc1); 857 assertTrue( i == libsbml.LIBSBML_OPERATION_SUCCESS ); 858 assertTrue( node.getNumChildren() == 5 ); 859 assertTrue(libsbml.formulaToString(node).equals( "and(a, d, e, b, c)")); 860 node = null; 861 } 862 863 public void test_ASTNode_isLog10() 864 { 865 ASTNode n = new ASTNode(); 866 ASTNode c; 867 n.setType(libsbml.AST_FUNCTION); 868 assertTrue( n.isLog10() == false ); 869 n.setType(libsbml.AST_FUNCTION_LOG); 870 assertTrue( n.isLog10() == false ); 871 c = new ASTNode(); 872 n.addChild(c); 873 c.setValue(10); 874 assertTrue( n.isLog10() == false ); 875 n.addChild(new ASTNode()); 876 assertTrue( n.isLog10() == true ); 877 c.setValue(2); 878 assertTrue( n.isLog10() == false ); 879 n = null; 880 } 881 882 public void test_ASTNode_isSqrt() 883 { 884 ASTNode n = new ASTNode(); 885 ASTNode c; 886 n.setType(libsbml.AST_FUNCTION); 887 assertTrue( n.isSqrt() == false ); 888 n.setType(libsbml.AST_FUNCTION_ROOT); 889 assertTrue( n.isSqrt() == false ); 890 c = new ASTNode(); 891 n.addChild(c); 892 c.setValue(2); 893 assertTrue( n.isSqrt() == false ); 894 n.addChild(new ASTNode()); 895 assertTrue( n.isSqrt() == true ); 896 c.setValue(3); 897 assertTrue( n.isSqrt() == false ); 898 n = null; 899 } 900 901 public void test_ASTNode_isUMinus() 902 { 903 ASTNode n = new ASTNode(); 904 n.setType(libsbml.AST_MINUS); 905 assertTrue( n.isUMinus() == false ); 906 n.addChild(new ASTNode(libsbml.AST_NAME)); 907 assertTrue( n.isUMinus() == true ); 908 n = null; 909 } 910 911 public void test_ASTNode_no_children() 912 { 913 ASTNode node = new ASTNode(); 914 assertTrue( node.getNumChildren() == 0 ); 915 assertTrue( node.getLeftChild() == null ); 916 assertTrue( node.getRightChild() == null ); 917 assertTrue( node.getChild(0) == null ); 918 node = null; 919 } 920 921 public void test_ASTNode_one_child() 922 { 923 ASTNode node = new ASTNode(); 924 ASTNode child = new ASTNode(); 925 node.addChild(child); 926 assertTrue( node.getNumChildren() == 1 ); 927 assertTrue( node.getLeftChild().equals(child) ); 928 assertTrue( node.getRightChild() == null ); 929 assertTrue( node.getChild(0).equals(child) ); 930 assertTrue( node.getChild(1) == null ); 931 node = null; 932 } 933 934 public void test_ASTNode_prependChild1() 935 { 936 ASTNode node = new ASTNode(); 937 ASTNode c1 = new ASTNode(); 938 ASTNode c2 = new ASTNode(); 939 ASTNode c1_1 = new ASTNode(); 940 int i = 0; 941 node.setType(libsbml.AST_LOGICAL_AND); 942 c1.setName( "a"); 943 c2.setName( "b"); 944 node.addChild(c1); 945 node.addChild(c2); 946 assertTrue( node.getNumChildren() == 2 ); 947 assertTrue(libsbml.formulaToString(node).equals( "and(a, b)")); 948 c1_1.setName( "d"); 949 i = node.prependChild(c1_1); 950 assertTrue( i == libsbml.LIBSBML_OPERATION_SUCCESS ); 951 assertTrue( node.getNumChildren() == 3 ); 952 assertTrue(libsbml.formulaToString(node).equals( "and(d, a, b)")); 953 assertTrue(node.getChild(0).getName().equals( "d")); 954 assertTrue(node.getChild(1).getName().equals( "a")); 955 assertTrue(node.getChild(2).getName().equals( "b")); 956 node = null; 957 } 958 959 public void test_ASTNode_removeChild() 960 { 961 ASTNode node = new ASTNode(); 962 ASTNode c1 = new ASTNode(); 963 ASTNode c2 = new ASTNode(); 964 int i = 0; 965 node.setType(libsbml.AST_PLUS); 966 c1.setName( "foo"); 967 c2.setName( "foo2"); 968 node.addChild(c1); 969 node.addChild(c2); 970 assertTrue( node.getNumChildren() == 2 ); 971 i = node.removeChild(0); 972 assertTrue( i == libsbml.LIBSBML_OPERATION_SUCCESS ); 973 assertTrue( node.getNumChildren() == 1 ); 974 i = node.removeChild(1); 975 assertTrue( i == libsbml.LIBSBML_INDEX_EXCEEDS_SIZE ); 976 assertTrue( node.getNumChildren() == 1 ); 977 i = node.removeChild(0); 978 assertTrue( i == libsbml.LIBSBML_OPERATION_SUCCESS ); 979 assertTrue( node.getNumChildren() == 0 ); 980 node = null; 981 } 982 983 public void test_ASTNode_replaceChild() 984 { 985 ASTNode node = new ASTNode(); 986 ASTNode c1 = new ASTNode(); 987 ASTNode c2 = new ASTNode(); 988 ASTNode c3 = new ASTNode(); 989 ASTNode newc = new ASTNode(); 990 int i = 0; 991 node.setType(libsbml.AST_LOGICAL_AND); 992 c1.setName( "a"); 993 c2.setName( "b"); 994 c3.setName( "c"); 995 node.addChild(c1); 996 node.addChild(c2); 997 node.addChild(c3); 998 assertTrue( node.getNumChildren() == 3 ); 999 assertTrue(libsbml.formulaToString(node).equals( "and(a, b, c)")); 1000 newc.setName( "d"); 1001 i = node.replaceChild(0,newc); 1002 assertTrue( i == libsbml.LIBSBML_OPERATION_SUCCESS ); 1003 assertTrue( node.getNumChildren() == 3 ); 1004 assertTrue(libsbml.formulaToString(node).equals( "and(d, b, c)")); 1005 i = node.replaceChild(3,newc); 1006 assertTrue( i == libsbml.LIBSBML_INDEX_EXCEEDS_SIZE ); 1007 assertTrue( node.getNumChildren() == 3 ); 1008 assertTrue(libsbml.formulaToString(node).equals( "and(d, b, c)")); 1009 i = node.replaceChild(1,c1); 1010 assertTrue( i == libsbml.LIBSBML_OPERATION_SUCCESS ); 1011 assertTrue( node.getNumChildren() == 3 ); 1012 assertTrue(libsbml.formulaToString(node).equals( "and(d, a, c)")); 1013 node = null; 1014 } 1015 1016 public void test_ASTNode_setCharacter() 1017 { 1018 ASTNode node = new ASTNode(); 1019 node.setName( "foo"); 1020 assertTrue( node.getType() == libsbml.AST_NAME ); 1021 assertTrue( node.getCharacter() == '\0' ); 1022 assertTrue(node.getName().equals( "foo")); 1023 assertTrue( node.getInteger() == 0 ); 1024 assertTrue( node.getReal() == 0 ); 1025 assertTrue( node.getExponent() == 0 ); 1026 assertTrue( node.getDenominator() == 1 ); 1027 node.setCharacter( '+'); 1028 assertTrue( node.getType() == libsbml.AST_PLUS ); 1029 assertTrue( node.getCharacter() == '+' ); 1030 assertTrue( node.getName() == null ); 1031 assertTrue( node.getInteger() == 0 ); 1032 assertTrue( node.getReal() == 0 ); 1033 assertTrue( node.getExponent() == 0 ); 1034 assertTrue( node.getDenominator() == 1 ); 1035 node.setCharacter( '-'); 1036 assertTrue( node.getType() == libsbml.AST_MINUS ); 1037 assertTrue( node.getCharacter() == '-' ); 1038 assertTrue( node.getName() == null ); 1039 assertTrue( node.getInteger() == 0 ); 1040 assertTrue( node.getReal() == 0 ); 1041 assertTrue( node.getExponent() == 0 ); 1042 assertTrue( node.getDenominator() == 1 ); 1043 node.setCharacter( '*'); 1044 assertTrue( node.getType() == libsbml.AST_TIMES ); 1045 assertTrue( node.getCharacter() == '*' ); 1046 assertTrue( node.getName() == null ); 1047 assertTrue( node.getInteger() == 0 ); 1048 assertTrue( node.getReal() == 0 ); 1049 assertTrue( node.getExponent() == 0 ); 1050 assertTrue( node.getDenominator() == 1 ); 1051 node.setCharacter( '/'); 1052 assertTrue( node.getType() == libsbml.AST_DIVIDE ); 1053 assertTrue( node.getCharacter() == '/' ); 1054 assertTrue( node.getName() == null ); 1055 assertTrue( node.getInteger() == 0 ); 1056 assertTrue( node.getReal() == 0 ); 1057 assertTrue( node.getExponent() == 0 ); 1058 assertTrue( node.getDenominator() == 1 ); 1059 node.setCharacter( '^'); 1060 assertTrue( node.getType() == libsbml.AST_POWER ); 1061 assertTrue( node.getCharacter() == '^' ); 1062 assertTrue( node.getName() == null ); 1063 assertTrue( node.getInteger() == 0 ); 1064 assertTrue( node.getReal() == 0 ); 1065 assertTrue( node.getExponent() == 0 ); 1066 assertTrue( node.getDenominator() == 1 ); 1067 node.setCharacter( '$'); 1068 assertTrue( node.getType() == libsbml.AST_UNKNOWN ); 1069 assertTrue( node.getCharacter() == '$' ); 1070 assertTrue( node.getName() == null ); 1071 assertTrue( node.getInteger() == 0 ); 1072 assertTrue( node.getReal() == 0 ); 1073 assertTrue( node.getExponent() == 0 ); 1074 assertTrue( node.getDenominator() == 1 ); 1075 node = null; 1076 } 1077 1078 public void test_ASTNode_setInteger() 1079 { 1080 ASTNode node = new ASTNode(); 1081 node.setName( "foo"); 1082 assertTrue( node.getType() == libsbml.AST_NAME ); 1083 assertTrue(node.getName().equals( "foo")); 1084 assertTrue( node.getCharacter() == '\0' ); 1085 assertTrue( node.getInteger() == 0 ); 1086 assertTrue( node.getReal() == 0 ); 1087 assertTrue( node.getExponent() == 0 ); 1088 assertTrue( node.getDenominator() == 1 ); 1089 node.setValue(3.2); 1090 assertTrue( node.getType() == libsbml.AST_REAL ); 1091 assertTrue( node.getInteger() == 0 ); 1092 assertTrue( node.getName() == null ); 1093 assertTrue( node.getCharacter() == '\0' ); 1094 assertTrue( node.getReal() == 3.2 ); 1095 assertTrue( node.getExponent() == 0 ); 1096 assertTrue( node.getDenominator() == 1 ); 1097 node.setValue(321); 1098 assertTrue( node.getType() == libsbml.AST_INTEGER ); 1099 assertTrue( node.getInteger() == 321 ); 1100 assertTrue( node.getName() == null ); 1101 assertTrue( node.getCharacter() == '\0' ); 1102 assertTrue( node.getReal() == 0 ); 1103 assertTrue( node.getExponent() == 0 ); 1104 assertTrue( node.getDenominator() == 1 ); 1105 node = null; 1106 } 1107 1108 public void test_ASTNode_setName() 1109 { 1110 String name = "foo"; 1111 ASTNode node = new ASTNode(); 1112 assertTrue( node.getType() == libsbml.AST_UNKNOWN ); 1113 node.setName(name); 1114 assertTrue( node.getType() == libsbml.AST_NAME ); 1115 assertTrue(node.getName().equals(name)); 1116 assertTrue( node.getCharacter() == '\0' ); 1117 assertTrue( node.getInteger() == 0 ); 1118 assertTrue( node.getReal() == 0 ); 1119 assertTrue( node.getExponent() == 0 ); 1120 assertTrue( node.getDenominator() == 1 ); 1121 if (node.getName() == name); 1122 { 1123 } 1124 node.setName(null); 1125 assertTrue( node.getType() == libsbml.AST_NAME ); 1126 if (node.getName() != null); 1127 { 1128 } 1129 node.setType(libsbml.AST_FUNCTION_COS); 1130 assertTrue( node.getType() == libsbml.AST_FUNCTION_COS ); 1131 assertTrue(node.getName().equals( "cos")); 1132 assertTrue( node.getCharacter() == '\0' ); 1133 assertTrue( node.getInteger() == 0 ); 1134 assertTrue( node.getReal() == 0 ); 1135 assertTrue( node.getExponent() == 0 ); 1136 assertTrue( node.getDenominator() == 1 ); 1137 node.setType(libsbml.AST_PLUS); 1138 node.setName(name); 1139 assertTrue( node.getType() == libsbml.AST_NAME ); 1140 assertTrue(node.getName().equals(name)); 1141 assertTrue( node.getCharacter() == '+' ); 1142 assertTrue( node.getInteger() == 0 ); 1143 assertTrue( node.getReal() == 0 ); 1144 assertTrue( node.getExponent() == 0 ); 1145 assertTrue( node.getDenominator() == 1 ); 1146 node = null; 1147 } 1148 1149 public void test_ASTNode_setName_override() 1150 { 1151 ASTNode node = new ASTNode(libsbml.AST_FUNCTION_SIN); 1152 assertTrue(node.getName().equals( "sin")); 1153 assertTrue( node.getType() == libsbml.AST_FUNCTION_SIN ); 1154 node.setName( "MySinFunc"); 1155 assertTrue(node.getName().equals( "MySinFunc")); 1156 assertTrue( node.getType() == libsbml.AST_FUNCTION_SIN ); 1157 node.setName(null); 1158 assertTrue(node.getName().equals( "sin")); 1159 assertTrue( node.getType() == libsbml.AST_FUNCTION_SIN ); 1160 node = null; 1161 } 1162 1163 public void test_ASTNode_setReal() 1164 { 1165 ASTNode node = new ASTNode(); 1166 node.setName( "foo"); 1167 assertTrue( node.getType() == libsbml.AST_NAME ); 1168 node.setValue(32.1); 1169 assertTrue( node.getType() == libsbml.AST_REAL ); 1170 assertTrue( node.getInteger() == 0 ); 1171 assertTrue( node.getName() == null ); 1172 assertTrue( node.getCharacter() == '\0' ); 1173 assertTrue( node.getReal() == 32.1 ); 1174 assertTrue( node.getExponent() == 0 ); 1175 assertTrue( node.getDenominator() == 1 ); 1176 assertTrue( node.getMantissa() == 32.1 ); 1177 node.setValue(45,90); 1178 assertTrue( node.getType() == libsbml.AST_RATIONAL ); 1179 assertTrue( node.getInteger() == 45 ); 1180 assertTrue( node.getName() == null ); 1181 assertTrue( node.getCharacter() == '\0' ); 1182 assertTrue( node.getReal() == 0.5 ); 1183 assertTrue( node.getExponent() == 0 ); 1184 assertTrue( node.getDenominator() == 90 ); 1185 assertTrue( node.getMantissa() == 0 ); 1186 node.setValue(32.0,4); 1187 assertTrue( node.getType() == libsbml.AST_REAL_E ); 1188 assertTrue( node.getInteger() == 0 ); 1189 assertTrue( node.getName() == null ); 1190 assertTrue( node.getCharacter() == '\0' ); 1191 assertTrue( node.getReal() == 320000 ); 1192 assertTrue( node.getExponent() == 4 ); 1193 assertTrue( node.getDenominator() == 1 ); 1194 assertTrue( node.getMantissa() == 32 ); 1195 node = null; 1196 } 1197 1198 public void test_ASTNode_setType() 1199 { 1200 ASTNode node = new ASTNode(); 1201 node.setName( "foo"); 1202 assertTrue( node.getType() == libsbml.AST_NAME ); 1203 node.setType(libsbml.AST_FUNCTION); 1204 assertTrue( node.getType() == libsbml.AST_FUNCTION ); 1205 assertTrue(node.getName().equals( "foo")); 1206 node.setType(libsbml.AST_NAME); 1207 assertTrue( node.getType() == libsbml.AST_NAME ); 1208 assertTrue(node.getName().equals( "foo")); 1209 node.setType(libsbml.AST_INTEGER); 1210 assertTrue( node.getType() == libsbml.AST_INTEGER ); 1211 node.setType(libsbml.AST_REAL); 1212 assertTrue( node.getType() == libsbml.AST_REAL ); 1213 node.setType(libsbml.AST_UNKNOWN); 1214 assertTrue( node.getType() == libsbml.AST_UNKNOWN ); 1215 node.setType(libsbml.AST_PLUS); 1216 assertTrue( node.getType() == libsbml.AST_PLUS ); 1217 assertTrue( node.getCharacter() == '+' ); 1218 node.setType(libsbml.AST_MINUS); 1219 assertTrue( node.getType() == libsbml.AST_MINUS ); 1220 assertTrue( node.getCharacter() == '-' ); 1221 node.setType(libsbml.AST_TIMES); 1222 assertTrue( node.getType() == libsbml.AST_TIMES ); 1223 assertTrue( node.getCharacter() == '*' ); 1224 node.setType(libsbml.AST_DIVIDE); 1225 assertTrue( node.getType() == libsbml.AST_DIVIDE ); 1226 assertTrue( node.getCharacter() == '/' ); 1227 node.setType(libsbml.AST_POWER); 1228 assertTrue( node.getType() == libsbml.AST_POWER ); 1229 assertTrue( node.getCharacter() == '^' ); 1230 node = null; 1231 } 1232 1233 public void test_ASTNode_swapChildren() 1234 { 1235 ASTNode node = new ASTNode(); 1236 ASTNode c1 = new ASTNode(); 1237 ASTNode c2 = new ASTNode(); 1238 ASTNode node_1 = new ASTNode(); 1239 ASTNode c1_1 = new ASTNode(); 1240 ASTNode c2_1 = new ASTNode(); 1241 int i = 0; 1242 node.setType(libsbml.AST_LOGICAL_AND); 1243 c1.setName( "a"); 1244 c2.setName( "b"); 1245 node.addChild(c1); 1246 node.addChild(c2); 1247 assertTrue( node.getNumChildren() == 2 ); 1248 assertTrue(libsbml.formulaToString(node).equals( "and(a, b)")); 1249 node_1.setType(libsbml.AST_LOGICAL_AND); 1250 c1_1.setName( "d"); 1251 c2_1.setName( "f"); 1252 node_1.addChild(c1_1); 1253 node_1.addChild(c2_1); 1254 assertTrue( node_1.getNumChildren() == 2 ); 1255 assertTrue(libsbml.formulaToString(node_1).equals( "and(d, f)")); 1256 i = node.swapChildren(node_1); 1257 assertTrue( i == libsbml.LIBSBML_OPERATION_SUCCESS ); 1258 assertTrue( node.getNumChildren() == 2 ); 1259 assertTrue(libsbml.formulaToString(node).equals( "and(d, f)")); 1260 assertTrue( node_1.getNumChildren() == 2 ); 1261 assertTrue(libsbml.formulaToString(node_1).equals( "and(a, b)")); 1262 node_1 = null; 1263 node = null; 1264 } 1265 1266 public void test_ASTNode_units() 1267 { 1268 ASTNode n = new ASTNode(); 1269 n.setType(libsbml.AST_REAL); 1270 n.setValue(1.6); 1271 int i = n.setUnits( "mole"); 1272 assertTrue( i == libsbml.LIBSBML_OPERATION_SUCCESS ); 1273 assertTrue( n.isSetUnits() == true ); 1274 assertTrue(n.getUnits().equals( "mole")); 1275 i = n.unsetUnits(); 1276 assertTrue( i == libsbml.LIBSBML_OPERATION_SUCCESS ); 1277 assertTrue( n.isSetUnits() == false ); 1278 assertTrue(n.getUnits().equals( "")); 1279 i = n.setUnits( "1mole"); 1280 assertTrue( i == libsbml.LIBSBML_INVALID_ATTRIBUTE_VALUE ); 1281 assertTrue( n.isSetUnits() == false ); 1282 n.setType(libsbml.AST_FUNCTION); 1283 i = n.setUnits( "mole"); 1284 assertTrue( i == libsbml.LIBSBML_UNEXPECTED_ATTRIBUTE ); 1285 assertTrue( n.isSetUnits() == false ); 1286 assertTrue(n.getUnits().equals( "")); 1287 n = null; 1288 } 1289 1290 /** 1291 * Loads the SWIG-generated libSBML Java module when this class is 1292 * loaded, or reports a sensible diagnostic message about why it failed. 1293 */ 1294 static 1295 { 1296 String varname; 1297 String shlibname; 1298 1299 if (System.getProperty("mrj.version") != null) 1300 { 1301 varname = "DYLD_LIBRARY_PATH"; // We're on a Mac. 1302 shlibname = "libsbmlj.jnilib and/or libsbml.dylib"; 1303 } 1304 else 1305 { 1306 varname = "LD_LIBRARY_PATH"; // We're not on a Mac. 1307 shlibname = "libsbmlj.so and/or libsbml.so"; 1308 } 1309 1310 try 1311 { 1312 System.loadLibrary("sbmlj"); 1313 // For extra safety, check that the jar file is in the classpath. 1314 Class.forName("org.sbml.libsbml.libsbml"); 1315 } 1316 catch (SecurityException e) 1317 { 1318 e.printStackTrace(); 1319 System.err.println("Could not load the libSBML library files due to a"+ 1320 " security exception.\n"); 1321 System.exit(1); 1322 } 1323 catch (UnsatisfiedLinkError e) 1324 { 1325 e.printStackTrace(); 1326 System.err.println("Error: could not link with the libSBML library files."+ 1327 " It is likely\nyour " + varname + 1328 " environment variable does not include the directories\n"+ 1329 "containing the " + shlibname + " library files.\n"); 1330 System.exit(1); 1331 } 1332 catch (ClassNotFoundException e) 1333 { 1334 e.printStackTrace(); 1335 System.err.println("Error: unable to load the file libsbmlj.jar."+ 1336 " It is likely\nyour -classpath option and CLASSPATH" + 1337 " environment variable\n"+ 1338 "do not include the path to libsbmlj.jar.\n"); 1339 System.exit(1); 1340 } 1341 } 1342 } 1343