import os
import tempfile
import pytest
from ayn_antivirus.utils.helpers import (
    format_size, format_duration, is_root, validate_ip,
    validate_domain, generate_id, hash_file, safe_path
)

def test_format_size():
    assert format_size(0) == "0.0 B"
    assert format_size(1024) == "1.0 KB"
    assert format_size(1048576) == "1.0 MB"
    assert format_size(1073741824) == "1.0 GB"

def test_format_duration():
    assert "0s" in format_duration(0) or "0" in format_duration(0)
    result = format_duration(3661)
    assert "1h" in result
    assert "1m" in result

def test_validate_ip():
    assert validate_ip("192.168.1.1") == True
    assert validate_ip("10.0.0.1") == True
    assert validate_ip("999.999.999.999") == False
    assert validate_ip("not-an-ip") == False
    assert validate_ip("") == False

def test_validate_domain():
    assert validate_domain("example.com") == True
    assert validate_domain("sub.example.com") == True
    assert validate_domain("") == False

def test_generate_id():
    id1 = generate_id()
    id2 = generate_id()
    assert isinstance(id1, str)
    assert len(id1) == 32
    assert id1 != id2

def test_hash_file(tmp_path):
    f = tmp_path / "test.txt"
    f.write_text("hello world")
    h = hash_file(str(f))
    assert isinstance(h, str)
    assert len(h) == 64  # sha256 hex

def test_safe_path(tmp_path):
    result = safe_path(str(tmp_path))
    assert result is not None
