- Timestamp:
- Aug 8, 2016 8:16:18 AM (9 years ago)
- Branches:
- master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- 048381b3
- Parents:
- e8418bb (diff), ab06de7 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent. - Location:
- test
- Files:
-
- 7 added
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
test/sasdataloader/test/utest_cansas.py
rb699768 r83b6408 2 2 Unit tests for the new recursive cansas reader 3 3 """ 4 import logging5 import warnings6 warnings.simplefilter("ignore")7 8 4 import sas.sascalc.dataloader.readers.cansas_reader as cansas 9 5 from sas.sascalc.dataloader.loader import Loader 10 from sas.sascalc.dataloader.data_info import Data1D 6 from sas.sascalc.dataloader.data_info import Data1D, Data2D 11 7 from sas.sascalc.dataloader.readers.xml_reader import XMLreader 12 8 from sas.sascalc.dataloader.readers.cansas_reader import Reader … … 20 16 import unittest 21 17 import numpy 18 import logging 19 import warnings 22 20 23 21 from lxml import etree 24 22 from xml.dom import minidom 25 23 24 warnings.simplefilter("ignore") 25 26 26 CANSAS_FORMAT = CansasConstants.CANSAS_FORMAT 27 27 CANSAS_NS = CansasConstants.CANSAS_NS 28 29 class cansas_reader (unittest.TestCase):30 28 29 class cansas_reader_xml(unittest.TestCase): 30 31 31 def setUp(self): 32 32 self.loader = Loader() … … 37 37 self.cansas1d_slit = "cansas1d_slit.xml" 38 38 self.cansas1d_units = "cansas1d_units.xml" 39 self.cansas1d_notitle = "cansas1d_notitle.xml" 39 40 self.isis_1_0 = "ISIS_1_0.xml" 40 41 self.isis_1_1 = "ISIS_1_1.xml" … … 43 44 self.schema_1_0 = "cansas1d_v1_0.xsd" 44 45 self.schema_1_1 = "cansas1d_v1_1.xsd" 45 46 46 47 47 48 def get_number_of_entries(self, dictionary, name, i): 48 49 if dictionary.get(name) is not None: … … 52 53 name = self.get_number_of_entries(dictionary, name, i) 53 54 return name 54 55 55 56 56 57 def test_invalid_xml(self): 57 58 """ … … 60 61 invalid = StringIO.StringIO('<a><c></b></a>') 61 62 reader = XMLreader(invalid) 62 63 63 64 64 65 def test_xml_validate(self): … … 78 79 self.assertTrue(xmlschema.validate(valid)) 79 80 self.assertFalse(xmlschema.validate(invalid)) 80 81 81 82 82 83 def test_real_xml(self): 83 84 reader = XMLreader(self.xml_valid, self.schema_1_0) … … 87 88 else: 88 89 self.assertFalse(valid) 89 90 90 91 91 92 def _check_data(self, data): 92 93 self.assertTrue(data.title == "TK49 c10_SANS") … … 101 102 self.assertTrue(data.process[0].name == "Mantid generated CanSAS1D XML") 102 103 self.assertTrue(data.meta_data["xmlpreprocess"] != None) 103 104 104 105 105 106 def _check_data_1_1(self, data): 106 107 spectrum = data.trans_spectrum[0] 107 108 self.assertTrue(len(spectrum.wavelength) == 138) 108 109 109 110 110 111 def test_cansas_xml(self): 111 112 filename = "isis_1_1_write_test.xml" … … 132 133 written_data = return_data[0] 133 134 self._check_data(written_data) 134 135 135 136 136 137 def test_double_trans_spectra(self): 137 138 xmlreader = XMLreader(self.isis_1_1_doubletrans, self.schema_1_1) … … 141 142 for item in data: 142 143 self._check_data(item) 143 144 144 145 145 146 def test_entry_name_recurse(self): 146 147 test_values = [1,2,3,4,5,6] … … 151 152 d[new_key] = value 152 153 self.assertTrue(len(d) == 6) 153 154 154 155 155 156 def test_load_cansas_file(self): 156 157 valid = [] … … 169 170 reader7 = XMLreader(self.isis_1_1, self.schema_1_0) 170 171 self.assertFalse(reader7.validate_xml()) 171 172 172 173 174 def test_invalid_cansas(self): 175 list = self.loader.load(self.cansas1d_notitle) 176 data = list[0] 177 self.assertTrue(data.x.size == 2) 178 self.assertTrue(len(data.meta_data) == 3) 179 self.assertTrue(len(data.errors) == 1) 180 self.assertTrue(data.detector[0].distance_unit == "mm") 181 self.assertTrue(data.detector[0].name == "fictional hybrid") 182 self.assertTrue(data.detector[0].distance == 4150) 183 184 173 185 def test_old_cansas_files(self): 174 186 reader1 = XMLreader(self.cansas1d, self.schema_1_0) … … 182 194 reader4 = XMLreader(self.cansas1d_slit, self.schema_1_0) 183 195 self.assertTrue(reader4.validate_xml()) 184 185 196 197 186 198 def test_save_cansas_v1_0(self): 187 199 filename = "isis_1_0_write_test.xml" … … 204 216 self.assertTrue(valid) 205 217 self._check_data(written_data) 206 207 218 219 208 220 def test_processing_instructions(self): 209 221 reader = XMLreader(self.isis_1_1, self.schema_1_1) … … 214 226 self.assertTrue(dic == {'xml-stylesheet': \ 215 227 'type="text/xsl" href="cansas1d.xsl" '}) 216 228 217 229 xml = "<test><a><b><c></c></b></a></test>" 218 230 xmldoc = minidom.parseString(xml) 219 231 220 232 ## take the processing instructions and put them back in 221 233 xmldoc = self.set_processing_instructions(xmldoc, dic) 222 234 xml_output = xmldoc.toprettyxml() 223 224 235 236 225 237 def set_processing_instructions(self, minidom_object, dic): 226 238 xmlroot = minidom_object.firstChild … … 229 241 minidom_object.insertBefore(pi, xmlroot) 230 242 return minidom_object 231 232 243 244 233 245 def get_processing_instructions(self, xml_reader_object): 234 246 dict = {} … … 247 259 pi = pi.getprevious() 248 260 return dict 249 261 262 263 class cansas_reader_hdf5(unittest.TestCase): 264 265 def setUp(self): 266 self.loader = Loader() 267 self.datafile_basic = "simpleexamplefile.h5" 268 self.datafile_multiplesasentry = "cansas_1Dand2D_samedatafile.h5" 269 self.datafile_multiplesasdata = "cansas_1Dand2D_samesasentry.h5" 270 self.datafile_multiplesasdata_multiplesasentry = "cansas_1Dand2D_multiplesasentry_multiplesasdata.h5" 271 272 def test_real_data(self): 273 self.data = self.loader.load(self.datafile_basic) 274 self._check_example_data(self.data[0]) 275 276 def test_multiple_sasentries(self): 277 self.data = self.loader.load(self.datafile_multiplesasentry) 278 self.assertTrue(len(self.data) == 2) 279 self._check_multiple_data(self.data[0]) 280 self._check_multiple_data(self.data[1]) 281 self._check_1d_data(self.data[0]) 282 283 def _check_multiple_data(self, data): 284 self.assertTrue(data.title == "MH4_5deg_16T_SLOW") 285 self.assertTrue(data.run[0] == '33837') 286 self.assertTrue(len(data.run) == 1) 287 self.assertTrue(data.instrument == "SANS2D") 288 self.assertTrue(data.source.radiation == "Spallation Neutron Source") 289 self.assertTrue(len(data.detector) == 1) 290 self.assertTrue(data.detector[0].name == "rear-detector") 291 self.assertTrue(data.detector[0].distance == 4.385281) 292 self.assertTrue(data.detector[0].distance_unit == 'm') 293 self.assertTrue(len(data.trans_spectrum) == 1) 294 295 def _check_1d_data(self, data): 296 self.assertTrue(isinstance(data, Data1D)) 297 self.assertTrue(len(data.x) == 66) 298 self.assertTrue(len(data.x) == len(data.y)) 299 self.assertTrue(data.dy[10] == 0.20721350111248701) 300 self.assertTrue(data.y[10] == 24.193889608153476) 301 self.assertTrue(data.x[10] == 0.008981127988654792) 302 303 def _check_2d_data(self, data): 304 self.assertTrue(isinstance(data, Data2D)) 305 self.assertTrue(len(data.x) == 66) 306 self.assertTrue(len(data.x) == len(data.y)) 307 self.assertTrue(data.dy[10] == 0.20721350111248701) 308 self.assertTrue(data.y[10] == 24.193889608153476) 309 self.assertTrue(data.x[10] == 0.008981127988654792) 310 311 def _check_example_data(self, data): 312 self.assertTrue(data.title == "") 313 self.assertTrue(data.x.size == 100) 314 self.assertTrue(data._xunit == "A^{-1}") 315 self.assertTrue(data._yunit == "cm^{-1}") 316 self.assertTrue(data.y.size == 100) 317 self.assertAlmostEqual(data.y[9], 0.952749011516985) 318 self.assertAlmostEqual(data.x[9], 0.3834415188257777) 319 self.assertAlmostEqual(len(data.meta_data), 0) 320 250 321 251 322 if __name__ == '__main__':
Note: See TracChangeset
for help on using the changeset viewer.