Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-15 07:41:52

0001 import re
0002 
0003 import pytest
0004 
0005 from optiphy.geant4_version import geant4_series, parse_geant4_version
0006 
0007 
0008 @pytest.mark.parametrize(
0009     ("version", "expected"),
0010     [
0011         ("11.3.2", "11.3"),
0012         ("11.3.0.beta", "11.3"),
0013         ("11.4.0", "11.4+"),
0014         ("11.4.p01", "11.4+"),
0015         ("11.4.0.beta", "11.4+"),
0016         ("11.5.1", "11.4+"),
0017         ("12.0.0", "11.4+"),
0018         ("12.0.p02", "11.4+"),
0019         ("12.0.0.beta", "11.4+"),
0020         ("12.1.3", "11.4+"),
0021         ("13.0.0", "11.4+"),
0022     ],
0023 )
0024 def test_geant4_series_supported_versions(version, expected):
0025     assert geant4_series(version) == expected
0026 
0027 
0028 @pytest.mark.parametrize("version", ["9.6.1", "9.6.p03", "10.7.4"])
0029 def test_geant4_series_rejects_older_major_versions(version):
0030     with pytest.raises(RuntimeError, match=re.escape(f"Unsupported Geant4 version {version!r}")):
0031         geant4_series(version)
0032 
0033 
0034 @pytest.mark.parametrize("version", ["11.2.0", "11.2.0.beta"])
0035 def test_geant4_series_rejects_unsupported_11_minor(version):
0036     with pytest.raises(RuntimeError, match=re.escape(f"Unsupported Geant4 version {version!r}")):
0037         geant4_series(version)
0038 
0039 
0040 def test_geant4_series_rejects_unparseable_version():
0041     version = "not-a-version"
0042     with pytest.raises(RuntimeError, match=re.escape(f"Unable to parse Geant4 version: {version!r}")):
0043         geant4_series(version)
0044 
0045 
0046 @pytest.mark.parametrize(
0047     ("version", "expected"),
0048     [
0049         ("11.4", (11, 4, 0)),
0050         ("11.4.0", (11, 4, 0)),
0051         ("11.4.0.beta", (11, 4, 0)),
0052         ("11.4.p01", (11, 4, 1)),
0053         ("11.2.0.beta", (11, 2, 0)),
0054         ("12.0.p02", (12, 0, 2)),
0055     ],
0056 )
0057 def test_parse_geant4_version_accepts_supported_patch_formats(version, expected):
0058     assert parse_geant4_version(version) == expected
0059 
0060 
0061 @pytest.mark.parametrize("version", ["11.4.p", "11.4-dev", "11.4foo", "11.4.p01foo", "11.4.0.betafoo"])
0062 def test_parse_geant4_version_rejects_trailing_suffixes(version):
0063     with pytest.raises(RuntimeError, match=re.escape(f"Unable to parse Geant4 version: {version!r}")):
0064         parse_geant4_version(version)