File: test_constructor.py

package info (click to toggle)
awesomeversion 25.8.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,304 kB
  • sloc: python: 2,411; sh: 146; makefile: 5
file content (46 lines) | stat: -rw-r--r-- 1,246 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
"""Constructor benchmarks for AwesomeVersion."""

from __future__ import annotations

from typing import Any

import pytest

from awesomeversion import AwesomeVersion, AwesomeVersionStrategy

from .const import DEFAULT_RUNS

semver_first = {
    "ensure_strategy": AwesomeVersionStrategy.SEMVER,
    "find_first_match": True,
}


@pytest.mark.benchmark
@pytest.mark.parametrize(
    "version,constructor_kv",
    [
        pytest.param("9999", {}, id="9999-default"),
        pytest.param("v1.2.3", {}, id="v1.2.3-default"),
        pytest.param(
            "lorem_ipsum1.2.3",
            semver_first,
            id="lorem_ipsum1.2.3-semver-first",
        ),
        pytest.param("dev", {}, id="dev-default"),
        pytest.param(1, {}, id="1-as-int-default"),
        pytest.param("1", {}, id="1-as-str-default"),
        pytest.param(3.14, {}, id="3.14-as-float-default"),
        pytest.param(
            "1.2.3",
            semver_first,
            id="1.2.3-semver-first",
        ),
    ],
)
def test_constructor(
    version: str | int | float, constructor_kv: dict[str, Any]
) -> None:
    """Benchmark for AwesomeVersion constructor."""
    for _ in range(DEFAULT_RUNS):
        assert AwesomeVersion(version, **constructor_kv)