LCOV - code coverage report
Current view: top level - tests - test_pint_atomic_units.py (source / functions) Hit Total Coverage
Test: coverage.info Lines: 28 28 100.0 %
Date: 2025-09-29 10:28:29 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 : from __future__ import annotations
       7             : 
       8           1 : from typing import TYPE_CHECKING
       9             : 
      10           1 : import pytest
      11             : 
      12           1 : from tests.constants import (
      13             :     GAUSS_IN_ATOMIC_UNITS,
      14             :     HARTREE_IN_GHZ,
      15             :     HARTREE_IN_INVERSE_CM,
      16             :     HARTREE_IN_JOULES,
      17             :     VOLT_PER_CM_IN_ATOMIC_UNITS,
      18             : )
      19             : 
      20             : if TYPE_CHECKING:
      21             :     from pint import UnitRegistry
      22             : 
      23             : 
      24           1 : def test_hartree_to_joules(ureg: UnitRegistry) -> None:
      25             :     """Test conversion from Hartree to Joules."""
      26           1 :     one_hartree = 1 * ureg.hartree
      27           1 :     one_hartree_in_joules = one_hartree.to("joule")
      28           1 :     assert pytest.approx(one_hartree_in_joules.magnitude, rel=1e-12) == HARTREE_IN_JOULES  # NOSONAR
      29             : 
      30             : 
      31           1 : def test_joules_to_hartree(ureg: UnitRegistry) -> None:
      32             :     """Test conversion from Joules to Hartree."""
      33           1 :     one_hartree_in_joules = HARTREE_IN_JOULES * ureg.joule
      34           1 :     result = one_hartree_in_joules.to_base_units()
      35           1 :     assert pytest.approx(result.magnitude, rel=1e-12) == 1.0  # NOSONAR
      36             : 
      37             : 
      38           1 : def test_hartree_to_thz(ureg: UnitRegistry) -> None:
      39             :     """Test conversion from Hartree to THz."""
      40           1 :     one_hartree = 1 * ureg.hartree
      41           1 :     one_hartree_in_ghz = one_hartree.to("gigahertz", "spectroscopy")
      42           1 :     assert pytest.approx(one_hartree_in_ghz.magnitude, rel=1e-12) == HARTREE_IN_GHZ  # NOSONAR
      43             : 
      44             : 
      45           1 : def test_hartree_to_inverse_cm(ureg: UnitRegistry) -> None:
      46             :     """Test conversion from Hartree to inverse cm."""
      47           1 :     one_hartree = 1 * ureg.hartree
      48           1 :     one_hartree_in_inverse_cm = one_hartree.to("1/cm", "spectroscopy")
      49           1 :     assert pytest.approx(one_hartree_in_inverse_cm.magnitude, rel=1e-12) == HARTREE_IN_INVERSE_CM  # NOSONAR
      50             : 
      51             : 
      52           1 : def test_electric_field_to_atomic_units(ureg: UnitRegistry) -> None:
      53             :     """Test conversion from V/cm to atomic units of electric field."""
      54           1 :     one_v_per_cm = 1 * ureg.volt / ureg.centimeter
      55           1 :     one_v_per_cm_in_atomic_units = one_v_per_cm.to_base_units()
      56           1 :     assert pytest.approx(one_v_per_cm_in_atomic_units.magnitude, rel=1e-12) == VOLT_PER_CM_IN_ATOMIC_UNITS  # NOSONAR
      57             : 
      58             : 
      59           1 : def test_magnetic_field_to_atomic_units(ureg: UnitRegistry) -> None:
      60             :     """Test conversion from Gauss to atomic units of magnetic field."""
      61           1 :     one_gauss = 1e-4 * ureg.tesla
      62           1 :     one_gauss_in_atomic_units = one_gauss.to_base_units()
      63           1 :     assert pytest.approx(one_gauss_in_atomic_units.magnitude, rel=1e-12) == GAUSS_IN_ATOMIC_UNITS  # NOSONAR

Generated by: LCOV version 1.16