waddling-errors-macros 0.7.3

Procedural macros for structured error codes with compile-time validation and taxonomy enforcement
Documentation
//! Test: Sequence value validation passes with valid u16 constants
//!
//! This test verifies that diag! with strict(sequence_values) validation
//! accepts sequences that are properly defined u16 constants.

use waddling_errors_macros::{component, diag, primary, sequence, setup};

setup! {
    components = crate::components,
    primaries = crate::primaries,
    sequences = crate::sequences,
}

// Define valid components
pub mod components {
    use waddling_errors_macros::component;

    component! {
        pub enum Component {
            Auth {
                docs: "Authentication component",
            },
        }
    }

    pub use Component::*;
}

// Define valid primaries
pub mod primaries {
    use waddling_errors_macros::primary;

    primary! {
        pub enum Primary {
            Token {
                docs: "Token errors",
            },
        }
    }
}

// Define valid sequences with numeric values
pub mod sequences {
    use waddling_errors_macros::sequence;

    sequence! {
        MISSING(1) {
            description: "Missing parameter",
            typical_severity: "Error",
        },
        INVALID(3) {
            description: "Invalid parameter",
            typical_severity: "Error",
        },
        EXPIRED(17) {
            description: "Expired resource",
            typical_severity: "Error",
        },
    }
}

// Test sequence value validation
mod test_sequence_value_1 {
    use super::*;

    diag! {
        strict(sequence_values),

        E.Auth.Token.MISSING: {
            message: "Validates that MISSING is a u16",
            hints: ["Type checking ensures it's a valid sequence constant"],
        },
    }
}

mod test_sequence_value_2 {
    use super::*;

    diag! {
        strict(sequence_values),

        E.Auth.Token.EXPIRED: {
            message: "Validates that EXPIRED is a u16",
            hints: ["The numeric value (17) is enforced by sequence! macro"],
        },
    }
}

// Test combined with other validations
mod test_combined_validation {
    use super::*;

    diag! {
        strict(sequence, sequence_values),

        E.Auth.Token.INVALID: {
            message: "Validates both existence and type",
            hints: ["Ensures INVALID exists AND is a u16"],
        },
    }
}

// Test all validations together
mod test_all_validations {
    use super::*;

    diag! {
        strict(sequence, primary, component, naming, duplicates, sequence_values, string_values),

        E.Auth.Token.MISSING: {
            message: "Maximum validation: everything checked",
            hints: ["All validation modes enabled"],
        },
    }
}

fn main() {
    println!("✅ Sequence value validation passed!");
    println!("All sequences are valid u16 constants.");
}