diff --git a/km3buu/tests/test_jobcard.py b/km3buu/tests/test_jobcard.py index e5c0f339f5080f81ae278fafc0e8adaf029b820e..708f7e85ac204decaed5f4ac6d9385442c0d25b1 100644 --- a/km3buu/tests/test_jobcard.py +++ b/km3buu/tests/test_jobcard.py @@ -12,7 +12,8 @@ __status__ = "Development" import unittest import numpy as np -from km3buu.jobcard import Jobcard, INPUT_PATH +from km3buu.jobcard import * +from tempfile import TemporaryFile class TestJobcard(unittest.TestCase): @@ -42,3 +43,53 @@ class TestJobcard(unittest.TestCase): expected_line = "def = 42" assert ctnt.find("&ABC") == -1 assert ctnt.find(expected_line) == -1 + + +class TestNeutrinoJobcard(unittest.TestCase): + def setUp(self): + self.test_fluxfile = TemporaryFile() + self.test_Z = np.random.randint(0, 100) + self.test_A = np.random.randint(0, 100) + self.test_energy_min = np.random.uniform(0.0, 100.0) + self.test_energy_max = np.random.uniform(self.test_energy_min, 100.0) + self.photon_propagation_flag = np.random.choice([True, False]) + self.do_decay = np.random.choice([True, False]) + self.test_jobcard = generate_neutrino_jobcard( + 1000, + "CC", + "electron", (self.test_energy_min, self.test_energy_max), + (self.test_Z, self.test_A), + do_decay=self.do_decay, + photon_propagation=self.photon_propagation_flag, + fluxfile=self.test_fluxfile.name, + input_path="/test") + + def test_input_path(self): + self.assertEqual("/test", self.test_jobcard["input"]["path_to_input"]) + + def test_target(self): + self.assertEqual(self.test_Z, self.test_jobcard["target"]["target_Z"]) + self.assertEqual(self.test_A, self.test_jobcard["target"]["target_A"]) + + def test_energy(self): + self.assertAlmostEqual( + self.test_energy_min, + self.test_jobcard["nl_neutrino_energyflux"]["eflux_min"]) + self.assertAlmostEqual( + self.test_energy_max, + self.test_jobcard["nl_neutrino_energyflux"]["eflux_max"]) + + def test_flux(self): + self.assertEqual(self.test_fluxfile.name, + self.test_jobcard["neutrino_induced"]["FileNameflux"]) + self.assertEqual(self.test_jobcard["neutrino_induced"]["nuexp"], 99) + # Test flat flux + flat_flux_jobcard = generate_neutrino_jobcard( + 1000, "CC", "electron", + (self.test_energy_min, self.test_energy_max), + (self.test_Z, self.test_A)) + self.assertEqual(flat_flux_jobcard["neutrino_induced"]["nuexp"], 10) + + def test_photon_propagation_flag(self): + self.assertEqual(self.test_jobcard["insertion"]["propagateNoPhoton"], + not self.photon_propagation_flag)