source: trunk/anuga_core/source/anuga/file/test_csv.py @ 7859

Last change on this file since 7859 was 7772, checked in by hudson, 14 years ago

Fixed a bunch of failing tests - only 3 still failing.

File size: 6.0 KB
Line 
1import os
2import unittest
3import tempfile
4import numpy as num
5
6from csv_file import load_csv_as_array, load_csv_as_dict, store_parameters, \
7                        load_csv_as_matrix
8
9class Test_csv(unittest.TestCase):
10    def setUp(self):
11        pass
12
13    def tearDown(self):
14        pass
15
16    def _create_csv_file(self):
17        """
18            Create a dummy csv file.
19            Return its filename.
20        """     
21        filename = tempfile.mktemp(".txt")
22        file = open(filename,"w")
23        file.write("elevation, stage\n\
241.0, 3  \n\
250.0, 4 \n\
264.0, 3 \n\
271.0, 6 \n")
28        file.close()
29        return filename
30       
31    def test_get_data_from_file1(self):
32        filename = self._create_csv_file()
33
34        x = load_csv_as_array(filename) 
35       
36        os.remove(filename)
37
38        assert num.allclose(x['elevation'], [1.0, 0.0, 4.0, 1.0])
39        assert num.allclose(x['stage'], [3.0, 4.0, 3.0, 6.0])       
40
41
42    def test_get_data_from_file(self):
43        filename = self._create_csv_file()
44       
45        header,x = load_csv_as_matrix(filename)
46        os.remove(filename)
47       
48        assert num.allclose(x[:,0], [1.0, 0.0,4.0, 1.0])
49
50       
51    def test_store_parameters(self):
52        """tests store temporary file
53        """
54       
55        from os import sep, getenv
56       
57        output_dir=''
58        file_name='details.csv'
59       
60        kwargs = {'file_name':'new2.txt',
61                  'output_dir':output_dir,
62                  'file_name':file_name,
63                  'who':'me',
64                  'what':'detail',
65                  'how':2,
66                  'why':241,
67#                  'completed':345
68                  }
69        store_parameters(verbose=False,**kwargs)
70
71        temp='detail_temp.csv'
72        fid = open(temp)
73        file_header = fid.readline()
74        file_line = fid.readline()
75        fid.close()
76       
77       
78        keys = kwargs.keys()
79        keys.sort()
80        line=''
81        header=''
82        count=0
83        #used the sorted keys to create the header and line data
84        for k in keys:
85#            print "%s = %s" %(k, kwargs[k])
86            header = header+str(k)
87            line = line+str(kwargs[k])
88            count+=1
89            if count <len(kwargs):
90                header = header+','
91                line = line+','
92        header+='\n'
93        line+='\n'
94       
95       
96        #file exists
97        assert os.access(temp, os.F_OK)
98        assert header == file_header
99        assert line == file_line
100       
101        os.remove(temp)
102       
103    def test_store_parameters1(self):
104        """tests store in temporary file and other file
105        """
106       
107        from os import sep, getenv
108       
109        output_dir=''
110        file_name='details.csv'
111       
112        kwargs = {'file_name':'new2.txt',
113                  'output_dir':output_dir,
114                  'file_name':file_name,
115                  'who':'me',
116                  'what':'detail',
117                  'how':2,
118                  'why':241,
119#                  'completed':345
120                  }
121        store_parameters(verbose=False,**kwargs)
122       
123        kwargs['how']=55
124        kwargs['completed']=345
125
126        keys = kwargs.keys()
127        keys.sort()
128        line=''
129        header=''
130        count=0
131        #used the sorted keys to create the header and line data
132        for k in keys:
133#            print "%s = %s" %(k, kwargs[k])
134            header = header+str(k)
135            line = line+str(kwargs[k])
136            count+=1
137            if count <len(kwargs):
138                header = header+','
139                line = line+','
140        header+='\n'
141        line+='\n'
142       
143        kwargs['how']=55
144        kwargs['completed']=345
145       
146        store_parameters(verbose=False,**kwargs)
147       
148#        temp='detail_temp.csv'
149        fid = open(file_name)
150        file_header = fid.readline()
151        file_line1 = fid.readline()
152        file_line2 = fid.readline()
153        fid.close()
154       
155       
156        #file exists
157#        print 'header',header,'line',line
158#        print 'file_header',file_header,'file_line1',file_line1,'file_line2',file_line2
159        assert os.access(file_name, os.F_OK)
160        assert header == file_header
161        assert line == file_line1
162       
163        temp='detail_temp.csv'
164        os.remove(temp)
165        os.remove(file_name)       
166       
167    def test_store_parameters2(self):
168        """tests appending the data to the end of an existing file
169        """
170       
171        from os import sep, getenv
172       
173        output_dir=''
174        file_name='details.csv'
175       
176        kwargs = {'file_name':'new2.txt',
177                  'output_dir':output_dir,
178                  'file_name':file_name,
179                  'who':'me',
180                  'what':'detail',
181                  'how':2,
182                  'why':241,
183                  'completed':345
184                  }
185        store_parameters(verbose=False,**kwargs)
186       
187        kwargs['how']=55
188        kwargs['completed']=23.54532
189       
190        store_parameters(verbose=False,**kwargs)
191       
192        keys = kwargs.keys()
193        keys.sort()
194        line=''
195        header=''
196        count=0
197        #used the sorted keys to create the header and line data
198        for k in keys:
199#            print "%s = %s" %(k, kwargs[k])
200            header = header+str(k)
201            line = line+str(kwargs[k])
202            count+=1
203            if count <len(kwargs):
204                header = header+','
205                line = line+','
206        header+='\n'
207        line+='\n'
208       
209        fid = open(file_name)
210        file_header = fid.readline()
211        file_line1 = fid.readline()
212        file_line2 = fid.readline()
213        fid.close()
214       
215        assert os.access(file_name, os.F_OK)
216        assert header == file_header
217        assert line == file_line2
218       
219        os.remove(file_name)       
220       
221
222
223
224#################################################################################
225
226if __name__ == "__main__":
227    suite = unittest.makeSuite(Test_csv, 'test')
228    runner = unittest.TextTestRunner(verbosity=1)
229    runner.run(suite)
Note: See TracBrowser for help on using the repository browser.