LCOV - code coverage report
Current view: top level - tests - test_pint_atomic_units.py (source / functions) Hit Total Coverage
Test: coverage.info Lines: 27 27 100.0 %
Date: 2025-04-29 15:59:54 Functions: 6 12 50.0 %

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

Generated by: LCOV version 1.16