/[escript]/trunk/escript/test/python/run_xml.py
ViewVC logotype

Diff of /trunk/escript/test/python/run_xml.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/escript/test/python/test_xml.py revision 155 by jgs, Wed Nov 9 02:02:19 2005 UTC trunk/escript/test/python/run_xml.py revision 956 by gross, Tue Feb 13 00:03:40 2007 UTC
# Line 1  Line 1 
1  #!/usr/bin/python  #!/usr/bin/python
2    
3  # $Id$  # $Id$
4    __copyright__="""  Copyright (c) 2006 by ACcESS MNRF
5                        http://www.access.edu.au
6                    Primary Business: Queensland, Australia"""
7    __license__="""Licensed under the Open Software License version 3.0
8                 http://www.opensource.org/licenses/osl-3.0.php"""
9    
10  import unittest  import unittest
11  from esys.escript.modelframe import Model,Link,Simulation,ParameterSet,parse  from esys.escript.modelframe import Model,Link,Simulation,ParameterSet,ESySXMLParser,DataSource
12  import math  import math
13  from cStringIO import StringIO  from cStringIO import StringIO
14  from xml.dom import minidom  from xml.dom import minidom
15    import numarray
16    
17  class XMLDocumentTestCase(unittest.TestCase):  class XMLDocumentTestCase(unittest.TestCase):
18    
# Line 70  class SimulationTestCase(unittest.TestCa Line 76  class SimulationTestCase(unittest.TestCa
76                    
77      def testParseAndInstanceOfSimulation(self):      def testParseAndInstanceOfSimulation(self):
78                    
79          newSim = parse(self.xml)          xml = ESySXMLParser(self.xml)
80            newSim = xml.parse()[0]
81          assert (isinstance (newSim, Simulation))          assert (isinstance (newSim, Simulation))
82          newout = StringIO()          newout = StringIO()
83          newSim.writeXML(newout)          newSim.writeXML(newout)
# Line 136  class ParamaterSetTestCase(unittest.Test Line 143  class ParamaterSetTestCase(unittest.Test
143          assert ("gamma1" in xmlout)          assert ("gamma1" in xmlout)
144          assert ("gamma2" in xmlout)          assert ("gamma2" in xmlout)
145          assert ("gamma3" in xmlout)          assert ("gamma3" in xmlout)
146          parsable = parse(xmlout)          esysxml=ESySXMLParser(xmlout)
147            parsable = esysxml.parse()[0]
148          assert (isinstance (parsable, ParameterSet))          assert (isinstance (parsable, ParameterSet))
149          assert (self._dom().getElementsByTagName("ParameterSet"))          assert (self._dom(self.p).getElementsByTagName("ParameterSet"))
150    
151      def testParameterSetFromXML(self):      def testParameterSetFromXML(self):
152          doc = self._class()          s = StringIO()
153          pset = ParameterSet.fromDom(self._dom().getElementsByTagName("ParameterSet")[0])          self.p.writeXML(s)
154            s.reset()
155            xmlout = s.read()
156            esysxml=ESySXMLParser(xmlout)
157            doc = self._class(self.p)
158            pset = ParameterSet.fromDom(esysxml, self._dom(self.p).getElementsByTagName("ParameterSet")[0])
159          assert (isinstance(pset, ParameterSet))          assert (isinstance(pset, ParameterSet))
160          assert (isinstance(doc, ParameterSet))          assert (isinstance(doc, ParameterSet))
161          self.assertEqual(self.p.gamma1,doc.gamma1)          self.assertEqual(self.p.gamma1,doc.gamma1)
# Line 152  class ParamaterSetTestCase(unittest.Test Line 165  class ParamaterSetTestCase(unittest.Test
165          p2 = ParameterSet()          p2 = ParameterSet()
166          p2.declareParameter(s="abc", f=3.)          p2.declareParameter(s="abc", f=3.)
167          self.p.declareParameter(child=p2)          self.p.declareParameter(child=p2)
168          doc = self._class()          doc = self._class(self.p)
169          #pset = ParameterSet.fromDom(doc.getElementsByTagName("ParameterSet")[0])          #pset = ParameterSet.fromDom(doc.getElementsByTagName("ParameterSet")[0])
170          self.assertEqual(self.p.child.f, doc.child.f)          self.assertEqual(self.p.child.f, doc.child.f)
171    
# Line 163  class ParamaterSetTestCase(unittest.Test Line 176  class ParamaterSetTestCase(unittest.Test
176          self.assertEqual(self.p.child.s, "abc")          self.assertEqual(self.p.child.s, "abc")
177          self.assertEqual(self.p.child.f, 3.)          self.assertEqual(self.p.child.f, 3.)
178    
179      def _dom(self):      def _dom(self, input):
180          s = StringIO()          s = StringIO()
181          self.p.writeXML(s)          input.writeXML(s)
182          s.reset()          s.reset()
183          xmlout = s.read()          xmlout = s.read()
184          doc = minidom.parseString(xmlout)          doc = minidom.parseString(xmlout)
185          return doc          return doc
186    
187      def _class(self):      def _class(self, input):
188          s = StringIO()          s = StringIO()
189          self.p.writeXML(s)          input.writeXML(s)
190          s.reset()          s.reset()
191          xmlout = s.read()          xmlout = s.read()
192          doc = parse(xmlout)          esysxml=ESySXMLParser(xmlout)
193            doc =esysxml.parse()[0]
194          return doc          return doc
195    
196        def testFromDomInt(self):
197            p3 = ParameterSet()
198            p3.declareParameter(inttest=1)
199            doc = self._class(p3)
200            assert type(doc.inttest)==int
201    
202        def testFromDomNumarrayVector(self):
203            p3 = ParameterSet()
204            mynumarray = numarray.array([3., 4., 5.], type=numarray.Float64)
205            p3.declareParameter(numtest=mynumarray)
206            doc = self._class(p3)
207            assert doc.numtest.type() == numarray.Float64
208            assert type(doc.numtest) == numarray.NumArray
209    
210        def testFromDomNumarrayMulti(self):
211            p3 = ParameterSet()
212            mynumarray = numarray.array([[1., 2., 3.], [3., 4., 5.]], type=numarray.Float64)
213            p3.declareParameter(numtest=mynumarray)
214            doc = self._class(p3)
215            assert doc.numtest.type() == numarray.Float64
216            assert type(doc.numtest) == numarray.NumArray
217    
218        def testLists(self):
219            p4 = ParameterSet()
220            mylist = [True, False, False, True]
221            p4.declareParameter(listest=mylist)
222            doc = self._class(p4)
223            assert doc.listest.type() == numarray.Bool
224            assert type(doc.listest) == numarray.NumArray
225            assert numarray.all(numarray.equal(mylist, doc.listest))
226            
227        def testDatasource(self):
228            p5 = ParameterSet()
229            myURI = DataSource("somelocalfile.txt", "text")
230            p5.declareParameter(uritest=myURI)
231            doc = self._class(p5)
232            self.assertEquals(myURI.uri, doc.uritest.uri)
233            self.assertEquals(myURI.fileformat, doc.uritest.fileformat)
234            assert type(doc.uritest) == DataSource
235            
236    
237          
238  class ModeltoDomTestCase(unittest.TestCase):  class ModeltoDomTestCase(unittest.TestCase):
239            
240      def _class(self):      def _class(self):
# Line 187  class ModeltoDomTestCase(unittest.TestCa Line 243  class ModeltoDomTestCase(unittest.TestCa
243          self.o1.writeXML(s)          self.o1.writeXML(s)
244          s.reset()          s.reset()
245          self.xmlout = s.read()          self.xmlout = s.read()
246          doc = parse(self.xmlout)          esysxml=ESySXMLParser(xmlout)
247            doc =esysxml.parse()[0]
248          return doc          return doc
249    
250      def _dom(self):      def _dom(self):
# Line 243  type="float"> <Name> tend </Name> <Value Line 300  type="float"> <Name> tend </Name> <Value
300    <Component rank="2"> <Model id="129" type="Messenger"> <Parameter    <Component rank="2"> <Model id="129" type="Messenger"> <Parameter
301    type="Link"> <Name> message </Name> <Value> <Link> <Target> 127 </Target>    type="Link"> <Name> message </Name> <Value> <Link> <Target> 127 </Target>
302    <Attribute> message </Attribute> </Link> </Value> </Parameter> </Model>    <Attribute> message </Attribute> </Link> </Value> </Parameter> </Model>
303    </Component> </Simulation> <Model id="128" type="ODETEST"> <Parameter    </Component> </Simulation> <Model id="150" type="ODETEST"> <Parameter
304    type="float"> <Name> a </Name> <Value>    type="float"> <Name> a </Name> <Value>
305  0.9 </Value> </Parameter> <Parameter type="Link"> <Name> f </Name> <Value>  0.9 </Value> </Parameter> <Parameter type="Link"> <Name> f </Name> <Value>
306    <Link> <Target> 127 </Target> <Attribute> u </Attribute> </Link> </Value>    <Link> <Target> 127 </Target> <Attribute> u </Attribute> </Link> </Value>
# Line 253  type="float"> <Name> tend </Name> <Value Line 310  type="float"> <Name> tend </Name> <Value
310    <Value> 1e-08 </Value> </Parameter> <Parameter type="float"> <Name> dt    <Value> 1e-08 </Value> </Parameter> <Parameter type="float"> <Name> dt
311    </Name> <Value>    </Name> <Value>
312  0.1 </Value> </Parameter> <Parameter type="str"> <Name> message </Name> <Value>  0.1 </Value> </Parameter> <Parameter type="str"> <Name> message </Name> <Value>
313    current error = 1.904837e+01 </Value> </Parameter> </Model> <Model id="127"    current error = 1.904837e+01 </Value> </Parameter> </Model> <Model id="130"
314    type="ODETEST"> <Parameter type="float"> <Name> a </Name> <Value>    type="ODETEST"> <Parameter type="float"> <Name> a </Name> <Value>
315  0.9 </Value> </Parameter> <Parameter type="Link"> <Name> f </Name> <Value>  0.9 </Value> </Parameter> <Parameter type="Link"> <Name> f </Name> <Value>
316    <Link> <Target> 128 </Target> <Attribute> u </Attribute> </Link> </Value>    <Link> <Target> 128 </Target> <Attribute> u </Attribute> </Link> </Value>
# Line 264  type="float"> <Name> tend </Name> <Value Line 321  type="float"> <Name> tend </Name> <Value
321    <Value>    <Value>
322  0.01 </Value> </Parameter> <Parameter type="str"> <Name> message </Name>  0.01 </Value> </Parameter> <Parameter type="str"> <Name> message </Name>
323    <Value> current error = 9.516258e-01 </Value> </Parameter> </Model> <Model    <Value> current error = 9.516258e-01 </Value> </Parameter> </Model> <Model
324    id="127" type="ODETEST"> <Parameter type="float"> <Name> a </Name> <Value>    id="170" type="ODETEST"> <Parameter type="float"> <Name> a </Name> <Value>
325  0.9 </Value> </Parameter> <Parameter type="Link"> <Name> f </Name> <Value>  0.9 </Value> </Parameter> <Parameter type="Link"> <Name> f </Name> <Value>
326    <Link> <Target> 128 </Target> <Attribute> u </Attribute> </Link> </Value>    <Link> <Target> 128 </Target> <Attribute> u </Attribute> </Link> </Value>
327    </Parameter> <Parameter type="float"> <Name> tend </Name> <Value>    </Parameter> <Parameter type="float"> <Name> tend </Name> <Value>
# Line 277  type="float"> <Name> tend </Name> <Value Line 334  type="float"> <Name> tend </Name> <Value
334  ''' % (modulename, modelname)  ''' % (modulename, modelname)
335    
336      def testModuleAttribute(self):      def testModuleAttribute(self):
337          modeldoc = parse(self._xml('test_xml', 'ODETEST'))          esysxml=ESySXMLParser(self._xml('run_xml', 'ODETEST'))
338            modeldoc=esysxml.parse()[0]
339    
340      def testModuleAttributeFails(self):      def testModuleAttributeFails(self):
341          try:          try:
342              modeldoc = parse(self._xml('a', 'b'))              esysxml=ESySXMLParser(self._xml('a', 'b'))
343                modeldoc=esysxml.parse()[0]
344          except ImportError:          except ImportError:
345              return # correct              return # correct
346    
# Line 362  class ODETEST(Model): Line 421  class ODETEST(Model):
421    
422            
423  if __name__ == "__main__":  if __name__ == "__main__":
     from test_xml import Messenger, ODETEST  
424      unittest.main()      unittest.main()
425    

Legend:
Removed from v.155  
changed lines
  Added in v.956

  ViewVC Help
Powered by ViewVC 1.1.26