40 lines
1,011 B
Rust
40 lines
1,011 B
Rust
|
|
//! M6: typed-frame dispatcher — classify before append_message.
|
||
|
|
|
||
|
|
use onionwire::dispatch::{classify, Kind};
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
fn chat_is_chat() {
|
||
|
|
assert_eq!(classify(b"hello wire"), Kind::Chat);
|
||
|
|
}
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
fn loc_still_loc() {
|
||
|
|
assert_eq!(classify(b"loc abc.onion\n1\n00"), Kind::Loc);
|
||
|
|
}
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
fn unknown_typed_prefix_is_drop() {
|
||
|
|
assert_eq!(classify(b"zzz not a real type"), Kind::Drop);
|
||
|
|
}
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
fn short_or_binary_without_prefix_is_chat() {
|
||
|
|
assert_eq!(classify(b"hi"), Kind::Chat);
|
||
|
|
assert_eq!(classify(&[0xff, 0xfe]), Kind::Chat);
|
||
|
|
}
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
fn known_prefixes_are_typed() {
|
||
|
|
assert_eq!(classify(b"prf name"), Kind::Profile);
|
||
|
|
assert_eq!(classify(b"inv 1"), Kind::Invoice);
|
||
|
|
assert_eq!(classify(b"rcp tx"), Kind::Receipt);
|
||
|
|
assert_eq!(classify(b"png 1"), Kind::Ping);
|
||
|
|
}
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
fn uppercase_or_digit_prefix_is_chat() {
|
||
|
|
assert_eq!(classify(b"ZZZ not typed"), Kind::Chat);
|
||
|
|
assert_eq!(classify(b"ab1 leftover"), Kind::Chat);
|
||
|
|
assert_eq!(classify(b"abcd"), Kind::Chat);
|
||
|
|
}
|