LCOV - code coverage report
Current view: top level - tests - test_pint_atomic_units.py (source / functions) Coverage Total Hit
Test: coverage.info Lines: 100.0 % 28 28
Test Date: 2026-11-02 09:44:19 Functions: 100.0 % 6 6

            Line data    Source code
       1              : # SPDX-FileCopyrightText: 2024 PairInteraction Developers
       2              : # SPDX-License-Identifier: LGPL-3.0-or-later
       3              : 
       4            1 : from __future__ import annotations
       5              : 
       6            1 : from typing import TYPE_CHECKING
       7              : 
       8            1 : import pytest
       9              : 
      10            1 : from tests.constants import (
      11              :     GAUSS_IN_ATOMIC_UNITS,
      12              :     HARTREE_IN_GHZ,
      13              :     HARTREE_IN_INVERSE_CM,
      14              :     HARTREE_IN_JOULES,
      15              :     VOLT_PER_CM_IN_ATOMIC_UNITS,
      16              : )
      17              : 
      18              : if TYPE_CHECKING:
      19              :     from pairinteraction.units import PintFloat
      20              :     from pint import UnitRegistry
      21              : 
      22              : 
      23            1 : def test_hartree_to_joules(ureg: UnitRegistry) -> None:
      24              :     """Test conversion from Hartree to Joules."""
      25            1 :     one_hartree = 1 * ureg.hartree
      26            1 :     one_hartree_in_joules = one_hartree.to("joule")
      27            1 :     assert pytest.approx(one_hartree_in_joules.magnitude, rel=1e-12) == HARTREE_IN_JOULES  # NOSONAR
      28              : 
      29              : 
      30            1 : def test_joules_to_hartree(ureg: UnitRegistry) -> None:
      31              :     """Test conversion from Joules to Hartree."""
      32            1 :     one_hartree_in_joules = HARTREE_IN_JOULES * ureg.joule
      33            1 :     result = one_hartree_in_joules.to_base_units()
      34            1 :     assert pytest.approx(result.magnitude, rel=1e-12) == 1.0  # NOSONAR
      35              : 
      36              : 
      37            1 : def test_hartree_to_thz(ureg: UnitRegistry) -> None:
      38              :     """Test conversion from Hartree to THz."""
      39            1 :     one_hartree = 1 * ureg.hartree
      40            1 :     one_hartree_in_ghz = one_hartree.to("gigahertz", "spectroscopy")
      41            1 :     assert pytest.approx(one_hartree_in_ghz.magnitude, rel=1e-12) == HARTREE_IN_GHZ  # NOSONAR
      42              : 
      43              : 
      44            1 : def test_hartree_to_inverse_cm(ureg: UnitRegistry) -> None:
      45              :     """Test conversion from Hartree to inverse cm."""
      46            1 :     one_hartree = 1 * ureg.hartree
      47            1 :     one_hartree_in_inverse_cm = one_hartree.to("1/cm", "spectroscopy")
      48            1 :     assert pytest.approx(one_hartree_in_inverse_cm.magnitude, rel=1e-12) == HARTREE_IN_INVERSE_CM  # NOSONAR
      49              : 
      50              : 
      51            1 : def test_electric_field_to_atomic_units(ureg: UnitRegistry) -> None:
      52              :     """Test conversion from V/cm to atomic units of electric field."""
      53            1 :     one_v_per_cm: PintFloat = ureg.Quantity(1, "volt / centimeter")
      54            1 :     one_v_per_cm_in_atomic_units = one_v_per_cm.to_base_units()
      55            1 :     assert pytest.approx(one_v_per_cm_in_atomic_units.magnitude, rel=1e-12) == VOLT_PER_CM_IN_ATOMIC_UNITS  # NOSONAR
      56              : 
      57              : 
      58            1 : def test_magnetic_field_to_atomic_units(ureg: UnitRegistry) -> None:
      59              :     """Test conversion from Gauss to atomic units of magnetic field."""
      60            1 :     one_gauss = 1e-4 * ureg.tesla
      61            1 :     one_gauss_in_atomic_units = one_gauss.to_base_units()
      62            1 :     assert pytest.approx(one_gauss_in_atomic_units.magnitude, rel=1e-12) == GAUSS_IN_ATOMIC_UNITS  # NOSONAR
        

Generated by: LCOV version 2.0-1