From 032d59e6e409b122763fdcfd244c1727d6ec3537 Mon Sep 17 00:00:00 2001 From: Pieter David Date: Sat, 12 Jun 2021 17:41:59 +0200 Subject: [PATCH] Add minimal tests for TH1F and TH2F --- tests/test_root.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/tests/test_root.py b/tests/test_root.py index 66e6c79..4b5695e 100644 --- a/tests/test_root.py +++ b/tests/test_root.py @@ -1,7 +1,39 @@ +import numpy as np import pytest +from pytest import approx + +from uhi.numpy_plottable import ensure_plottable_histogram ROOT = pytest.importorskip("ROOT") def test_root_imported() -> None: assert ROOT.TString("hi") == "hi" + + +def test_root_th1f_convert() -> None: + th = ROOT.TH1F("h1", "h1", 50, -2.5, 2.5) + th.FillRandom("gaus", 10000) + h = ensure_plottable_histogram(th) + assert all(th.GetBinContent(i + 1) == approx(iv) for i, iv in enumerate(h.values())) + assert all( + th.GetBinError(i + 1) == approx(ie) + for i, ie in enumerate(np.sqrt(h.variances())) # type: ignore + ) + + +def test_root_th2f_convert() -> None: + th = ROOT.TH2F("h2", "h2", 50, -2.5, 2.5, 50, -2.5, 2.5) + _ = ROOT.TF2("xyg", "xygaus", -2.5, 2.5, -2.5, 2.5) + th.FillRandom("xyg", 10000) + h = ensure_plottable_histogram(th) + assert all( + th.GetBinContent(i + 1, j + 1) == approx(iv) + for i, row in enumerate(h.values()) + for j, iv in enumerate(row) + ) + assert all( + th.GetBinError(i + 1, j + 1) == approx(ie) + for i, row in enumerate(np.sqrt(h.variances())) # type: ignore + for j, ie in enumerate(row) + )