error-kit 0.1.0

A comprehensive error handling library for Rust applications
Documentation
use error_kit::{messages, CommonError};

#[test]
fn test_error_display_uses_constants() {
    let timeout_err = CommonError::Timeout;
    assert_eq!(timeout_err.to_string(), messages::TIMEOUT_EXCEEDED);

    let cache_err = CommonError::CacheLock;
    assert_eq!(cache_err.to_string(), messages::CACHE_LOCK_ERROR);

    let data_not_found_err = CommonError::DataNotFound;
    assert_eq!(data_not_found_err.to_string(), messages::DATA_NOT_FOUND);

    let unable_to_fresh_err = CommonError::UnableToFreshData;
    assert_eq!(
        unable_to_fresh_err.to_string(),
        messages::UNABLE_TO_FRESH_DATA
    );

    let stale_err = CommonError::StaleInternalNone;
    assert_eq!(stale_err.to_string(), messages::STALE_INTERNAL_NONE);

    let filename_err = CommonError::FilenameError;
    assert_eq!(filename_err.to_string(), messages::FAILED_TO_GET_FILENAME);

    let encoding_err = CommonError::InvalidFilenameEncoding;
    assert_eq!(
        encoding_err.to_string(),
        messages::INVALID_FILENAME_ENCODING
    );

    let separator_err = CommonError::MissingTimestampSeparator;
    assert_eq!(
        separator_err.to_string(),
        messages::MISSING_TIMESTAMP_SEPARATOR
    );

    let extension_err = CommonError::MissingFileExtension;
    assert_eq!(extension_err.to_string(), messages::MISSING_FILE_EXTENSION);

    let timestamp_err = CommonError::TimestampParseError;
    assert_eq!(
        timestamp_err.to_string(),
        messages::FAILED_TO_PARSE_TIMESTAMP
    );
}

#[test]
fn test_parameterized_error_display() {
    let serialization_err = CommonError::Serialization("JSON");
    assert!(serialization_err
        .to_string()
        .contains(messages::SERIALIZATION_ERROR_PREFIX));
    assert!(serialization_err.to_string().contains("JSON"));

    let deserialization_err = CommonError::Deserialization("YAML");
    assert!(deserialization_err
        .to_string()
        .contains(messages::DESERIALIZATION_ERROR_PREFIX));
    assert!(deserialization_err.to_string().contains("YAML"));

    let unsupported_err = CommonError::UnsupportedFileType("XML");
    assert!(unsupported_err
        .to_string()
        .contains(messages::UNSUPPORTED_FILE_TYPE_PREFIX));
    assert!(unsupported_err.to_string().contains("XML"));
}

#[test]
fn test_error_variants_are_constructible() {
    // Ensure all variants can be created
    let _cache_lock = CommonError::CacheLock;
    let _serialization = CommonError::Serialization("JSON");
    let _deserialization = CommonError::Deserialization("YAML");
    let _unsupported = CommonError::UnsupportedFileType("XML");
    let _data_not_found = CommonError::DataNotFound;
    let _unable_to_fresh = CommonError::UnableToFreshData;
    let _stale_internal = CommonError::StaleInternalNone;
    let _timeout = CommonError::Timeout;
    let _filename_error = CommonError::FilenameError;
    let _invalid_encoding = CommonError::InvalidFilenameEncoding;
    let _missing_separator = CommonError::MissingTimestampSeparator;
    let _missing_extension = CommonError::MissingFileExtension;
    let _timestamp_parse = CommonError::TimestampParseError;
}