bus-core 0.1.1

Core traits and types for eventbus-rs with zero NATS dependencies
Documentation
use bus_core::MessageId;
use std::str::FromStr;

#[test]
fn new_ids_are_unique() {
    let first_message_id = MessageId::new();
    let second_message_id = MessageId::new();

    assert_ne!(first_message_id, second_message_id);
}

#[test]
fn id_roundtrips_through_string() {
    let message_id = MessageId::new();
    let message_id_string = message_id.to_string();
    let parsed_message_id = MessageId::from_str(&message_id_string).unwrap();

    assert_eq!(message_id, parsed_message_id);
}

#[test]
fn ids_are_monotonically_increasing() {
    let earlier_message_id = MessageId::new();
    std::thread::sleep(std::time::Duration::from_millis(2));
    let later_message_id = MessageId::new();

    assert!(
        earlier_message_id < later_message_id,
        "earlier MessageId must sort before later one"
    );
    assert!(
        earlier_message_id.to_string() < later_message_id.to_string(),
        "string representation must preserve order"
    );
}

#[test]
fn from_str_rejects_invalid_uuid() {
    let parse_result = "not-a-uuid".parse::<MessageId>();

    assert!(parse_result.is_err());
}