2 from basf2
import _constwrapper
3 from b2test_utils
import configure_logging_for_tests
5 from ROOT
import Belle2
12 class DBInterface(unittest.TestCase):
13 def assertDeath(self, function, *args, **kwargs):
14 """Run function in child process and check if it died. Only way to check for B2FATAL"""
15 ctx = multiprocessing.get_context(
"fork")
16 p = ctx.Process(target=function, args=args, kwargs=kwargs)
19 self.assertNotEqual(p.exitcode, 0)
22 configure_logging_for_tests()
28 """Test object interface"""
31 self.assertFalse(bp.isValid())
35 vertex = ROOT.TVector3(1, 2, 3)
38 override_object.setVertex(vertex, ROOT.std.vector(
"double")())
42 self.assertTrue(bp.isValid())
46 self.assertDeath(
lambda:
Belle2.PyDBObj(
"BeamParameters", Belle2.PXDSimHit.Class()))
48 self.assertDeath(
lambda:
Belle2.PyDBArray(
"BeamParameters", Belle2.PXDSimHit.Class()))
51 self.assertEqual(bp.obj().getVertex(), vertex)
53 self.assertEqual(bp.getVertex(), vertex)
55 with self.assertRaises(AttributeError):
58 with self.assertRaises(AttributeError):
61 with self.assertRaises(AttributeError):
63 bp.obj().getVertex =
"bar"
71 self.assertEqual(copy, bp.obj())
75 e = _constwrapper._make_tobject_nonconst(bp.obj())
76 e.setVertex(ROOT.TVector3(0, 0, 0), ROOT.std.vector(
"double")())
77 self.assertEqual(bp.obj().getVertex(), ROOT.TVector3(0, 0, 0))
82 self.assertFalse(bplist.isValid())
84 override_array = ROOT.TClonesArray(
"Belle2::BeamParameters")
85 override_array.ExpandCreate(3)
86 for i
in range(override_array.GetEntriesFast()):
87 override_array[i].setVertex(ROOT.TVector3(i, i, i), ROOT.std.vector(
"double")())
92 self.assertTrue(bplist.isValid())
95 self.assertDeath(
lambda:
Belle2.PyDBArray(
"BeamParameterList", Belle2.PXDSimHit.Class()))
97 self.assertDeath(
lambda:
Belle2.PyDBObj(
"BeamParameterList", Belle2.PXDSimHit.Class()))
99 self.assertEqual(len(bplist), override_array.GetEntriesFast())
102 for i, e
in enumerate(bplist):
104 self.assertEqual(int(e.getVertex()[0]), i)
106 self.assertEqual(e, override_array[i])
108 self.assertEqual(e, bplist[i])
111 self.assertEqual(e, copy)
113 copy.setVertex(ROOT.TVector3(1, 2, 3), ROOT.std.vector(
"double")())
114 self.assertNotEqual(e, copy)
116 with self.assertRaises(AttributeError):
117 e.setVertex(ROOT.TVector3(1, 2, 3), ROOT.std.vector(
"double")())
118 with self.assertRaises(AttributeError):
120 with self.assertRaises(AttributeError):
123 self.assertEqual(i + 1, len(bplist))
126 with self.assertRaises(TypeError):
130 if __name__ ==
"__main__":