# ========================================================================== # This module performs unit tests for the GammaLib support module. # # Copyright (C) 2012-2015 Juergen Knoedlseder # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # ========================================================================== import gammalib import math # =============================== # # Test class for GammaLib support # # =============================== # class Test(gammalib.GPythonTestSuite): """ Test class for GammaLib support. """ # Constructor def __init__(self): """ Constructor. """ # Call base class constructor gammalib.GPythonTestSuite.__init__(self) # Return return # Set all test functions def set(self): """ Set all test functions. """ # Set test name self.name("support") # Append tests self.append(self.test_node_array, "Test GNodeArray") self.append(self.test_url_file, "Test GUrlFile") self.append(self.test_url_string, "Test GUrlString") self.append(self.test_filename, "Test GFilename") # Return return # Test GNodeArray class def test_node_array(self): """ Test GNodeArray class. """ # Set-up vector and data array. Test all vector elements. vector = gammalib.GVector(20) data = gammalib.GVector(20) for i in range(20): vector[i] = 10.0 + i * 5.0 data[i] = math.sin(0.15 * (vector[i] - 10.0)) self.test_value(data[i], math.sin(0.15 * i * 5.0)) # Set-up node array array = gammalib.GNodeArray() array.nodes(vector) # Get values x_val = [] y_val = [] for i in range(100): x = i - 10 array.set_value(x) inx_left = array.inx_left() inx_right = array.inx_right() wgt_left = array.wgt_left() wgt_right = array.wgt_right() y = wgt_left * data[inx_left] + wgt_right * data[inx_right] x_val.append(x) y_val.append(y) # Return return # Test GUrlFile class def test_url_file(self): """ Test GUrlFile class. """ # Test file writing url = gammalib.GUrlFile("test_url.dat", "w") self.test_value(url.write("abcd", 4), 4) url.put_char(ord("e")) url.close() # Test file reading buffer = "" url = gammalib.GUrlFile("test_url.dat", "r") buffer = url.read(99) self.test_assert(buffer == "abcde", "Expected \"abcde\" in file, found \""+ buffer+"\"") url.close() # Return return # Test GUrlString class def test_url_string(self): """ Test GUrlString class. """ # Test writing url = gammalib.GUrlString() self.test_value(url.write("abcd", 4), 4) url.put_char(ord("e")) # Test reading url.rewind() buffer = "" buffer = url.read(99) self.test_assert(buffer == "abcde", "Expected \"abcde\" in file, found \""+ buffer+"\"") url.close() # Return return # Test GFilename class def test_filename(self): """ Test GFilename class. """ # Test assigning file names filename = gammalib.GFilename("myfile.fits") self.test_assert(filename.filename() == "myfile.fits", "Expected \"myfile.fits\", found \""+ filename.filename()+"\"") filename = gammalib.GFilename("myfile.fits[EVENTS]") self.test_assert(filename.filename() == "myfile.fits", "Expected \"myfile.fits\", found \""+ filename.filename()+"\"") self.test_assert(filename.extname() == "EVENTS", "Expected extension \"EVENTS\", found \""+ filename.extname()+"\"") filename = gammalib.GFilename("myfile.fits[0]") self.test_assert(filename.filename() == "myfile.fits", "Expected \"myfile.fits\", found \""+ filename.filename()+"\"") self.test_value(filename.extno(), 0) filename = gammalib.GFilename("myfile.fits[0,2]") self.test_assert(filename.filename() == "myfile.fits", "Expected \"myfile.fits\", found \""+ filename.filename()+"\"") self.test_value(filename.extno(), 0) self.test_value(filename.extver(), 2) # Return return