Commit 1985a10ddffafc19a29c03f82d3fd17822e70f31
1 parent
90f39c2e
Add modules for Python unit tests.
Showing
11 changed files
with
1040 additions
and
0 deletions
test/test_GApp.py
0 → 100755
| 1 | +# ========================================================================== | |
| 2 | +# This module performs unit tests for the GammaLib app module. | |
| 3 | +# | |
| 4 | +# Copyright (C) 2012 Juergen Knoedlseder | |
| 5 | +# | |
| 6 | +# This program is free software: you can redistribute it and/or modify | |
| 7 | +# it under the terms of the GNU General Public License as published by | |
| 8 | +# the Free Software Foundation, either version 3 of the License, or | |
| 9 | +# (at your option) any later version. | |
| 10 | +# | |
| 11 | +# This program is distributed in the hope that it will be useful, | |
| 12 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 | +# GNU General Public License for more details. | |
| 15 | +# | |
| 16 | +# You should have received a copy of the GNU General Public License | |
| 17 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| 18 | +# | |
| 19 | +# ========================================================================== | |
| 20 | +from gammalib import * | |
| 21 | +from math import * | |
| 22 | +import os | |
| 23 | + | |
| 24 | + | |
| 25 | +# ================================== # | |
| 26 | +# Test class for GammaLib app module # | |
| 27 | +# ================================== # | |
| 28 | +class Test(GPythonTestSuite): | |
| 29 | + """ | |
| 30 | + Test class for GammaLib app module. | |
| 31 | + """ | |
| 32 | + # Constructor | |
| 33 | + def __init__(self): | |
| 34 | + """ | |
| 35 | + Constructor. | |
| 36 | + """ | |
| 37 | + # Call base class constructor | |
| 38 | + GPythonTestSuite.__init__(self) | |
| 39 | + | |
| 40 | + # Return | |
| 41 | + return | |
| 42 | + | |
| 43 | + | |
| 44 | + # Set test functions | |
| 45 | + def set(self): | |
| 46 | + """ | |
| 47 | + Set all test functions. | |
| 48 | + """ | |
| 49 | + # Set test name | |
| 50 | + self.name("app") | |
| 51 | + | |
| 52 | + # Append tests | |
| 53 | + self.append(self.test, "Dummy test") | |
| 54 | + | |
| 55 | + # Return | |
| 56 | + return | |
| 57 | + | |
| 58 | + | |
| 59 | + # Test function | |
| 60 | + def test(self): | |
| 61 | + """ | |
| 62 | + Test function. | |
| 63 | + """ | |
| 64 | + # Return | |
| 65 | + return | ... | ... |
test/test_GFits.py
0 → 100755
| 1 | +# ========================================================================== | |
| 2 | +# This module performs unit tests for the GammaLib FITS module. | |
| 3 | +# | |
| 4 | +# Copyright (C) 2012 Juergen Knoedlseder | |
| 5 | +# | |
| 6 | +# This program is free software: you can redistribute it and/or modify | |
| 7 | +# it under the terms of the GNU General Public License as published by | |
| 8 | +# the Free Software Foundation, either version 3 of the License, or | |
| 9 | +# (at your option) any later version. | |
| 10 | +# | |
| 11 | +# This program is distributed in the hope that it will be useful, | |
| 12 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 | +# GNU General Public License for more details. | |
| 15 | +# | |
| 16 | +# You should have received a copy of the GNU General Public License | |
| 17 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| 18 | +# | |
| 19 | +# ========================================================================== | |
| 20 | +from gammalib import * | |
| 21 | +from math import * | |
| 22 | +import os | |
| 23 | +import sys | |
| 24 | + | |
| 25 | + | |
| 26 | +# =================================== # | |
| 27 | +# Test class for GammaLib FITS module # | |
| 28 | +# =================================== # | |
| 29 | +class Test(GPythonTestSuite): | |
| 30 | + """ | |
| 31 | + Test class for GammaLib FITS module. | |
| 32 | + """ | |
| 33 | + def __init__(self): | |
| 34 | + """ | |
| 35 | + Constructor. | |
| 36 | + """ | |
| 37 | + # Call base class constructor | |
| 38 | + GPythonTestSuite.__init__(self) | |
| 39 | + | |
| 40 | + # Return | |
| 41 | + return | |
| 42 | + | |
| 43 | + def set(self): | |
| 44 | + """ | |
| 45 | + Set all test functions. | |
| 46 | + """ | |
| 47 | + # Set test name | |
| 48 | + self.name("fits") | |
| 49 | + | |
| 50 | + # Append tests | |
| 51 | + self.append(self.test_fits, "Test GFits") | |
| 52 | + | |
| 53 | + # Return | |
| 54 | + return | |
| 55 | + | |
| 56 | + def test_fits(self): | |
| 57 | + """ | |
| 58 | + Test FITS interface. | |
| 59 | + """ | |
| 60 | + # Set filenames | |
| 61 | + file1 = "test_python_fits_v1.fits" | |
| 62 | + file2 = "test_python_fits_v2.fits" | |
| 63 | + | |
| 64 | + # Remove test files | |
| 65 | + try: | |
| 66 | + os.remove(file1) | |
| 67 | + os.remove(file2) | |
| 68 | + except: | |
| 69 | + pass | |
| 70 | + | |
| 71 | + # Create FITS file | |
| 72 | + fits = GFits(file1, True) | |
| 73 | + sys.stdout.write(".") | |
| 74 | + | |
| 75 | + # Create images | |
| 76 | + nx = 10 | |
| 77 | + ny = 10 | |
| 78 | + img1 = GFitsImageByte(nx,ny) | |
| 79 | + img2 = GFitsImageDouble(nx,ny) | |
| 80 | + img3 = GFitsImageFloat(nx,ny) | |
| 81 | + img4 = GFitsImageLong(nx,ny) | |
| 82 | + img5 = GFitsImageLongLong(nx,ny) | |
| 83 | + img6 = GFitsImageSByte(nx,ny) | |
| 84 | + img7 = GFitsImageShort(nx,ny) | |
| 85 | + img8 = GFitsImageULong(nx,ny) | |
| 86 | + img9 = GFitsImageUShort(nx,ny) | |
| 87 | + for x in range(nx): | |
| 88 | + for y in range(ny): | |
| 89 | + img1[x,y] = x+y*nx | |
| 90 | + img2[x,y] = x+y*nx | |
| 91 | + img3[x,y] = x+y*nx | |
| 92 | + img4[x,y] = x+y*nx | |
| 93 | + img5[x,y] = x+y*nx | |
| 94 | + img6[x,y] = x+y*nx | |
| 95 | + img7[x,y] = x+y*nx | |
| 96 | + img8[x,y] = x+y*nx | |
| 97 | + img9[x,y] = x+y*nx | |
| 98 | + img1.extname("Byte") | |
| 99 | + img2.extname("Double") | |
| 100 | + img3.extname("Float") | |
| 101 | + img4.extname("Long") | |
| 102 | + img5.extname("LongLong") | |
| 103 | + img6.extname("SByte") | |
| 104 | + img7.extname("Short") | |
| 105 | + img8.extname("ULong") | |
| 106 | + img9.extname("UShort") | |
| 107 | + sys.stdout.write(".") | |
| 108 | + | |
| 109 | + # Append images to FITS file | |
| 110 | + fits.append(img1) | |
| 111 | + fits.append(img2) | |
| 112 | + fits.append(img3) | |
| 113 | + fits.append(img4) | |
| 114 | + fits.append(img5) | |
| 115 | + #fits.append(img6) # Not supported in older cfitsio | |
| 116 | + fits.append(img7) | |
| 117 | + fits.append(img8) | |
| 118 | + fits.append(img9) | |
| 119 | + sys.stdout.write(".") | |
| 120 | + | |
| 121 | + # Set header keywords | |
| 122 | + img_byte = fits.image(0) | |
| 123 | + img_byte.card("test", "test-value", "this is for testing") | |
| 124 | + img_byte.card("real", 3.1415, "a real value") | |
| 125 | + img_byte.card("int", 41, "an integer value") | |
| 126 | + sys.stdout.write(".") | |
| 127 | + | |
| 128 | + # Create table columns | |
| 129 | + nrows = 10 | |
| 130 | + col1 = GFitsTableBitCol("BIT", nrows) | |
| 131 | + col2 = GFitsTableBoolCol("BOOLEAN", nrows) | |
| 132 | + col3 = GFitsTableByteCol("BYTE", nrows) | |
| 133 | + col4 = GFitsTableDoubleCol("DOUBLE", nrows) | |
| 134 | + col5 = GFitsTableFloatCol("FLOAT", nrows) | |
| 135 | + col6 = GFitsTableLongCol("LONG", nrows) | |
| 136 | + col7 = GFitsTableLongLongCol("LONGLONG", nrows) | |
| 137 | + col8 = GFitsTableShortCol("SHORT", nrows) | |
| 138 | + col9 = GFitsTableStringCol("STRING", nrows, 20) | |
| 139 | + col10 = GFitsTableULongCol("ULONG", nrows) | |
| 140 | + col11 = GFitsTableUShortCol("USHORT", nrows) | |
| 141 | + for i in range(nrows): | |
| 142 | + col1[i] = i % 2 | |
| 143 | + col2[i] = i % 2 | |
| 144 | + col3[i] = i | |
| 145 | + col4[i] = i*0.01 | |
| 146 | + col5[i] = i*0.01 | |
| 147 | + col6[i] = i*100 | |
| 148 | + col7[i] = i*10000 | |
| 149 | + col8[i] = i*100 | |
| 150 | + col9[i] = str(i*100) | |
| 151 | + col10[i] = i*100 | |
| 152 | + col11[i] = i*100 | |
| 153 | + sys.stdout.write(".") | |
| 154 | + | |
| 155 | + # Set ASCII table | |
| 156 | + tbl_ascii = GFitsAsciiTable() | |
| 157 | + #tbl_ascii.append_column(col1) # Need to implement ?/! | |
| 158 | + #tbl_ascii.append_column(col2) # Need to implement ?/! | |
| 159 | + tbl_ascii.append_column(col3) | |
| 160 | + tbl_ascii.append_column(col4) | |
| 161 | + tbl_ascii.append_column(col5) | |
| 162 | + tbl_ascii.append_column(col6) | |
| 163 | + tbl_ascii.append_column(col7) | |
| 164 | + tbl_ascii.append_column(col8) | |
| 165 | + tbl_ascii.append_column(col9) | |
| 166 | + tbl_ascii.append_column(col10) | |
| 167 | + tbl_ascii.append_column(col11) | |
| 168 | + tbl_ascii.extname("ASCII table") | |
| 169 | + fits.append(tbl_ascii) | |
| 170 | + sys.stdout.write(".") | |
| 171 | + | |
| 172 | + # Set binary table | |
| 173 | + tbl_bin = GFitsBinTable() | |
| 174 | + tbl_bin.append_column(col1) | |
| 175 | + tbl_bin.append_column(col2) | |
| 176 | + tbl_bin.append_column(col3) | |
| 177 | + tbl_bin.append_column(col4) | |
| 178 | + tbl_bin.append_column(col5) | |
| 179 | + tbl_bin.append_column(col6) | |
| 180 | + tbl_bin.append_column(col7) | |
| 181 | + tbl_bin.append_column(col8) | |
| 182 | + tbl_bin.append_column(col9) | |
| 183 | + tbl_bin.append_column(col10) | |
| 184 | + tbl_bin.append_column(col11) | |
| 185 | + tbl_bin.extname("Binary table") | |
| 186 | + fits.append(tbl_bin) | |
| 187 | + sys.stdout.write(".") | |
| 188 | + | |
| 189 | + # Save FITS file | |
| 190 | + #sys.stdout.write(fits+"\n") | |
| 191 | + fits.save() | |
| 192 | + sys.stdout.write(".") | |
| 193 | + | |
| 194 | + # Close FITS file | |
| 195 | + fits.close() | |
| 196 | + sys.stdout.write(".") | |
| 197 | + | |
| 198 | + # Re-open FITS file | |
| 199 | + fits = GFits(file1) | |
| 200 | + sys.stdout.write(".") | |
| 201 | + | |
| 202 | + # Get double precision image, take square root of pixel and save in | |
| 203 | + # another file | |
| 204 | + img_double = cast_GFitsImageDouble(fits.image("Double")) | |
| 205 | + for x in range(nx): | |
| 206 | + for y in range(ny): | |
| 207 | + img_double[x,y] = sqrt(img_double[x,y]) | |
| 208 | + #img_byte = cast_GFitsImageByte(fits.image("Double")) | |
| 209 | + sys.stdout.write(".") | |
| 210 | + | |
| 211 | + # Save into another FITS file | |
| 212 | + fits.saveto(file2) | |
| 213 | + sys.stdout.write(".") | |
| 214 | + | |
| 215 | + # Close FITS file | |
| 216 | + fits.close() | |
| 217 | + sys.stdout.write(".") | |
| 218 | + | |
| 219 | + # Return | |
| 220 | + return | ... | ... |
test/test_GLinalg.py
0 → 100755
| 1 | +# ========================================================================== | |
| 2 | +# This module performs unit tests for the GammaLib linalg module. | |
| 3 | +# | |
| 4 | +# Copyright (C) 2012 Juergen Knoedlseder | |
| 5 | +# | |
| 6 | +# This program is free software: you can redistribute it and/or modify | |
| 7 | +# it under the terms of the GNU General Public License as published by | |
| 8 | +# the Free Software Foundation, either version 3 of the License, or | |
| 9 | +# (at your option) any later version. | |
| 10 | +# | |
| 11 | +# This program is distributed in the hope that it will be useful, | |
| 12 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 | +# GNU General Public License for more details. | |
| 15 | +# | |
| 16 | +# You should have received a copy of the GNU General Public License | |
| 17 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| 18 | +# | |
| 19 | +# ========================================================================== | |
| 20 | +from gammalib import * | |
| 21 | +from math import * | |
| 22 | +import os | |
| 23 | + | |
| 24 | + | |
| 25 | +# ===================================== # | |
| 26 | +# Test class for GammaLib linalg module # | |
| 27 | +# ===================================== # | |
| 28 | +class Test(GPythonTestSuite): | |
| 29 | + """ | |
| 30 | + Test class for GammaLib linalg module. | |
| 31 | + """ | |
| 32 | + # Constructor | |
| 33 | + def __init__(self): | |
| 34 | + """ | |
| 35 | + Constructor. | |
| 36 | + """ | |
| 37 | + # Call base class constructor | |
| 38 | + GPythonTestSuite.__init__(self) | |
| 39 | + | |
| 40 | + # Return | |
| 41 | + return | |
| 42 | + | |
| 43 | + | |
| 44 | + # Set test functions | |
| 45 | + def set(self): | |
| 46 | + """ | |
| 47 | + Set all test functions. | |
| 48 | + """ | |
| 49 | + # Set test name | |
| 50 | + self.name("linalg") | |
| 51 | + | |
| 52 | + # Append tests | |
| 53 | + self.append(self.test, "Dummy test") | |
| 54 | + | |
| 55 | + # Return | |
| 56 | + return | |
| 57 | + | |
| 58 | + | |
| 59 | + # Test function | |
| 60 | + def test(self): | |
| 61 | + """ | |
| 62 | + Test function. | |
| 63 | + """ | |
| 64 | + # Return | |
| 65 | + return | ... | ... |
test/test_GModel.py
0 → 100755
| 1 | +# ========================================================================== | |
| 2 | +# This module performs unit tests for the GammaLib model module. | |
| 3 | +# | |
| 4 | +# Copyright (C) 2012 Juergen Knoedlseder | |
| 5 | +# | |
| 6 | +# This program is free software: you can redistribute it and/or modify | |
| 7 | +# it under the terms of the GNU General Public License as published by | |
| 8 | +# the Free Software Foundation, either version 3 of the License, or | |
| 9 | +# (at your option) any later version. | |
| 10 | +# | |
| 11 | +# This program is distributed in the hope that it will be useful, | |
| 12 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 | +# GNU General Public License for more details. | |
| 15 | +# | |
| 16 | +# You should have received a copy of the GNU General Public License | |
| 17 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| 18 | +# | |
| 19 | +# ========================================================================== | |
| 20 | +from gammalib import * | |
| 21 | +from math import * | |
| 22 | +import os | |
| 23 | + | |
| 24 | + | |
| 25 | +# ==================================== # | |
| 26 | +# Test class for GammaLib model module # | |
| 27 | +# ==================================== # | |
| 28 | +class Test(GPythonTestSuite): | |
| 29 | + """ | |
| 30 | + Test class for GammaLib model module. | |
| 31 | + """ | |
| 32 | + # Constructor | |
| 33 | + def __init__(self): | |
| 34 | + """ | |
| 35 | + Constructor. | |
| 36 | + """ | |
| 37 | + # Call base class constructor | |
| 38 | + GPythonTestSuite.__init__(self) | |
| 39 | + | |
| 40 | + # Return | |
| 41 | + return | |
| 42 | + | |
| 43 | + | |
| 44 | + # Set test functions | |
| 45 | + def set(self): | |
| 46 | + """ | |
| 47 | + Set all test functions. | |
| 48 | + """ | |
| 49 | + # Set test name | |
| 50 | + self.name("model") | |
| 51 | + | |
| 52 | + # Append tests | |
| 53 | + self.append(self.test, "Dummy test") | |
| 54 | + | |
| 55 | + # Return | |
| 56 | + return | |
| 57 | + | |
| 58 | + | |
| 59 | + # Test function | |
| 60 | + def test(self): | |
| 61 | + """ | |
| 62 | + Test function. | |
| 63 | + """ | |
| 64 | + # Return | |
| 65 | + return | ... | ... |
test/test_GNumerics.py
0 → 100755
| 1 | +# ========================================================================== | |
| 2 | +# This module performs unit tests for the GammaLib numerics module. | |
| 3 | +# | |
| 4 | +# Copyright (C) 2012 Juergen Knoedlseder | |
| 5 | +# | |
| 6 | +# This program is free software: you can redistribute it and/or modify | |
| 7 | +# it under the terms of the GNU General Public License as published by | |
| 8 | +# the Free Software Foundation, either version 3 of the License, or | |
| 9 | +# (at your option) any later version. | |
| 10 | +# | |
| 11 | +# This program is distributed in the hope that it will be useful, | |
| 12 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 | +# GNU General Public License for more details. | |
| 15 | +# | |
| 16 | +# You should have received a copy of the GNU General Public License | |
| 17 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| 18 | +# | |
| 19 | +# ========================================================================== | |
| 20 | +from gammalib import * | |
| 21 | +from math import * | |
| 22 | +import os | |
| 23 | + | |
| 24 | + | |
| 25 | +# ======================================= # | |
| 26 | +# Test class for GammaLib numerics module # | |
| 27 | +# ======================================= # | |
| 28 | +class Test(GPythonTestSuite): | |
| 29 | + """ | |
| 30 | + Test class for GammaLib numerics module. | |
| 31 | + """ | |
| 32 | + # Constructor | |
| 33 | + def __init__(self): | |
| 34 | + """ | |
| 35 | + Constructor. | |
| 36 | + """ | |
| 37 | + # Call base class constructor | |
| 38 | + GPythonTestSuite.__init__(self) | |
| 39 | + | |
| 40 | + # Return | |
| 41 | + return | |
| 42 | + | |
| 43 | + | |
| 44 | + # Set test functions | |
| 45 | + def set(self): | |
| 46 | + """ | |
| 47 | + Set all test functions. | |
| 48 | + """ | |
| 49 | + # Set test name | |
| 50 | + self.name("numerics") | |
| 51 | + | |
| 52 | + # Append tests | |
| 53 | + self.append(self.test, "Dummy test") | |
| 54 | + | |
| 55 | + # Return | |
| 56 | + return | |
| 57 | + | |
| 58 | + | |
| 59 | + # Test function | |
| 60 | + def test(self): | |
| 61 | + """ | |
| 62 | + Test function. | |
| 63 | + """ | |
| 64 | + # Return | |
| 65 | + return | ... | ... |
test/test_GObs.py
0 → 100755
| 1 | +# ========================================================================== | |
| 2 | +# This module performs unit tests for the GammaLib obs module. | |
| 3 | +# | |
| 4 | +# Copyright (C) 2012 Juergen Knoedlseder | |
| 5 | +# | |
| 6 | +# This program is free software: you can redistribute it and/or modify | |
| 7 | +# it under the terms of the GNU General Public License as published by | |
| 8 | +# the Free Software Foundation, either version 3 of the License, or | |
| 9 | +# (at your option) any later version. | |
| 10 | +# | |
| 11 | +# This program is distributed in the hope that it will be useful, | |
| 12 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 | +# GNU General Public License for more details. | |
| 15 | +# | |
| 16 | +# You should have received a copy of the GNU General Public License | |
| 17 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| 18 | +# | |
| 19 | +# ========================================================================== | |
| 20 | +from gammalib import * | |
| 21 | +from math import * | |
| 22 | +import os | |
| 23 | + | |
| 24 | + | |
| 25 | +# ================================== # | |
| 26 | +# Test class for GammaLib obs module # | |
| 27 | +# ================================== # | |
| 28 | +class Test(GPythonTestSuite): | |
| 29 | + """ | |
| 30 | + Test class for GammaLib obs module. | |
| 31 | + """ | |
| 32 | + # Constructor | |
| 33 | + def __init__(self): | |
| 34 | + """ | |
| 35 | + Constructor. | |
| 36 | + """ | |
| 37 | + # Call base class constructor | |
| 38 | + GPythonTestSuite.__init__(self) | |
| 39 | + | |
| 40 | + # Return | |
| 41 | + return | |
| 42 | + | |
| 43 | + | |
| 44 | + # Set test functions | |
| 45 | + def set(self): | |
| 46 | + """ | |
| 47 | + Set all test functions. | |
| 48 | + """ | |
| 49 | + # Set test name | |
| 50 | + self.name("obs") | |
| 51 | + | |
| 52 | + # Append tests | |
| 53 | + self.append(self.test, "Dummy test") | |
| 54 | + | |
| 55 | + # Return | |
| 56 | + return | |
| 57 | + | |
| 58 | + | |
| 59 | + # Test function | |
| 60 | + def test(self): | |
| 61 | + """ | |
| 62 | + Test function. | |
| 63 | + """ | |
| 64 | + # Return | |
| 65 | + return | ... | ... |
test/test_GOpt.py
0 → 100755
| 1 | +# ========================================================================== | |
| 2 | +# This module performs unit tests for the GammaLib opt module. | |
| 3 | +# | |
| 4 | +# Copyright (C) 2012 Juergen Knoedlseder | |
| 5 | +# | |
| 6 | +# This program is free software: you can redistribute it and/or modify | |
| 7 | +# it under the terms of the GNU General Public License as published by | |
| 8 | +# the Free Software Foundation, either version 3 of the License, or | |
| 9 | +# (at your option) any later version. | |
| 10 | +# | |
| 11 | +# This program is distributed in the hope that it will be useful, | |
| 12 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 | +# GNU General Public License for more details. | |
| 15 | +# | |
| 16 | +# You should have received a copy of the GNU General Public License | |
| 17 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| 18 | +# | |
| 19 | +# ========================================================================== | |
| 20 | +from gammalib import * | |
| 21 | +from math import * | |
| 22 | +import os | |
| 23 | + | |
| 24 | + | |
| 25 | +# ================================== # | |
| 26 | +# Test class for GammaLib opt module # | |
| 27 | +# ================================== # | |
| 28 | +class Test(GPythonTestSuite): | |
| 29 | + """ | |
| 30 | + Test class for GammaLib opt module. | |
| 31 | + """ | |
| 32 | + # Constructor | |
| 33 | + def __init__(self): | |
| 34 | + """ | |
| 35 | + Constructor. | |
| 36 | + """ | |
| 37 | + # Call base class constructor | |
| 38 | + GPythonTestSuite.__init__(self) | |
| 39 | + | |
| 40 | + # Return | |
| 41 | + return | |
| 42 | + | |
| 43 | + | |
| 44 | + # Set test functions | |
| 45 | + def set(self): | |
| 46 | + """ | |
| 47 | + Set all test functions. | |
| 48 | + """ | |
| 49 | + # Set test name | |
| 50 | + self.name("opt") | |
| 51 | + | |
| 52 | + # Append tests | |
| 53 | + self.append(self.test, "Dummy test") | |
| 54 | + | |
| 55 | + # Return | |
| 56 | + return | |
| 57 | + | |
| 58 | + | |
| 59 | + # Test function | |
| 60 | + def test(self): | |
| 61 | + """ | |
| 62 | + Test function. | |
| 63 | + """ | |
| 64 | + # Return | |
| 65 | + return | ... | ... |
test/test_GSky.py
0 → 100755
| 1 | +# ========================================================================== | |
| 2 | +# This module performs unit tests for the GammaLib sky module. | |
| 3 | +# | |
| 4 | +# Copyright (C) 2012 Juergen Knoedlseder | |
| 5 | +# | |
| 6 | +# This program is free software: you can redistribute it and/or modify | |
| 7 | +# it under the terms of the GNU General Public License as published by | |
| 8 | +# the Free Software Foundation, either version 3 of the License, or | |
| 9 | +# (at your option) any later version. | |
| 10 | +# | |
| 11 | +# This program is distributed in the hope that it will be useful, | |
| 12 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 | +# GNU General Public License for more details. | |
| 15 | +# | |
| 16 | +# You should have received a copy of the GNU General Public License | |
| 17 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| 18 | +# | |
| 19 | +# ========================================================================== | |
| 20 | +from gammalib import * | |
| 21 | +from math import * | |
| 22 | +import os | |
| 23 | + | |
| 24 | + | |
| 25 | +# ================================== # | |
| 26 | +# Test class for GammaLib sky module # | |
| 27 | +# ================================== # | |
| 28 | +class Test(GPythonTestSuite): | |
| 29 | + """ | |
| 30 | + Test class for GammaLib sky module. | |
| 31 | + """ | |
| 32 | + def __init__(self): | |
| 33 | + """ | |
| 34 | + Constructor. | |
| 35 | + """ | |
| 36 | + # Call base class constructor | |
| 37 | + GPythonTestSuite.__init__(self) | |
| 38 | + | |
| 39 | + # Return | |
| 40 | + return | |
| 41 | + | |
| 42 | + def set(self): | |
| 43 | + """ | |
| 44 | + Set all test functions. | |
| 45 | + """ | |
| 46 | + # Set test name | |
| 47 | + self.name("sky") | |
| 48 | + | |
| 49 | + # Append tests | |
| 50 | + self.append(self.test_skymap_healpix, "Test HEALPix map") | |
| 51 | + self.append(self.test_skymap_car, "Test CAR projection map") | |
| 52 | + self.append(self.test_skymap_tan, "Test TAN projection map") | |
| 53 | + self.append(self.test_skymap_stg, "Test STG projection map") | |
| 54 | + self.append(self.test_skymap_azp, "Test AZP projection map") | |
| 55 | + | |
| 56 | + # Return | |
| 57 | + return | |
| 58 | + | |
| 59 | + | |
| 60 | + # Generic skymap pixel transformation test | |
| 61 | + def test_skymap_pixels(self, pixels, map): | |
| 62 | + """ | |
| 63 | + Control coordinate and pixel transformation methods. | |
| 64 | + """ | |
| 65 | + # Control pix2dir / dir2pix methods for all pixels | |
| 66 | + for i in range(pixels.npix()): | |
| 67 | + dir = pixels.pix2dir(i) | |
| 68 | + ipix = pixels.dir2pix(dir) | |
| 69 | + msg = map + " pix2dir/dir2pix check for pixel "+str(i) | |
| 70 | + err = map + " GSkymap trouble with pixel "+str(i)+" ("+str(ipix)+ \ | |
| 71 | + "), RA="+str(dir.ra()*180/pi)+", Dec="+str(dir.dec()*180/pi) | |
| 72 | + self.test_assert(i == ipix, msg, err) | |
| 73 | + | |
| 74 | + # Control SkyDir coordinate transformation for all pixels | |
| 75 | + for i in range(pixels.npix()): | |
| 76 | + dir = pixels.pix2dir(i) | |
| 77 | + dir_new = GSkyDir() | |
| 78 | + dir_new.lb(dir.l(),dir.b()) | |
| 79 | + dra = abs(dir.ra() - dir_new.ra()) | |
| 80 | + if (dra >= 5.0): | |
| 81 | + dra -= 2.0*pi | |
| 82 | + ddec = abs(dir.dec() - dir_new.dec()) | |
| 83 | + msg = map + " dir check for pixel "+str(i) | |
| 84 | + err = map + " GSkymap trouble with pixel "+str(i)+" ("+str(dra)+ \ | |
| 85 | + ","+str(ddec)+")" | |
| 86 | + self.test_assert(not (dra > 1.0e-9 or ddec > 1.0e-9), msg, err) | |
| 87 | + | |
| 88 | + # Return | |
| 89 | + return | |
| 90 | + | |
| 91 | + | |
| 92 | + # Generic skymap projection test | |
| 93 | + def test_skymap_proj(self, proj): | |
| 94 | + """ | |
| 95 | + Test skymap projection. | |
| 96 | + """ | |
| 97 | + # Set filename | |
| 98 | + file = "test_python_skymap_"+proj+".fits" | |
| 99 | + | |
| 100 | + # Remove test files | |
| 101 | + try: | |
| 102 | + os.remove(file) | |
| 103 | + except: | |
| 104 | + pass | |
| 105 | + | |
| 106 | + # Create skymap | |
| 107 | + pixels = GSkymap(proj, "CEL", 83.6331, 22.0145, -3.7, 2.6, 5, 5, 20) | |
| 108 | + for map in range(pixels.nmaps()): | |
| 109 | + for i in range(pixels.npix()): | |
| 110 | + pixels[i,map] = i+map*pixels.npix() | |
| 111 | + pixels.save(file) | |
| 112 | + | |
| 113 | + # Test coordinate and pixel transformations | |
| 114 | + self.test_skymap_pixels(pixels, proj) | |
| 115 | + | |
| 116 | + # Return | |
| 117 | + return | |
| 118 | + | |
| 119 | + | |
| 120 | + # Test HEALPix projection | |
| 121 | + def test_skymap_healpix(self): | |
| 122 | + """ | |
| 123 | + Test HEALPix interface. | |
| 124 | + """ | |
| 125 | + # Set filenames | |
| 126 | + file1 = "test_python_skymap_hpx_v1.fits" | |
| 127 | + file2 = "test_python_skymap_hpx_v2.fits" | |
| 128 | + | |
| 129 | + # Remove test files | |
| 130 | + try: | |
| 131 | + os.remove(file1) | |
| 132 | + os.remove(file2) | |
| 133 | + except: | |
| 134 | + pass | |
| 135 | + | |
| 136 | + # Create HEALPix skymap | |
| 137 | + pixels = GSkymap("HPX", "GAL", 2, "RING", 2) | |
| 138 | + for i in range(pixels.npix()): | |
| 139 | + pixels[i] = i+1.0 | |
| 140 | + pixels[i,1] = i+1.0 + 1000.0 | |
| 141 | + pixels.save(file1) | |
| 142 | + | |
| 143 | + # Load HEALPix skymap | |
| 144 | + pixels = GSkymap(file1) | |
| 145 | + | |
| 146 | + # Control coordinate and pixel transformations | |
| 147 | + self.test_skymap_pixels(pixels, "HEALPix") | |
| 148 | + | |
| 149 | + # Save HEALPix skymap twice. The second saving should fail. | |
| 150 | + try: | |
| 151 | + pixels.save(file2, True) | |
| 152 | + pixels.save(file2) | |
| 153 | + except RuntimeError: | |
| 154 | + pass | |
| 155 | + else: | |
| 156 | + raise RuntimeError("*** TEST ERROR: FITS file overwritten!") | |
| 157 | + pixels.save(file2, True) | |
| 158 | + | |
| 159 | + # Load again HEALPix skymap | |
| 160 | + pixels = GSkymap(file1) | |
| 161 | + | |
| 162 | + # Return | |
| 163 | + return | |
| 164 | + | |
| 165 | + | |
| 166 | + # Test CAR projection | |
| 167 | + def test_skymap_car(self): | |
| 168 | + """ | |
| 169 | + Test CAR projection. | |
| 170 | + """ | |
| 171 | + # Execute generic test | |
| 172 | + self.test_skymap_proj("CAR") | |
| 173 | + | |
| 174 | + # Return | |
| 175 | + return | |
| 176 | + | |
| 177 | + | |
| 178 | + # Test TAN projection | |
| 179 | + def test_skymap_tan(self): | |
| 180 | + """ | |
| 181 | + Test TAN projection. | |
| 182 | + """ | |
| 183 | + # Execute generic test | |
| 184 | + self.test_skymap_proj("TAN") | |
| 185 | + | |
| 186 | + # Return | |
| 187 | + return | |
| 188 | + | |
| 189 | + | |
| 190 | + # Test STG projection | |
| 191 | + def test_skymap_stg(self): | |
| 192 | + """ | |
| 193 | + Test STG projection. | |
| 194 | + """ | |
| 195 | + # Execute generic test | |
| 196 | + self.test_skymap_proj("STG") | |
| 197 | + | |
| 198 | + # Return | |
| 199 | + return | |
| 200 | + | |
| 201 | + | |
| 202 | + # Test AZP projection | |
| 203 | + def test_skymap_azp(self): | |
| 204 | + """ | |
| 205 | + Test AZP projection. | |
| 206 | + """ | |
| 207 | + # Execute generic test | |
| 208 | + self.test_skymap_proj("AZP") | |
| 209 | + | |
| 210 | + # Return | |
| 211 | + return | ... | ... |
test/test_GSupport.py
0 → 100755
| 1 | +# ========================================================================== | |
| 2 | +# This module performs unit tests for the GammaLib support module. | |
| 3 | +# | |
| 4 | +# Copyright (C) 2012 Juergen Knoedlseder | |
| 5 | +# | |
| 6 | +# This program is free software: you can redistribute it and/or modify | |
| 7 | +# it under the terms of the GNU General Public License as published by | |
| 8 | +# the Free Software Foundation, either version 3 of the License, or | |
| 9 | +# (at your option) any later version. | |
| 10 | +# | |
| 11 | +# This program is distributed in the hope that it will be useful, | |
| 12 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 | +# GNU General Public License for more details. | |
| 15 | +# | |
| 16 | +# You should have received a copy of the GNU General Public License | |
| 17 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| 18 | +# | |
| 19 | +# ========================================================================== | |
| 20 | +from gammalib import * | |
| 21 | +from math import * | |
| 22 | +import os | |
| 23 | + | |
| 24 | + | |
| 25 | +# =============================== # | |
| 26 | +# Test class for GammaLib support # | |
| 27 | +# =============================== # | |
| 28 | +class Test(GPythonTestSuite): | |
| 29 | + """ | |
| 30 | + Test class for GammaLib support. | |
| 31 | + """ | |
| 32 | + # Constructor | |
| 33 | + def __init__(self): | |
| 34 | + """ | |
| 35 | + Constructor. | |
| 36 | + """ | |
| 37 | + # Call base class constructor | |
| 38 | + GPythonTestSuite.__init__(self) | |
| 39 | + | |
| 40 | + # Return | |
| 41 | + return | |
| 42 | + | |
| 43 | + # Set all test functions | |
| 44 | + def set(self): | |
| 45 | + """ | |
| 46 | + Set all test functions. | |
| 47 | + """ | |
| 48 | + # Set test name | |
| 49 | + self.name("support") | |
| 50 | + | |
| 51 | + # Append tests | |
| 52 | + self.append(self.test_node_array, "Test GNodeArray") | |
| 53 | + | |
| 54 | + # Return | |
| 55 | + return | |
| 56 | + | |
| 57 | + # Test GNodeArray class | |
| 58 | + def test_node_array(self): | |
| 59 | + """ | |
| 60 | + Test GNodeArray class. | |
| 61 | + """ | |
| 62 | + # Set-up vector and data array. Test all vector elements. | |
| 63 | + vector = GVector(20) | |
| 64 | + data = GVector(20) | |
| 65 | + for i in range(20): | |
| 66 | + vector[i] = 10.0 + i*5.0 | |
| 67 | + data[i] = sin(0.15*(vector[i]-10.0)) | |
| 68 | + self.test_value(data[i], sin(0.15*i*5.0)) | |
| 69 | + | |
| 70 | + # Set-up node array | |
| 71 | + array = GNodeArray() | |
| 72 | + array.nodes(vector) | |
| 73 | + | |
| 74 | + # Get values | |
| 75 | + x_val = [] | |
| 76 | + y_val = [] | |
| 77 | + for i in range(100): | |
| 78 | + x = i-10 | |
| 79 | + array.set_value(x) | |
| 80 | + inx_left = array.inx_left() | |
| 81 | + inx_right = array.inx_right() | |
| 82 | + wgt_left = array.wgt_left() | |
| 83 | + wgt_right = array.wgt_right() | |
| 84 | + y = wgt_left*data[inx_left] + wgt_right*data[inx_right] | |
| 85 | + x_val.append(x) | |
| 86 | + y_val.append(y) | |
| 87 | + | |
| 88 | + # Return | |
| 89 | + return | ... | ... |
test/test_GTest.py
0 → 100755
| 1 | +# ========================================================================== | |
| 2 | +# This module performs unit tests for the GammaLib test module. | |
| 3 | +# | |
| 4 | +# Copyright (C) 2012 Juergen Knoedlseder | |
| 5 | +# | |
| 6 | +# This program is free software: you can redistribute it and/or modify | |
| 7 | +# it under the terms of the GNU General Public License as published by | |
| 8 | +# the Free Software Foundation, either version 3 of the License, or | |
| 9 | +# (at your option) any later version. | |
| 10 | +# | |
| 11 | +# This program is distributed in the hope that it will be useful, | |
| 12 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 | +# GNU General Public License for more details. | |
| 15 | +# | |
| 16 | +# You should have received a copy of the GNU General Public License | |
| 17 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| 18 | +# | |
| 19 | +# ========================================================================== | |
| 20 | +from gammalib import * | |
| 21 | +from math import * | |
| 22 | +import os | |
| 23 | + | |
| 24 | + | |
| 25 | +# =================================== # | |
| 26 | +# Test class for GammaLib test module # | |
| 27 | +# =================================== # | |
| 28 | +class Test(GPythonTestSuite): | |
| 29 | + """ | |
| 30 | + Test class for GammaLib test module. | |
| 31 | + """ | |
| 32 | + # Constructor | |
| 33 | + def __init__(self): | |
| 34 | + """ | |
| 35 | + Constructor. | |
| 36 | + """ | |
| 37 | + # Call base class constructor | |
| 38 | + GPythonTestSuite.__init__(self) | |
| 39 | + | |
| 40 | + # Return | |
| 41 | + return | |
| 42 | + | |
| 43 | + | |
| 44 | + # Set test functions | |
| 45 | + def set(self): | |
| 46 | + """ | |
| 47 | + Set all test functions. | |
| 48 | + """ | |
| 49 | + # Set test name | |
| 50 | + self.name("test") | |
| 51 | + | |
| 52 | + # Append tests | |
| 53 | + self.append(self.test, "Dummy test") | |
| 54 | + | |
| 55 | + # Return | |
| 56 | + return | |
| 57 | + | |
| 58 | + | |
| 59 | + # Test function | |
| 60 | + def test(self): | |
| 61 | + """ | |
| 62 | + Test function. | |
| 63 | + """ | |
| 64 | + # Return | |
| 65 | + return | ... | ... |
test/test_GXml.py
0 → 100755
| 1 | +# ========================================================================== | |
| 2 | +# This module performs unit tests for the GammaLib xml module. | |
| 3 | +# | |
| 4 | +# Copyright (C) 2012 Juergen Knoedlseder | |
| 5 | +# | |
| 6 | +# This program is free software: you can redistribute it and/or modify | |
| 7 | +# it under the terms of the GNU General Public License as published by | |
| 8 | +# the Free Software Foundation, either version 3 of the License, or | |
| 9 | +# (at your option) any later version. | |
| 10 | +# | |
| 11 | +# This program is distributed in the hope that it will be useful, | |
| 12 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 | +# GNU General Public License for more details. | |
| 15 | +# | |
| 16 | +# You should have received a copy of the GNU General Public License | |
| 17 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| 18 | +# | |
| 19 | +# ========================================================================== | |
| 20 | +from gammalib import * | |
| 21 | +from math import * | |
| 22 | +import os | |
| 23 | + | |
| 24 | + | |
| 25 | +# ================================== # | |
| 26 | +# Test class for GammaLib xml module # | |
| 27 | +# ================================== # | |
| 28 | +class Test(GPythonTestSuite): | |
| 29 | + """ | |
| 30 | + Test class for GammaLib xml module. | |
| 31 | + """ | |
| 32 | + # Constructor | |
| 33 | + def __init__(self): | |
| 34 | + """ | |
| 35 | + Constructor. | |
| 36 | + """ | |
| 37 | + # Call base class constructor | |
| 38 | + GPythonTestSuite.__init__(self) | |
| 39 | + | |
| 40 | + # Return | |
| 41 | + return | |
| 42 | + | |
| 43 | + | |
| 44 | + # Set test functions | |
| 45 | + def set(self): | |
| 46 | + """ | |
| 47 | + Set all test functions. | |
| 48 | + """ | |
| 49 | + # Set test name | |
| 50 | + self.name("xml") | |
| 51 | + | |
| 52 | + # Append tests | |
| 53 | + self.append(self.test, "Dummy test") | |
| 54 | + | |
| 55 | + # Return | |
| 56 | + return | |
| 57 | + | |
| 58 | + | |
| 59 | + # Test function | |
| 60 | + def test(self): | |
| 61 | + """ | |
| 62 | + Test function. | |
| 63 | + """ | |
| 64 | + # Return | |
| 65 | + return | ... | ... |