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