source: SHX/trunk/src/SeismicHandler/tests/test_traces.py @ 152

Revision 152, 7.9 KB checked in by marcus, 14 years ago (diff)
  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Rev Id Date
Line 
1# -*- coding: utf-8 -*-
2
3from SeismicHandler.core.modules.Events import Message, MessageService
4from SeismicHandler.core.modules.Trace import Traces
5from SeismicHandler.core.commands import Run
6from SeismicHandler.core.error import InfoEntryNotFoundError, InfoEntryReadOnlyError
7
8import unittest
9
10class eventsTestCase(unittest.TestCase):
11    def setUp(self):
12        Run("cresharp")
13        self.traces = Traces()
14        # count starts from one!
15        self.trace = self.traces[0]
16
17    def tearDown(self):
18        Run("del all")
19
20    def testConnect(self):
21        self.assertEqual(len(self.traces), 1)
22
23    def testNameCase(self):
24        self.assertTrue(self.trace.ALLOC == self.trace.alloc)
25
26    def testInfoEntriesStart(self):
27        # all standard info entries for synthetic trace
28
29        self.assertEqual(self.trace.alloc, 1000)
30        self.assertEqual(self.trace.attrib, 0)
31        self.assertEqual(self.trace.amplicut, 0)
32        self.assertEqual(self.trace.chan1, None)
33        self.assertEqual(self.trace.chan2, None)
34        self.assertEqual(self.trace.comment, None)
35        self.assertEqual(self.trace.comp, None)
36        self.assertEqual(type(self.trace.data), int)
37        self.assertAlmostEqual(self.trace.delta, 0.05)
38        self.assertEqual(self.trace.dspcnt, None)
39        self.assertEqual(self.trace.dspfst, None)
40        self.assertEqual(self.trace.dspn, None)
41        self.assertEqual(self.trace.dspp, self.trace.prev)
42        self.assertEqual(self.trace.file, None)
43        self.assertEqual(self.trace.fromq, 0)
44        self.assertEqual(self.trace.length, 1000)
45        self.assertAlmostEqual(self.trace.maxval, 1.0)
46        self.assertEqual(self.trace.minval, None)
47        self.assertEqual(self.trace.modif, 0)
48        self.assertEqual(self.trace.next, None)
49        self.assertEqual(self.trace.nocalib, 0)
50        self.assertAlmostEqual(self.trace.norm, 1.0)
51        self.assertEqual(self.trace.opinfo, None)
52        self.assertEqual(self.trace.overlay, 0)
53        self.assertEqual(self.trace.qual, 0)
54        self.assertEqual(self.trace.recno, None)
55        self.assertEqual(self.trace.reduction, 1)
56        self.assertEqual(self.trace.s_origin, None)
57        #xxx START <SeismicHandler.core.shheaders.TIME object at 0xb7bf380c>
58        self.assertEqual(self.trace.stat, None)
59        self.assertEqual(self.trace.station, None)
60        self.assertEqual(self.trace.t_origin, None)
61        self.assertEqual(self.trace.usflg1, 0)
62        self.assertEqual(self.trace.usflg2, 0)
63        self.assertAlmostEqual(self.trace.weight, 1.0)
64        self.assertAlmostEqual(self.trace.zoom, 1.0)
65
66    def testInfoEntriesLib(self):
67        # run on slib directly
68        Run("set 1 station test")
69        Run("set 1 chan1 B")
70        Run("set 1 chan2 H")
71        Run("set 1 comp N")
72        Run("set 1 comment |comment|$blank|with|$blank|blanks|")
73        Run("trcfct 1 mul 25.7")
74        Run("zoom 1 2.5")
75
76        # trigger update trace info from lib
77        MessageService.trigger(Message(MessageService.REDRAW))
78
79        self.assertEqual(self.trace.alloc, 1000)
80        self.assertEqual(self.trace.attrib, 0)
81        self.assertEqual(self.trace.amplicut, 0)
82        self.assertEqual(self.trace.chan1, "B")
83        self.assertEqual(self.trace.chan2, "H")
84        self.assertEqual(self.trace.comment, "COMMENT WITH BLANKS")
85        self.assertEqual(self.trace.comp, "N")
86        self.assertEqual(type(self.trace.data), int)
87        self.assertAlmostEqual(self.trace.delta, 0.05)
88        self.assertEqual(self.trace.dspcnt, None)
89        self.assertEqual(self.trace.dspfst, None)
90        self.assertEqual(self.trace.dspn, None)
91        self.assertEqual(self.trace.dspp, self.trace.prev)
92        self.assertEqual(self.trace.file, None)
93        self.assertEqual(self.trace.fromq, 0)
94        self.assertEqual(self.trace.length, 1000)
95        self.assertAlmostEqual(self.trace.maxval, 25.7, 5)
96        self.assertEqual(self.trace.minval, None)
97        self.assertEqual(self.trace.modif, 0)
98        self.assertEqual(self.trace.next, None)
99        self.assertEqual(self.trace.nocalib, 0)
100        self.assertAlmostEqual(self.trace.norm, 1.0)
101        self.assertEqual(self.trace.opinfo, None)
102        self.assertEqual(self.trace.overlay, 0)
103        self.assertEqual(self.trace.qual, 0)
104        self.assertEqual(self.trace.recno, None)
105        self.assertEqual(self.trace.reduction, 1)
106        self.assertEqual(self.trace.s_origin, None)
107        #xxx START <SeismicHandler.core.shheaders.TIME object at 0xb7bf380c>
108        self.assertEqual(self.trace.stat, None)
109        self.assertEqual(self.trace.station, "TEST")
110        self.assertEqual(self.trace.t_origin, None)
111        self.assertEqual(self.trace.usflg1, 0)
112        self.assertEqual(self.trace.usflg2, 0)
113        self.assertAlmostEqual(self.trace.weight, 1.0)
114        self.assertAlmostEqual(self.trace.zoom, 2.5)
115
116#        self.trace.listInfo()
117
118    def testInfoEntriesPy(self):
119        # set values via python
120        MessageService.block(Message(MessageService.TRACEUPDATE))
121        self.trace.station = "FOOBAR"
122        self.trace.chan1 = "E"
123        self.trace.chan2 = "N"
124        self.trace.comp = "Z"
125        self.trace.comment = "comment with blanks"
126        self.trace.zoom = 5
127        MessageService.unblock(Message(MessageService.TRACEUPDATE))
128
129        self.assertEqual(self.trace.alloc, 1000)
130        self.assertEqual(self.trace.attrib, 0)
131        self.assertEqual(self.trace.amplicut, 0)
132        self.assertEqual(self.trace.chan1, "E")
133        self.assertEqual(self.trace.chan2, "N")
134        self.assertEqual(self.trace.comment, "comment with blanks")
135        self.assertEqual(self.trace.comp, "Z")
136        self.assertEqual(type(self.trace.data), int)
137        self.assertAlmostEqual(self.trace.delta, 0.05)
138        self.assertEqual(self.trace.dspcnt, None)
139        self.assertEqual(self.trace.dspfst, None)
140        self.assertEqual(self.trace.dspn, None)
141        self.assertEqual(self.trace.dspp, self.trace.prev)
142        self.assertEqual(self.trace.file, None)
143        self.assertEqual(self.trace.fromq, 0)
144        self.assertEqual(self.trace.length, 1000)
145        self.assertAlmostEqual(self.trace.maxval, 1.0, 5)
146        self.assertEqual(self.trace.minval, None)
147        self.assertEqual(self.trace.modif, 0)
148        self.assertEqual(self.trace.next, None)
149        self.assertEqual(self.trace.nocalib, 0)
150        self.assertAlmostEqual(self.trace.norm, 1.0)
151        self.assertEqual(self.trace.opinfo, None)
152        self.assertEqual(self.trace.overlay, 0)
153        self.assertEqual(self.trace.qual, 0)
154        self.assertEqual(self.trace.recno, None)
155        self.assertEqual(self.trace.reduction, 1)
156        self.assertEqual(self.trace.s_origin, None)
157        #xxx START <SeismicHandler.core.shheaders.TIME object at 0xb7bf380c>
158        self.assertEqual(self.trace.stat, None)
159        self.assertEqual(self.trace.station, "FOOBAR")
160        self.assertEqual(self.trace.t_origin, None)
161        self.assertEqual(self.trace.usflg1, 0)
162        self.assertEqual(self.trace.usflg2, 0)
163        self.assertAlmostEqual(self.trace.weight, 1.0)
164        self.assertAlmostEqual(self.trace.zoom, 5.0)
165
166    def testInfoEntriesPyChars(self):
167        # set values via python - only one (e.g. comp missing => defaults to
168        # null byte character
169        self.trace.chan1 = "E"
170
171        MessageService.trigger(Message(MessageService.REDRAW))
172
173        self.assertEqual(self.trace.chan1, "E")
174        self.assertEqual(self.trace.chan2, None)
175        self.assertEqual(self.trace.comp, None)
176
177    def testReadOnly(self):
178        try:
179            self.trace.delta=1
180        except InfoEntryReadOnlyError:
181            pass
182        else:
183            self.fail("read only failure")
184
185    def testNotFound(self):
186        try:
187            self.trace.nonexisting == 1
188        except InfoEntryNotFoundError:
189            pass
190        else:
191            self.fail("non existing failure")
192
193def suite():
194    return unittest.makeSuite(eventsTestCase, 'test')
195
196if __name__ == "__main__":
197    unittest.main(defaultTest='suite')
Note: See TracBrowser for help on using the repository browser.