~durga/maus/rel709

« back to all changes in this revision

Viewing changes to tests/py_unit/test_maus_cpp/test_optics/test_phase_space_vector.py

  • Committer: Durga Rajaram
  • Date: 2013-10-01 00:19:57 UTC
  • mfrom: (659.1.74 rc)
  • Revision ID: durga@fnal.gov-20131001001957-iswih60vis9rodw0
Tags: MAUS-v0.7.1
MAUS-v0.7.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#  This file is part of MAUS: http://micewww.pp.rl.ac.uk:8080/projects/maus
 
2
 
3
#  MAUS is free software: you can redistribute it and/or modify
 
4
#  it under the terms of the GNU General Public License as published by
 
5
#  the Free Software Foundation, either version 3 of the License, or
 
6
#  (at your option) any later version.
 
7
 
8
#  MAUS is distributed in the hope that it will be useful,
 
9
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
 
10
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
11
#  GNU General Public License for more details.
 
12
 
13
#  You should have received a copy of the GNU General Public License
 
14
#  along with MAUS.  If not, see <http://www.gnu.org/licenses/>.
 
15
 
 
16
# pylint: disable=C0103
 
17
 
 
18
"""
 
19
Test maus_cpp.phase_space_vector
 
20
"""
 
21
 
 
22
import unittest
 
23
 
 
24
import maus_cpp
 
25
import maus_cpp.phase_space_vector
 
26
from maus_cpp.phase_space_vector import create_from_coordinates
 
27
 
 
28
class PhaseSpaceVectorTestCase(unittest.TestCase): # pylint: disable=R0904
 
29
    """Test maus_cpp.phase_space_vector"""
 
30
 
 
31
    def test_init(self):
 
32
        """Test maus_cpp.phase_space_vector.init()"""
 
33
        psv = maus_cpp.phase_space_vector.PhaseSpaceVector()
 
34
        psv_as_list = eval(psv.__repr__())
 
35
        for var in psv_as_list:
 
36
            self.assertAlmostEqual(var, 0.)
 
37
 
 
38
    def test_create_from_coordinates(self):
 
39
        """Test maus_cpp.phase_space_vector.create_from_coordinates()"""
 
40
        psv = maus_cpp.phase_space_vector.create_from_coordinates \
 
41
                                     (t=1, energy=2., x=3., px=4., y=5., py=6.)
 
42
        self.assertAlmostEqual(psv.get_t(), 1.)
 
43
        self.assertAlmostEqual(psv.get_energy(), 2.)
 
44
        self.assertAlmostEqual(psv.get_x(), 3.)
 
45
        self.assertAlmostEqual(psv.get_px(), 4.)
 
46
        self.assertAlmostEqual(psv.get_y(), 5.)
 
47
        self.assertAlmostEqual(psv.get_py(), 6.)
 
48
        try:
 
49
            psv = create_from_coordinates(t=1, energy=2., x=3., px=4., y=5.)
 
50
            self.assertTrue(False, "Expected type error")
 
51
        except TypeError:
 
52
            pass
 
53
        try:
 
54
            psv = create_from_coordinates(t=1, energy=2., x=3., px=4., py=6.)
 
55
            self.assertTrue(False, "Expected type error")
 
56
        except TypeError:
 
57
            pass
 
58
        try:
 
59
            psv = create_from_coordinates(t=1, energy=2., x=3., y=5., py=6.)
 
60
            self.assertTrue(False, "Expected type error")
 
61
        except TypeError:
 
62
            pass
 
63
        try:
 
64
            psv = create_from_coordinates(t=1, energy=2., px=4., y=5., py=6.)
 
65
            self.assertTrue(False, "Expected type error")
 
66
        except TypeError:
 
67
            pass
 
68
        try:
 
69
            psv = create_from_coordinates(t=1, x=3., px=4., y=5., py=6.)
 
70
            self.assertTrue(False, "Expected type error")
 
71
        except TypeError:
 
72
            pass
 
73
        try:
 
74
            psv = create_from_coordinates(energy=2., x=3., px=4., y=5., py=6.)
 
75
            self.assertTrue(False, "Expected type error")
 
76
        except TypeError:
 
77
            pass
 
78
 
 
79
    def test_get_set(self):
 
80
        """Test maus_cpp.phase_space_vector get_<> and set_<>"""
 
81
        psv = create_from_coordinates(t=1, energy=2., x=3., px=4., y=5., py=6.)
 
82
        test_value = 1.
 
83
        method_list = [(psv.get_t,  psv.set_t),
 
84
                       (psv.get_energy, psv.set_energy),
 
85
                       (psv.get_x,  psv.set_x),
 
86
                       (psv.get_px, psv.set_px),
 
87
                       (psv.get_y,  psv.set_y),
 
88
                       (psv.get_py, psv.set_py)]
 
89
        for getter, setter in method_list:
 
90
            self.assertAlmostEqual(getter(bob="nonsense"), test_value)
 
91
            setter(test_value+10.)
 
92
            self.assertAlmostEqual(getter(), test_value+10.)
 
93
            setter(value=test_value+10.)
 
94
            try:
 
95
                setter(value=test_value+10., bob="nonsense")
 
96
                self.assertTrue(False, "Should have thrown an exception")
 
97
            except TypeError:
 
98
                pass
 
99
            test_value += 1.
 
100
 
 
101
    def test_repr(self):
 
102
        """Test maus_cpp.PhaseSpaceVector.__repr__ and __str__"""
 
103
        psv = create_from_coordinates(t=1, energy=2., x=3., px=4., y=5., py=6.)
 
104
        psv_as_list = eval(psv.__repr__())
 
105
        for i, value in enumerate(psv_as_list):
 
106
            self.assertAlmostEqual(value, float(i+1))
 
107
        psv_as_list = eval(psv.__str__())
 
108
        for i, value in enumerate(psv_as_list):
 
109
            self.assertAlmostEqual(value, float(i+1))
 
110
 
 
111
if __name__ == "__main__":
 
112
    unittest.main()
 
113
 
 
114