mirror of
https://github.com/bellingcat/auto-archiver-api.git
synced 2026-06-10 20:48:34 +03:00
* Update pyproject.toml * add pre-commit * Create .pre-commit-config.yaml * Comment out ruff * Update .pre-commit-config.yaml * General formatting * Create format-and-fail.yml * Update ci.yml * Add pre-commit to dev dependencies * Update pyproject.toml
32 lines
939 B
Python
32 lines
939 B
Python
from app.shared.utils.misc import fnv1a_hash_mod
|
|
|
|
|
|
def test_fnv1a_hash_mod():
|
|
# Test basic string hashing
|
|
assert fnv1a_hash_mod("test", 10) == fnv1a_hash_mod("test", 10)
|
|
assert 0 <= fnv1a_hash_mod("test", 10) < 10
|
|
|
|
# Test different strings give different hashes
|
|
assert fnv1a_hash_mod("test1", 100) != fnv1a_hash_mod("test2", 100)
|
|
|
|
# Test different modulos
|
|
hash1 = fnv1a_hash_mod("test", 5)
|
|
hash2 = fnv1a_hash_mod("test", 10)
|
|
assert 0 <= hash1 < 5
|
|
assert 0 <= hash2 < 10
|
|
|
|
# Test empty string
|
|
assert isinstance(fnv1a_hash_mod("", 10), int)
|
|
assert 0 <= fnv1a_hash_mod("", 10) < 10
|
|
|
|
# Test long string
|
|
long_str = "a" * 1000
|
|
assert 0 <= fnv1a_hash_mod(long_str, 20) < 20
|
|
|
|
# Test unicode string
|
|
assert isinstance(fnv1a_hash_mod("测试", 10), int)
|
|
assert 0 <= fnv1a_hash_mod("测试", 10) < 10
|
|
|
|
# Test modulo = 1 edge case
|
|
assert fnv1a_hash_mod("test", 1) == 0
|