Ignore:
Timestamp:
Feb 8, 2008, 1:34:51 PM (17 years ago)
Author:
ole
Message:

First cut of XML object model done. Three tests demonstrate the idea

File:
1 edited

Legend:

Unmodified
Added
Removed
  • anuga_core/source/anuga/utilities/test_xml_tools.py

    r5008 r5009  
    2222        """
    2323
    24         elements = []
     24           
     25        X1 = XML_element(tag='first element',
     26                         value=XML_element(tag='some text',
     27                                           value='hello world'))
     28
     29        text_elements = []
    2530        for i in range(10):
    2631            X = XML_element(tag='title %d' %i,
    27                             contents='example text %d' %i)
    28             elements.append(X)
     32                            value='example text %d' %i)
     33            text_elements.append(X)
    2934
    30            
    31         X1 = XML_element(tag='first element',
    32                          contents=XML_element(tag='some text',
    33                                               contents='hello world'))
    3435       
    3536        X2 = XML_element(tag='second element',
    36                          contents=XML_element(tag='texts',
    37                                               contents=elements))
     37                         value=XML_element(tag='texts',
     38                                           value=text_elements))
    3839        X3 = XML_element(tag='third element',
    39                          contents='42')       
     40                         value='42')       
    4041       
    4142           
    4243
    43         X = XML_element(tag='all',
    44                         contents=[X1, X2, X3])
    45         doc = XML_document(contents=X)
     44        doc = XML_element(value=[X1, X2, X3])
    4645
    4746        #print doc.pretty_print()       
    4847        #print doc
    49         assert doc['all']['second element']['texts']['title 4'].elements == 'example text 4'
     48
     49        assert doc['second element']['texts']['title 4'] == 'example text 4'
     50       
     51       
    5052
    5153       
     
    113115            xmlobject['ga_license_file'][tag]
    114116
    115         assert xmlobject['ga_license_file']['datafile']['accountable'].elements == 'Jane Sexton'
    116        
     117        assert xmlobject['ga_license_file']['datafile']['accountable'] == 'Jane Sexton'
    117118
    118119        #print
    119         #print
     120        #print xmlobject['ga_license_file']['datafile']
    120121        #print xmlobject['ga_license_file']['metadata']
    121122        #print xmlobject['ga_license_file']['datafile']
    122123        #print xmlobject['ga_license_file']['datafile']['accountable']       
    123 
    124         #print xmlobject['ga_license_file'].keys()
     124        #print xmlobject['ga_license_file']['datafile'].keys()
    125125
    126126        #for tag in xmlobject['ga_license_file'].keys():
     
    128128               
    129129        # Clean up
     130        os.remove(tmp_name)
    130131        fid.close()
    131132
    132133       
    133134
     135    def test_generate_and_read_back(self):
     136        """Test that xml code generated from XMLobject model
     137        can be read back.
     138        """
     139
     140           
     141        X1 = XML_element(tag='first_element',
     142                         value=XML_element(tag='some_text',
     143                                           value='hello world'))
     144
     145        text_elements = []
     146        for i in range(10):
     147            X = XML_element(tag='title_%d' %i,
     148                            value='example text %d' %i)
     149            text_elements.append(X)
     150
     151       
     152        X2 = XML_element(tag='second_element',
     153                         value=XML_element(tag='texts',
     154                                           value=text_elements))
     155        X3 = XML_element(tag='third_element',
     156                         value='42')       
     157       
     158           
     159        # Need to have one main element according to minidom
     160        main = XML_element(tag='all', value=[X1, X2, X3])
     161        xmldoc = XML_element(value=main)
     162        #print xmldoc
     163
     164        tmp_fd , tmp_name = mkstemp(suffix='.xml', dir='.')
     165        fid = os.fdopen(tmp_fd, 'w')
     166
     167        fid.write(str(xmldoc))
     168        fid.close()
     169
     170        # Now read it back
     171        xmlobject = xml2object(tmp_name, verbose=True)       
     172        #print xmlobject
     173
     174        assert str(xmldoc) == str(xmlobject)
     175
     176        os.remove(tmp_name)
    134177       
    135178#-------------------------------------------------------------
Note: See TracChangeset for help on using the changeset viewer.