source: sasview/test/sansdataloader/test/utest_cansas.py @ 3f484b0

ESS_GUIESS_GUI_DocsESS_GUI_batch_fittingESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_iss879ESS_GUI_iss959ESS_GUI_openclESS_GUI_orderingESS_GUI_sync_sascalccostrafo411magnetic_scattrelease-4.1.1release-4.1.2release-4.2.2release_4.0.1ticket-1009ticket-1094-headlessticket-1242-2d-resolutionticket-1243ticket-1249ticket885unittest-saveload
Last change on this file since 3f484b0 was 3f484b0, checked in by Jeff Krzywon <jeffery.krzywon@…>, 10 years ago

One of my tests relied on another test to have run first. The windows and Ubuntu servers ran them in the desired order, but the red hat server did not. Due to the instability of the test, I have removed it.

  • Property mode set to 100644
File size: 5.4 KB
Line 
1"""
2    Unit tests for the new recursive cansas reader
3"""
4import warnings
5warnings.simplefilter("ignore")
6
7import unittest
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
15
16import os
17import sys
18import urllib2
19import StringIO
20
21from lxml import etree
22import xml.dom.minidom
23 
24CANSAS_FORMAT = cansasConstants.CANSAS_FORMAT
25CANSAS_NS = cansasConstants.CANSAS_NS
26   
27class cansas_reader(unittest.TestCase):
28   
29    def setUp(self):
30        self.loader = Loader()
31        self.xml_valid = "cansas_test_modified.xml"
32        self.xml_invalid = "cansas_test.xml"
33        self.cansas1d_badunits = "cansas1d_badunits.xml"
34        self.cansas1d = "cansas1d.xml"
35        self.cansas1d_slit = "cansas1d_slit.xml"
36        self.cansas1d_units = "cansas1d_units.xml"
37        self.isis_1_0 = "ISIS_1_0.xml"
38        self.isis_1_1 = "ISIS_1_1.xml"
39        self.isis_1_1_notrans = "ISIS_1_1_notrans.xml"
40        self.schema_1_0 = "cansas1d_v1_0.xsd"
41        self.schema_1_1 = "cansas1d_v1_1.xsd"
42       
43   
44    def get_number_of_entries(self, dictionary, name, i):
45        if dictionary.get(name) is not None:
46            i += 1
47            name = name.split("_")[0]
48            name += "_{0}".format(i)
49            name = self.get_number_of_entries(dictionary, name, i)
50        return name
51   
52
53    def test_xml_validate(self):
54        string = "<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n"
55        string += "\t<xsd:element name=\"a\" type=\"AType\"/>\n"
56        string += "\t<xsd:complexType name=\"AType\">\n"
57        string += "\t\t<xsd:sequence>\n"
58        string += "\t\t\t<xsd:element name=\"b\" type=\"xsd:string\" />\n"
59        string += "\t\t</xsd:sequence>\n"
60        string += "\t</xsd:complexType>\n"
61        string += "</xsd:schema>"
62        f = StringIO.StringIO(string)
63        xmlschema_doc = etree.parse(f)
64        xmlschema = etree.XMLSchema(xmlschema_doc)
65        valid = etree.parse(StringIO.StringIO('<a><b></b></a>'))
66        invalid = etree.parse(StringIO.StringIO('<a><c></c></a>'))
67        self.assertTrue(xmlschema.validate(valid))
68        self.assertFalse(xmlschema.validate(invalid))
69       
70       
71    def test_real_xml(self):
72        reader = XMLreader(self.xml_valid, self.schema_1_0)
73        valid = reader.validateXML()
74        if valid:
75            self.assertTrue(valid)
76        else:
77            self.assertFalse(valid)
78           
79       
80    def test_cansas_xml(self):
81        filename = "isis_1_1_write_test.xml"
82        xmlreader = XMLreader(self.isis_1_1, self.schema_1_1)
83        valid = xmlreader.validateXML()
84        self.assertTrue(valid)
85        reader = Reader()
86        dataloader = reader.read(self.isis_1_1)
87        for data in dataloader:
88            self.assertTrue(data.title == "TK49 c10_SANS")
89            self.assertTrue(data.x.size == 138)
90            self.assertTrue(len(data.meta_data) == 2)
91            self.assertTrue(data.detector[0].distance_unit == "mm")
92            reader.write(filename, data)
93            reader2 = Reader()
94            return_data = reader2.read(filename)
95            data_new = return_data
96            self.data = return_data[0]
97            self.assertTrue(self.data.x.size == 138)
98            self.assertTrue(len(self.data.meta_data) == 2)
99            self.assertTrue(self.data.detector[0].distance_unit == "mm")
100            self.assertTrue(self.data.title == "TK49 c10_SANS")
101                   
102    def test_entry_name_recurse(self):
103        test_values = [1,2,3,4,5,6]
104        base_key = "key"
105        d = {}
106        for value in test_values:
107            new_key = self.get_number_of_entries(d, base_key, i = 0)
108            d[new_key] = value
109        self.assertTrue(len(d) == 6)
110       
111   
112    def test_load_cansas_file(self):
113        valid = []
114        reader1 = XMLreader(self.xml_valid, self.schema_1_0)
115        self.assertTrue(reader1.validateXML())
116        reader2 = XMLreader(self.xml_invalid, self.schema_1_0)
117        self.assertFalse(reader2.validateXML())
118        reader3 = XMLreader(self.xml_valid, self.schema_1_1)
119        self.assertFalse(reader3.validateXML())
120        reader4 = XMLreader(self.xml_invalid, self.schema_1_1)
121        self.assertFalse(reader4.validateXML())
122        reader5 = XMLreader(self.isis_1_0, self.schema_1_0)
123        self.assertTrue(reader5.validateXML())
124        reader6 = XMLreader(self.isis_1_1, self.schema_1_1)
125        self.assertTrue(reader6.validateXML())
126        reader7 = XMLreader(self.isis_1_1, self.schema_1_0)
127        self.assertFalse(reader7.validateXML())
128       
129   
130    def test_old_cansas_files(self):
131        reader1 = XMLreader(self.cansas1d, self.schema_1_0)
132        self.assertTrue(reader1.validateXML())
133        reader2 = XMLreader(self.cansas1d_units, self.schema_1_0)
134        self.assertTrue(reader2.validateXML())
135        reader3 = XMLreader(self.cansas1d_badunits, self.schema_1_0)
136        self.assertTrue(reader3.validateXML())
137        reader4 = XMLreader(self.cansas1d_slit, self.schema_1_0)
138        self.assertTrue(reader4.validateXML())
139       
140
141if __name__ == '__main__':
142    unittest.main()   
Note: See TracBrowser for help on using the repository browser.