ros_message 0.1.1

Utilities for handling MSG and SRV files in ROS
Documentation
use crate::MessagePath;

#[test]
fn package_names_must_be_at_least_two_characters() {
    MessagePath::new("foo", "MessageName").expect("Unexpected incorrect package name");
    MessagePath::new("fo", "MessageName").expect("Unexpected incorrect package name");
    MessagePath::new("f", "MessageName").expect_err("Unexpected correct package name");
}

#[test]
fn package_names_must_start_with_lowercase_alphabetic() {
    MessagePath::new("foo_123", "MessageName").expect("Unexpected incorrect package name");
    MessagePath::new("Foo_123", "MessageName").expect_err("Unexpected correct package name");
    MessagePath::new("1oo_123", "MessageName").expect_err("Unexpected correct package name");
    MessagePath::new("_oo_123", "MessageName").expect_err("Unexpected correct package name");
}

#[test]
fn package_names_must_not_contain_uppercase_anywhere() {
    MessagePath::new("foo_123", "MessageName").expect("Unexpected incorrect package name");
    MessagePath::new("foO_123", "MessageName").expect_err("Unexpected correct package name");
}

#[test]
fn package_names_are_limited_to_lowercase_alphanumeric_and_underscore() {
    MessagePath::new("foo_123", "MessageName").expect("Unexpected incorrect package name");
    MessagePath::new("foO_123", "MessageName").expect_err("Unexpected correct package name");
    MessagePath::new("foo-123", "MessageName").expect_err("Unexpected correct package name");
}

#[test]
fn package_names_must_not_contain_multiple_underscores_in_a_row() {
    MessagePath::new("foo_123_", "MessageName").expect("Unexpected incorrect package name");
    MessagePath::new("f_o_o_1_2_3_", "MessageName").expect("Unexpected incorrect package name");
    MessagePath::new("foo__123_", "MessageName").expect_err("Unexpected correct package name");
    MessagePath::new("foo___123_", "MessageName").expect_err("Unexpected correct package name");
}

#[test]
fn format_returns_the_full_message_name() {
    let path: MessagePath =
        MessagePath::new("foo_123", "MessageName").expect("Unexpected incorrect package name");
    assert_eq!(format!("{}", path), "foo_123/MessageName");
}

#[test]
fn serialize_as_string() {
    assert_eq!(
        serde_json::to_string(&MessagePath::new("foo_123", "MessageName").unwrap()).unwrap(),
        "\"foo_123/MessageName\"",
    );
}

#[test]
fn deserialize_from_string() {
    assert_eq!(
        serde_json::from_str::<MessagePath>("\"foo_123/MessageName\"").unwrap(),
        MessagePath::new("foo_123", "MessageName").unwrap(),
    );
}

#[test]
fn deserialize_checks_if_package_name_is_valid() {
    assert!(serde_json::from_str::<MessagePath>("\"foo_123/MessageName\"").is_ok());
    assert!(serde_json::from_str::<MessagePath>("\"Foo_123/MessageName\"").is_err());
}