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