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