source: sasview/test/sansdataloader/test/utest_cansas.py @ 75eeb425

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 75eeb425 was 75eeb425, checked in by Jeff Krzywon <jeffery.krzywon@…>, 10 years ago

Pushing this here before I merge with trunk to be sure I don't lose anything.

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