Changeset 5008
- Timestamp:
- Feb 7, 2008, 6:28:04 PM (17 years ago)
- Location:
- anuga_core/source/anuga/utilities
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
anuga_core/source/anuga/utilities/test_system_tools.py
r4986 r5008 37 37 38 38 # Generate a text file 39 tmp_fd , tmp_name = mkstemp(suffix='.tmp', dir='.')40 fid = os.fdopen(tmp_fd, 'w')39 tmp_fd , tmp_name = mkstemp(suffix='.tmp', dir='.') 40 fid = os.fdopen(tmp_fd, 'w') 41 41 string = 'My temp file with textual content. AAAABBBBCCCC1234' 42 42 fid.write(string) 43 fid.flush()44 43 fid.close() 45 44 46 45 ref_crc = zlib.crc32(string) 47 48 46 checksum = compute_checksum(tmp_name) 49 50 51 47 assert checksum == ref_crc 52 48 … … 56 52 57 53 # Binary file 58 tmp_fd , tmp_name = mkstemp(suffix='.tmp',dir='.') 59 fid = os.fdopen(tmp_fd,'w+b') 60 54 tmp_fd , tmp_name = mkstemp(suffix='.tmp', dir='.') 55 fid = os.fdopen(tmp_fd, 'w+b') 61 56 62 57 string = 'My temp file with binary content. AAAABBBBCCCC1234' 63 58 fid.write(string) 64 fid. flush()59 fid.close() 65 60 66 61 … … 70 65 assert checksum == ref_crc 71 66 72 # Close and remove temporary file73 fid.close()74 67 os.remove(tmp_name) 75 68 -
anuga_core/source/anuga/utilities/test_xml_tools.py
r4976 r5008 4 4 import unittest 5 5 from Numeric import zeros, array, allclose, Float 6 from tempfile import NamedTemporaryFile 6 from tempfile import mkstemp, mktemp 7 7 8 import os 8 9 … … 17 18 pass 18 19 19 def notest_generate_xml(self):20 def test_generate_xml(self): 20 21 """Test that xml code is generated from XMLobject model 21 22 """ … … 44 45 doc = XML_document(contents=X) 45 46 46 print doc 47 #print doc.pretty_print() 48 #print doc 49 assert doc['all']['second element']['texts']['title 4'].elements == 'example text 4' 47 50 48 print doc.pretty_print()49 51 50 52 51 def notest_xml2object(self):53 def test_xml2object(self): 52 54 """Test that XML_document can be generated from file 53 55 """ 54 56 55 fid = NamedTemporaryFile(mode='w', 56 suffix='.xml', 57 dir='.') 58 57 tmp_fd , tmp_name = mkstemp(suffix='.xml', dir='.') 58 fid = os.fdopen(tmp_fd, 'w') 59 59 60 xml_string = """<?xml version="1.0" encoding="iso-8859-1"?> 60 61 61 <ga_license_file> 62 62 <metadata> … … 79 79 <IP_info>This is a test</IP_info> 80 80 </datafile> 81 82 81 </ga_license_file> 83 82 """ %('1234') 84 83 85 84 fid.write(xml_string) 86 fid. flush()85 fid.close() 87 86 88 print fid.read() 87 fid = open(tmp_name) 88 reference = fid.read() 89 reflines = reference.split('\n') 89 90 90 xml2object(fid, verbose=True) 91 xmlobject = xml2object(fid, verbose=True) 92 93 94 #print xmlobject.pretty_print() 95 96 xmllines = str(xmlobject).split('\n') 97 98 #for line in reflines: 99 # print line 100 #print 101 #for line in xmllines: 102 # print line 103 104 105 assert len(reflines) == len(xmllines) 106 107 for i, refline in enumerate(reflines): 108 msg = '%s != %s' %(refline.strip(), xmllines[i].strip()) 109 assert refline.strip() == xmllines[i].strip(), msg 110 111 # Check dictionary behaviour 112 for tag in xmlobject['ga_license_file'].keys(): 113 xmlobject['ga_license_file'][tag] 114 115 assert xmlobject['ga_license_file']['datafile']['accountable'].elements == 'Jane Sexton' 116 117 118 #print 119 #print 120 #print xmlobject['ga_license_file']['metadata'] 121 #print xmlobject['ga_license_file']['datafile'] 122 #print xmlobject['ga_license_file']['datafile']['accountable'] 123 124 #print xmlobject['ga_license_file'].keys() 125 126 #for tag in xmlobject['ga_license_file'].keys(): 127 # print xmlobject['ga_license_file'][tag] 91 128 92 129 # Clean up 93 94 130 fid.close() 95 131 -
anuga_core/source/anuga/utilities/xml_tools.py
r4976 r5008 70 70 #---------------------------- 71 71 72 class XML_element :72 class XML_element(dict): 73 73 def __init__(self, tag=None, contents=None): 74 74 """ … … 84 84 85 85 self.elements = contents 86 87 86 self.tag = tag 87 # FIXME: It might be better to represent these objects 88 # in a proper dictionary format with 89 # {tag: elements, ...} 90 88 91 89 92 def __add__(self, other): … … 95 98 def __repr__(self): 96 99 return str(self) 97 98 def __str__(self):99 pass100 100 101 101 def __str__(self, indent=0): … … 114 114 s += '</%s>\n' %self.tag 115 115 return s 116 117 118 def __getitem__(self, key): 119 """Return sub-tree starting at element with tag equal to specified key 120 """ 121 122 #if isinstance(self, XML_element): 123 for node in self.elements: 124 if node.tag == key: 125 return node 126 127 def keys(self): 128 return [str(node.tag) for node in self.elements] 116 129 117 130 … … 138 151 139 152 def __init__(self, contents=None, version='1.0', encoding='iso-8859-1'): 140 tag = '?xml version="%s" encoding="%s" ' %(version, encoding)153 tag = '?xml version="%s" encoding="%s"?' %(version, encoding) 141 154 142 155 XML_element.__init__(self, … … 151 164 for e in self.elements: 152 165 s += str(e) 166 153 167 return s 154 168 … … 180 194 dom = parse(xml) 181 195 182 print 'Res',dom2object(dom)196 return dom2object(dom) 183 197 184 198 185 199 186 200 def dom2object(node): 187 188 if node.nodeType == 3 and len(node.nodeValue.strip()) == 0: 189 return None 190 191 print 'Node name: "%s",' %node.nodeName,\ 192 'Node type: "%s",' %node.nodeType,\ 193 'Node value: "%s",' %str(node.nodeValue).strip(),\ 194 'Node children: %d' %len(node.childNodes) 195 196 197 198 if node.nodeType == 3: 199 contents = node.nodeValue.strip() 200 else: 201 contents = [] 202 for n in node.childNodes: 203 x = dom2object(n) 204 if x is not None: 205 contents.append(x) 201 """Convert DOM representation to XML_object hierarchy. 202 """ 203 204 contents = [] 205 for n in node.childNodes: 206 207 #print 'Node name: "%s",' %n.nodeName,\ 208 # 'Node type: "%s",' %n.nodeType,\ 209 # 'Node value: "%s",' %str(n.nodeValue).strip(),\ 210 # 'Node children: %d' %len(n.childNodes) 211 212 if n.nodeType == 3: 213 # Child is a text element - omit the dom tag #text and 214 # go straight to the text value. 215 216 msg = 'Text element has child nodes - this shouldn\'t happen' 217 assert len(n.childNodes) == 0, msg 218 219 220 x = n.nodeValue.strip() 221 if len(x) == 0: 222 # Skip empty text children 223 continue 224 225 contents = x 226 else: 227 contents.append(dom2object(n)) 228 229 206 230 207 231 208 232 if node.nodeType == 9: 209 # Document 210 X = XML_document() 211 212 X = XML_element(tag=node.nodeName, 213 contents=contents) 233 # Document root 234 X = XML_document(contents=contents) 235 else: 236 # Node 237 X = XML_element(tag=node.nodeName, 238 contents=contents) 239 214 240 return X
Note: See TracChangeset
for help on using the changeset viewer.