"""Tests for act.vectors module — Appendix B test vectors."""

import pytest

from act.vectors import generate_vectors, validate_vectors


class TestVectorGeneration:
    def test_generates_15_vectors(self):
        vectors, ctx = generate_vectors()
        assert len(vectors) == 15

    def test_vector_ids(self):
        vectors, _ = generate_vectors()
        ids = [v.id for v in vectors]
        expected = [f"B.{i}" for i in range(1, 16)]
        assert ids == expected

    def test_valid_vectors_have_compact(self):
        vectors, _ = generate_vectors()
        for v in vectors:
            if v.valid and v.id != "B.7":
                assert v.compact, f"{v.id} should have compact"

    def test_invalid_vectors_have_exception(self):
        vectors, _ = generate_vectors()
        for v in vectors:
            if not v.valid:
                assert v.expected_exception is not None, \
                    f"{v.id} should have expected_exception"


class TestVectorValidation:
    def test_all_vectors_pass(self):
        assert validate_vectors() is True
