From c697083e8998042a78bf87f30f3ec42a0debccac Mon Sep 17 00:00:00 2001
From: Enric Tejedor Saavedra <enric.tejedor.saavedra@cern.ch>
Date: Thu, 28 Feb 2019 09:41:37 +0100
Subject: [PATCH] [Exp PyROOT] Test __getitem__ pythonisation of TVector3

---
 .../PyROOT/test/CMakeLists.txt                |  1 +
 .../PyROOT/test/tvector3_getitem.py           | 35 +++++++++++++++++++
 2 files changed, 36 insertions(+)
 create mode 100644 bindings/pyroot_experimental/PyROOT/test/tvector3_getitem.py

diff --git a/bindings/pyroot_experimental/PyROOT/test/CMakeLists.txt b/bindings/pyroot_experimental/PyROOT/test/CMakeLists.txt
index 3ec15769a03..ff65cd8e708 100644
--- a/bindings/pyroot_experimental/PyROOT/test/CMakeLists.txt
+++ b/bindings/pyroot_experimental/PyROOT/test/CMakeLists.txt
@@ -52,6 +52,7 @@ ROOT_ADD_PYUNITTEST(pyroot_pyz_tvectort_getitem tvectort_getitem.py)
 
 # TVector3 pythonisations
 ROOT_ADD_PYUNITTEST(pyroot_pyz_tvector3_len tvector3_len.py)
+ROOT_ADD_PYUNITTEST(pyroot_pyz_tvector3_getitem tvector3_getitem.py)
 
 # TString pythonisations
 ROOT_ADD_PYUNITTEST(pyroot_pyz_tstring_len tstring_len.py)
diff --git a/bindings/pyroot_experimental/PyROOT/test/tvector3_getitem.py b/bindings/pyroot_experimental/PyROOT/test/tvector3_getitem.py
new file mode 100644
index 00000000000..be71dcff34d
--- /dev/null
+++ b/bindings/pyroot_experimental/PyROOT/test/tvector3_getitem.py
@@ -0,0 +1,35 @@
+import unittest
+
+import ROOT
+
+
+class TVector3GetItem(unittest.TestCase):
+    """
+    Test for the pythonization that allows to: (i) get an item of a
+    TVector3 with boundary check for the index and (ii) iterate over
+    a TVector3.
+    """
+
+    # Tests
+    def test_boundary_check(self):
+        v = ROOT.TVector3(1., 2., 3.)
+
+        # In range
+        self.assertEqual(v[0], v[0])
+
+        # Out of range
+        with self.assertRaises(IndexError):
+            v[-1]
+
+        # Out of range
+        with self.assertRaises(IndexError):
+            v[3]
+
+    def test_iterable(self):
+        v = ROOT.TVector3(1., 2., 3.)
+
+        self.assertEquals(list(v), [1., 2., 3.])
+
+
+if __name__ == '__main__':
+    unittest.main()
-- 
GitLab