use crate::message::CoapCode;
#[must_use]
pub fn is_safe(method: CoapCode) -> bool {
method == CoapCode::GET
}
#[must_use]
pub fn is_idempotent(method: CoapCode) -> bool {
method == CoapCode::GET || method == CoapCode::PUT || method == CoapCode::DELETE
}
#[must_use]
pub fn is_method(code: CoapCode) -> bool {
code == CoapCode::GET
|| code == CoapCode::POST
|| code == CoapCode::PUT
|| code == CoapCode::DELETE
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn get_is_safe() {
assert!(is_safe(CoapCode::GET));
}
#[test]
fn post_put_delete_not_safe() {
assert!(!is_safe(CoapCode::POST));
assert!(!is_safe(CoapCode::PUT));
assert!(!is_safe(CoapCode::DELETE));
}
#[test]
fn get_put_delete_idempotent() {
assert!(is_idempotent(CoapCode::GET));
assert!(is_idempotent(CoapCode::PUT));
assert!(is_idempotent(CoapCode::DELETE));
}
#[test]
fn post_not_idempotent() {
assert!(!is_idempotent(CoapCode::POST));
}
#[test]
fn method_predicate_recognizes_all_four() {
assert!(is_method(CoapCode::GET));
assert!(is_method(CoapCode::POST));
assert!(is_method(CoapCode::PUT));
assert!(is_method(CoapCode::DELETE));
}
}