Commit 562eded470142529eae2f204af493c22d19bce19

Authored by Jürgen Knödlseder
1 parent e995b59b

Add ctbin command line tests to test_python_ctools.py.

Note that test_python_ctools.py could ultimately replace all ctools, as for the shell script we anyways to not recover the results. Still, the shell script may still make some limited sense.
test/test_ctbin.py
1 #! /usr/bin/env python 1 #! /usr/bin/env python
2 # ========================================================================== 2 # ==========================================================================
3 -# This scripts performs unit tests for the ctbin module. 3 +# This scripts performs unit tests for the ctbin tool.
4 # 4 #
5 # Copyright (C) 2014-2016 Juergen Knoedlseder 5 # Copyright (C) 2014-2016 Juergen Knoedlseder
6 # 6 #
@@ -18,16 +18,20 @@ @@ -18,16 +18,20 @@
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. 18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
19 # 19 #
20 # ========================================================================== 20 # ==========================================================================
  21 +import os
21 import gammalib 22 import gammalib
22 import ctools 23 import ctools
23 24
24 25
25 -# =========================== #  
26 -# Test class for ctbin module #  
27 -# =========================== # 26 +# ========================= #
  27 +# Test class for ctbin tool #
  28 +# ========================= #
28 class Test(gammalib.GPythonTestSuite): 29 class Test(gammalib.GPythonTestSuite):
29 """ 30 """
30 - Test class for ctbin module. 31 + Test class for ctbin tool.
  32 +
  33 + This test class makes unit tests for the ctbin tool by using it from
  34 + the command line and from Python.
31 """ 35 """
32 36
33 # Constructor 37 # Constructor
@@ -53,15 +57,66 @@ class Test(gammalib.GPythonTestSuite): @@ -53,15 +57,66 @@ class Test(gammalib.GPythonTestSuite):
53 self.name("ctbin") 57 self.name("ctbin")
54 58
55 # Append tests 59 # Append tests
56 - self.append(self._test_ctbin, "Test ctbin") 60 + self.append(self._test_ctbin_cmd, "Test ctbin on command line")
  61 + self.append(self._test_ctbin_python, "Test ctbin from Python")
57 62
58 # Return 63 # Return
59 return 64 return
60 65
61 - # Test ctbin  
62 - def _test_ctbin(self): 66 + # Test ctbin on command line
  67 + def _test_ctbin_cmd(self):
63 """ 68 """
64 - Test ctbin. 69 + Test ctbin on the command line.
  70 + """
  71 + # Set ctbin tool
  72 + ctbin = "../src/ctbin/ctbin"
  73 + noout = " >/dev/null"
  74 +
  75 + # Setup ctbin command
  76 + cmd = ctbin+' inobs="'+self._events_name+'"'+ \
  77 + ' outcube="cntmap_cmd1.fits"'+\
  78 + ' emin=0.1 emax=100.0 enumbins=20 ebinalg="LOG"'+ \
  79 + ' nxpix=200 nypix=200 binsz=0.02 coordsys="CEL"'+ \
  80 + ' xref=83.63 yref=22.01 proj="CAR"'+noout
  81 +
  82 + # Execute ctbin, make sure we catch any exception
  83 + try:
  84 + rc = os.system(cmd)
  85 + except:
  86 + pass
  87 +
  88 + # Check if execution was successful
  89 + self.test_assert(rc == 0,
  90 + "Successful ctbin execution on command line")
  91 +
  92 + # Load counts cube and check content.
  93 + evt = gammalib.GCTAEventCube("cntmap_cmd1.fits")
  94 + self._test_cube(evt, 5542)
  95 +
  96 + # Setup ctbin command
  97 + cmd = ctbin+' inobs="events_that_do_not_exist.fits"'+ \
  98 + ' outcube="cntmap_cmd2.fits"'+\
  99 + ' emin=0.1 emax=100.0 enumbins=20 ebinalg="LOG"'+ \
  100 + ' nxpix=200 nypix=200 binsz=0.02 coordsys="CEL"'+ \
  101 + ' xref=83.63 yref=22.01 proj="CAR"'+noout
  102 +
  103 + # Execute ctbin, make sure we catch any exception
  104 + try:
  105 + rc = os.system(cmd)
  106 + except:
  107 + pass
  108 +
  109 + # Check if execution failed
  110 + self.test_assert(rc != 0,
  111 + "Failure of ctbin execution on command line")
  112 +
  113 + # Return
  114 + return
  115 +
  116 + # Test ctbin from Python
  117 + def _test_ctbin_python(self):
  118 + """
  119 + Test ctbin from Python.
65 """ 120 """
66 # Set-up ctbin 121 # Set-up ctbin
67 bin = ctools.ctbin() 122 bin = ctools.ctbin()
test/test_python_ctools.py
@@ -40,15 +40,15 @@ import test_cterror @@ -40,15 +40,15 @@ import test_cterror
40 import test_pipelines 40 import test_pipelines
41 41
42 42
43 -# ================== #  
44 -# Perform unit tests #  
45 -# ================== # 43 +# ========================= #
  44 +# Perform ctools unit tests #
  45 +# ========================= #
46 def test(installed=False): 46 def test(installed=False):
47 """ 47 """
48 - Perform unit testing for Python interface. 48 + Perform unit testing for ctools.
49 """ 49 """
50 # Allocate test suite container 50 # Allocate test suite container
51 - suites = gammalib.GTestSuites("ctools Python module unit testing") 51 + suites = gammalib.GTestSuites("ctools unit testing")
52 52
53 # Allocate test suites and append them to the container 53 # Allocate test suites and append them to the container
54 suite_ctobssim = test_ctobssim.Test() 54 suite_ctobssim = test_ctobssim.Test()
@@ -153,8 +153,6 @@ def test(installed=False): @@ -153,8 +153,6 @@ def test(installed=False):
153 # Main routine entry point # 153 # Main routine entry point #
154 # ======================== # 154 # ======================== #
155 if __name__ == '__main__': 155 if __name__ == '__main__':
156 - """  
157 - Perform unit testing for Python interface.  
158 - """ 156 +
159 # Run tests 157 # Run tests
160 test() 158 test()