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-12-08 07:47:12 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           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 pint import UnitRegistry
      20             : 
      21             : 
      22           1 : def test_hartree_to_joules(ureg: UnitRegistry) -> None:
      23             :     """Test conversion from Hartree to Joules."""
      24           1 :     one_hartree = 1 * ureg.hartree
      25           1 :     one_hartree_in_joules = one_hartree.to("joule")
      26           1 :     assert pytest.approx(one_hartree_in_joules.magnitude, rel=1e-12) == HARTREE_IN_JOULES  # NOSONAR
      27             : 
      28             : 
      29           1 : def test_joules_to_hartree(ureg: UnitRegistry) -> None:
      30             :     """Test conversion from Joules to Hartree."""
      31           1 :     one_hartree_in_joules = HARTREE_IN_JOULES * ureg.joule
      32           1 :     result = one_hartree_in_joules.to_base_units()
      33           1 :     assert pytest.approx(result.magnitude, rel=1e-12) == 1.0  # NOSONAR
      34             : 
      35             : 
      36           1 : def test_hartree_to_thz(ureg: UnitRegistry) -> None:
      37             :     """Test conversion from Hartree to THz."""
      38           1 :     one_hartree = 1 * ureg.hartree
      39           1 :     one_hartree_in_ghz = one_hartree.to("gigahertz", "spectroscopy")
      40           1 :     assert pytest.approx(one_hartree_in_ghz.magnitude, rel=1e-12) == HARTREE_IN_GHZ  # NOSONAR
      41             : 
      42             : 
      43           1 : def test_hartree_to_inverse_cm(ureg: UnitRegistry) -> None:
      44             :     """Test conversion from Hartree to inverse cm."""
      45           1 :     one_hartree = 1 * ureg.hartree
      46           1 :     one_hartree_in_inverse_cm = one_hartree.to("1/cm", "spectroscopy")
      47           1 :     assert pytest.approx(one_hartree_in_inverse_cm.magnitude, rel=1e-12) == HARTREE_IN_INVERSE_CM  # NOSONAR
      48             : 
      49             : 
      50           1 : def test_electric_field_to_atomic_units(ureg: UnitRegistry) -> None:
      51             :     """Test conversion from V/cm to atomic units of electric field."""
      52           1 :     one_v_per_cm = 1 * ureg.volt / ureg.centimeter
      53           1 :     one_v_per_cm_in_atomic_units = one_v_per_cm.to_base_units()
      54           1 :     assert pytest.approx(one_v_per_cm_in_atomic_units.magnitude, rel=1e-12) == VOLT_PER_CM_IN_ATOMIC_UNITS  # NOSONAR
      55             : 
      56             : 
      57           1 : def test_magnetic_field_to_atomic_units(ureg: UnitRegistry) -> None:
      58             :     """Test conversion from Gauss to atomic units of magnetic field."""
      59           1 :     one_gauss = 1e-4 * ureg.tesla
      60           1 :     one_gauss_in_atomic_units = one_gauss.to_base_units()
      61           1 :     assert pytest.approx(one_gauss_in_atomic_units.magnitude, rel=1e-12) == GAUSS_IN_ATOMIC_UNITS  # NOSONAR

Generated by: LCOV version 1.16