import uuid
from tools.generate_uuid_tool import generate_uuid7s_impl # server.py から関数をインポート
def is_valid_uuid_v7(uuid_string: str) -> bool:
"""指定された文字列が有効なUUIDであり、かつバージョン7であるかを確認します。"""
try:
parsed_uuid = uuid.UUID(uuid_string)
except ValueError:
# UUIDとしてパースできない場合はFalse
return False
else:
try:
# parsed_uuid.version が7であることを確認
return parsed_uuid.version == 7
except AttributeError:
# version属性がない場合 (古いuuidライブラリなど、念のため)
return False
def test_generate_uuid_default_count():
"""デフォルトのカウント1でgenerate_uuid7s_implをテストします。"""
uuids = generate_uuid7s_impl(count=1)
assert isinstance(uuids, list), "返り値はリストであるべきです"
assert len(uuids) == 1, "デフォルトでは1つのUUIDを返すべきです"
assert isinstance(uuids[0], str), "UUIDは文字列であるべきです"
assert is_valid_uuid_v7(uuids[0]), f"生成されたUUID {uuids[0]} は有効なUUIDv7ではありません"
def test_generate_uuid_specified_count():
"""指定されたカウントでgenerate_uuid7s_implをテストします。"""
count = 3
uuids = generate_uuid7s_impl(count=count)
assert isinstance(uuids, list), "返り値はリストであるべきです"
assert len(uuids) == count, f"{count}個のUUIDを返すべきです"
for u in uuids:
assert isinstance(u, str), "各UUIDは文字列であるべきです"
assert is_valid_uuid_v7(u), f"生成されたUUID {u} は有効なUUIDv7ではありません"
def test_generate_uuid_count_one():
"""カウントを明示的に1としてgenerate_uuid7s_implをテストします。"""
uuids = generate_uuid7s_impl(count=1)
assert isinstance(uuids, list), "返り値はリストであるべきです"
assert len(uuids) == 1, "カウントが1の場合、1つのUUIDを返すべきです"
assert isinstance(uuids[0], str), "UUIDは文字列であるべきです"
assert is_valid_uuid_v7(uuids[0]), f"生成されたUUID {uuids[0]} は有効なUUIDv7ではありません"
def test_generate_uuid_invalid_count():
"""不正なカウント値 (0および負の数) でgenerate_uuid7s_implをテストします。"""
# count = 0 の場合、range()の挙動により空のリストが返ることを期待
uuids_zero_count = generate_uuid7s_impl(count=0)
assert isinstance(uuids_zero_count, list), "返り値はリストであるべきです"
assert len(uuids_zero_count) == 0, "countが0の場合、空のリストを返すべきです"
# count < 0 の場合も、range()の挙動により空のリストが返ることを期待
uuids_negative_count = generate_uuid7s_impl(count=-5)
assert isinstance(uuids_negative_count, list), "返り値はリストであるべきです"
assert len(uuids_negative_count) == 0, "countが負数の場合、空のリストを返すべきです"