"""Tests for css_parser — shared CSS custom property parser."""

import sys
from pathlib import Path

sys.path.insert(0, str(Path(__file__).resolve().parent.parent))

from css_parser import parse_all_custom_properties  # type: ignore[import-not-found]


def test_basic_parsing():
    css = ":root { --color-brand: #533AFD; --font-size-lg: 1.25rem; }"
    result = parse_all_custom_properties(css)
    assert result["--color-brand"] == "#533AFD"
    assert result["--font-size-lg"] == "1.25rem"
    assert len(result) == 2


def test_comment_filtering():
    css = "/* skip this --fake: red; */ :root { --real: blue; }"
    result = parse_all_custom_properties(css)
    assert "--fake" not in result
    assert result.get("--real") == "blue"


def test_last_wins_dedup():
    css = ":root { --dup: first; } .dark { --dup: second; }"
    result = parse_all_custom_properties(css)
    assert result["--dup"] == "second"


def test_var_ref_preserved():
    css = ":root { --alias: var(--base-color); }"
    result = parse_all_custom_properties(css)
    assert result["--alias"] == "var(--base-color)"


def test_empty_css():
    result = parse_all_custom_properties("")
    assert len(result) == 0


def test_multiline_values():
    css = """:root {
        --shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
        --color: #FF0000;
    }"""
    result = parse_all_custom_properties(css)
    assert "--shadow" in result
    assert "--color" in result
    assert result["--color"] == "#FF0000"
