Ignore:
Timestamp:
Dec 13, 2013 4:48:36 PM (10 years ago)
Author:
Jeff Krzywon <jeffery.krzywon@…>
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, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
a25d242
Parents:
f28fd9cf
Message:

I will finalize this on Monday.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • test/sansdataloader/test/utest_cansas.py

    rffbe487 reda8972  
    66 
    77import unittest 
    8 from sans.dataloader.loader import  Loader 
    9 from sans.dataloader.readers.cansas_reader_new import Reader 
     8import numpy 
     9import sans.dataloader.readers.cansas_reader as cansas 
     10from sans.dataloader.loader import Loader 
     11from sans.dataloader.data_info import Data1D 
     12from sans.dataloader.readers.xml_reader import XMLreader 
     13from sans.dataloader.readers.cansas_reader import Reader 
     14from sans.dataloader.readers.cansas_constants import cansasConstants 
    1015 
    1116import os 
    1217import sys 
     18import urllib2 
     19import StringIO 
    1320 
    1421from lxml import etree 
     
    1724HAS_CONVERTER = True 
    1825try: 
    19     from sans.data_util.nxsunit import Converter 
     26    from data_util.nxsunit import Converter 
    2027except: 
    2128    HAS_CONVERTER = False 
    2229  
    23 CANSAS_NS = "cansas1d/1.0"    
     30CANSAS_FORMAT = cansasConstants.CANSAS_FORMAT 
     31CANSAS_NS = cansasConstants.CANSAS_NS 
    2432ALLOW_ALL = True 
    2533     
     
    2836    def setUp(self): 
    2937        self.loader = Loader() 
    30         self.reader = Reader() 
     38        self.xml_valid = "cansas_test_modified.xml" 
     39        self.xml_invalid = "cansas_test.xml" 
     40        self.cansas1d_badunits = "cansas1d_badunits.xml" 
     41        self.cansas1d = "cansas1d.xml" 
     42        self.cansas1d_slit = "cansas1d_slit.xml" 
     43        self.cansas1d_units = "cansas1d_units.xml" 
     44        self.write_test = "write_test.xml" 
     45        self.isis_1_0 = "ISIS_1_0.xml" 
     46        self.isis_1_1 = "ISIS_1_1.xml" 
     47        self.isis_1_1_notrans = "ISIS_1_1_notrans.xml" 
     48        self.schema_1_0 = "cansas1d_v1_0.xsd" 
     49        self.schema_1_1 = "cansas1d_v1_1.xsd" 
     50     
     51    def get_number_of_entries(self, dictionary, name, i): 
     52        if dictionary.get(name) is not None: 
     53            i += 1 
     54            name = name.split("_")[0] 
     55            name += "_{0}".format(i) 
     56            name = self.get_number_of_entries(dictionary, name, i) 
     57        return name 
     58 
     59    def test_xml_validate(self): 
     60        string = "<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n" 
     61        string += "\t<xsd:element name=\"a\" type=\"AType\"/>\n" 
     62        string += "\t<xsd:complexType name=\"AType\">\n" 
     63        string += "\t\t<xsd:sequence>\n" 
     64        string += "\t\t\t<xsd:element name=\"b\" type=\"xsd:string\" />\n" 
     65        string += "\t\t</xsd:sequence>\n" 
     66        string += "\t</xsd:complexType>\n" 
     67        string += "</xsd:schema>" 
     68        f = StringIO.StringIO(string) 
     69        xmlschema_doc = etree.parse(f) 
     70        xmlschema = etree.XMLSchema(xmlschema_doc) 
     71        valid = etree.parse(StringIO.StringIO('<a><b></b></a>')) 
     72        invalid = etree.parse(StringIO.StringIO('<a><c></c></a>')) 
     73        self.assertTrue(xmlschema.validate(valid)) 
     74        self.assertFalse(xmlschema.validate(invalid)) 
    3175         
    32     def test_checkdata(self): 
    33         output = [] 
    34         ns = [] 
    35         path = "cansas_test.xml" 
    36         if os.path.isfile(path): 
    37             basename = os.path.basename(path) 
    38             root, extension = os.path.splitext(basename) 
    39             if ALLOW_ALL or extension.lower() in self.ext: 
    40                 try: 
    41                     tree = tree = etree.parse(path, parser=etree.ETCompatXMLParser()) 
    42                     # Check the format version number 
    43                     # Specifying the namespace will take care of the file 
    44                     # format version 
    45                     for elem in tree.iter(): 
    46                         tag = elem.tag.replace('{cansas1d/1.0}', '') 
    47                         print 'element: {0}, stripped element: {1}, value: {2}'.format( 
    48                                                                     elem.tag, tag, elem.text) 
    49                     # reader_return = self.reader._parse_entry(tree) 
    50                          
    51                 except Exception as e: 
    52                     exc_type, exc_obj, exc_tb = sys.exc_info() 
    53                     fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1] 
    54                     print(exc_type, fname, exc_tb.tb_lineno) 
     76    def test_real_xml(self): 
     77        reader = XMLreader(self.xml_valid, self.schema_1_0) 
     78        valid = reader.validateXML() 
     79        if valid: 
     80            self.assertTrue(valid) 
     81        else: 
     82            self.assertFalse(valid) 
    5583         
    56         print(output) 
     84    def test_cansas_xml(self): 
     85        xmlreader = XMLreader(self.isis_1_1, self.schema_1_1) 
     86        valid = xmlreader.validateXML() 
     87        self.assertTrue(valid) 
     88        reader = Reader() 
     89        dataloader = reader.read(self.isis_1_1) 
     90        for data in dataloader: 
     91            self.assertTrue(data.title == "TK49 c10_SANS") 
     92            self.assertTrue(data.x.size == 138) 
     93            self.assertTrue(len(data.meta_data) == 417) 
     94            self.assertTrue(data.detector[0].distance_unit == "mm") 
     95                     
     96    def test_entry_name_recurse(self): 
     97        test_values = [1,2,3,4,5,6] 
     98        base_key = "key" 
     99        d = {} 
     100        for value in test_values: 
     101            new_key = self.get_number_of_entries(d, base_key, i = 0) 
     102            d[new_key] = value 
     103        self.assertTrue(len(d) == 6) 
     104     
     105    def test_load_cansas_file(self): 
     106        valid = [] 
     107        reader1 = XMLreader(self.xml_valid, self.schema_1_0) 
     108        self.assertTrue(reader1.validateXML()) 
     109        reader2 = XMLreader(self.xml_invalid, self.schema_1_0) 
     110        self.assertFalse(reader2.validateXML()) 
     111        reader3 = XMLreader(self.xml_valid, self.schema_1_1) 
     112        self.assertFalse(reader3.validateXML()) 
     113        reader4 = XMLreader(self.xml_invalid, self.schema_1_1) 
     114        self.assertFalse(reader4.validateXML()) 
     115        reader5 = XMLreader(self.isis_1_0, self.schema_1_0) 
     116        self.assertTrue(reader5.validateXML()) 
     117        reader6 = XMLreader(self.isis_1_1, self.schema_1_1) 
     118        self.assertTrue(reader6.validateXML()) 
     119        reader7 = XMLreader(self.isis_1_1, self.schema_1_0) 
     120        self.assertFalse(reader7.validateXML()) 
     121     
     122    def test_old_cansas_files(self): 
     123        reader1 = XMLreader(self.cansas1d, self.schema_1_0) 
     124        self.assertTrue(reader1.validateXML()) 
     125        reader2 = XMLreader(self.cansas1d_units, self.schema_1_0) 
     126        self.assertTrue(reader2.validateXML()) 
     127        reader3 = XMLreader(self.cansas1d_badunits, self.schema_1_0) 
     128        self.assertTrue(reader3.validateXML()) 
     129        reader4 = XMLreader(self.cansas1d_slit, self.schema_1_0) 
     130        self.assertTrue(reader4.validateXML()) 
     131        reader5 = XMLreader(self.write_test, self.schema_1_0) 
     132        self.assertTrue(reader5.validateXML()) 
    57133         
     134 
    58135if __name__ == '__main__': 
    59     unittest.main() 
     136    unittest.main()     
Note: See TracChangeset for help on using the changeset viewer.