Files
community.crypto/tests/unit/plugins/module_utils/crypto/test_math.py
Felix Fontein aec1826c34 Reformat everything with black.
I had to undo the u string prefix removals to not drop Python 2 compatibility.
That's why black isn't enabled in antsibull-nox.toml yet.
2025-04-28 10:48:00 +02:00

137 lines
2.8 KiB
Python

# -*- coding: utf-8 -*-
# Copyright (c) 2024, Felix Fontein <felix@fontein.de>
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
from __future__ import absolute_import, division, print_function
__metaclass__ = type
import pytest
from ansible_collections.community.crypto.plugins.module_utils.crypto.math import (
binary_exp_mod,
convert_bytes_to_int,
convert_int_to_bytes,
convert_int_to_hex,
quick_is_not_prime,
simple_gcd,
)
@pytest.mark.parametrize(
"f, e, m, result",
[
(0, 0, 5, 1),
(0, 1, 5, 0),
(2, 1, 5, 2),
(2, 2, 5, 4),
(2, 3, 5, 3),
(2, 10, 5, 4),
],
)
def test_binary_exp_mod(f, e, m, result):
value = binary_exp_mod(f, e, m)
print(value)
assert value == result
@pytest.mark.parametrize(
"a, b, result",
[
(0, -123, -123),
(0, 123, 123),
(-123, 0, -123),
(123, 0, 123),
(-123, 1, 1),
(123, 1, 1),
(1, -123, -1),
(1, 123, 1),
(1024, 10, 2),
],
)
def test_simple_gcd(a, b, result):
value = simple_gcd(a, b)
print(value)
assert value == result
@pytest.mark.parametrize(
"n, result",
[
(-2, True),
(0, True),
(1, True),
(2, False),
(3, False),
(4, True),
(5, False),
(6, True),
(7, False),
(8, True),
(9, True),
(10, True),
(211, False), # the smallest prime number >= 200
],
)
def test_quick_is_not_prime(n, result):
value = quick_is_not_prime(n)
print(value)
assert value == result
@pytest.mark.parametrize(
"no, count, result",
[
(0, None, b""),
(0, 1, b"\x00"),
(0, 2, b"\x00\x00"),
(1, None, b"\x01"),
(1, 2, b"\x00\x01"),
(255, None, b"\xff"),
(256, None, b"\x01\x00"),
],
)
def test_convert_int_to_bytes(no, count, result):
value = convert_int_to_bytes(no, count=count)
print(value)
assert value == result
@pytest.mark.parametrize(
"no, digits, result",
[
(0, None, "0"),
(1, None, "1"),
(16, None, "10"),
(1, 3, "001"),
(255, None, "ff"),
(256, None, "100"),
(256, 2, "100"),
(256, 3, "100"),
(256, 4, "0100"),
],
)
def test_convert_int_to_hex(no, digits, result):
value = convert_int_to_hex(no, digits=digits)
print(value)
assert value == result
@pytest.mark.parametrize(
"data, result",
[
(b"", 0),
(b"\x00", 0),
(b"\x00\x01", 1),
(b"\x01", 1),
(b"\xff", 255),
(b"\x01\x00", 256),
],
)
def test_convert_bytes_to_int(data, result):
value = convert_bytes_to_int(data)
print(value)
assert value == result