Implement JSON and Protobuf OSD codecs
This commit is contained in:
@@ -120,6 +120,7 @@ fn starts_with_ignore_ascii_case(value: &str, prefix: &str) -> bool {
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use std::collections::HashMap;
|
||||
|
||||
#[test]
|
||||
fn byte_dispatch_recognizes_headers_bom_whitespace_and_json_tokens() {
|
||||
@@ -164,31 +165,16 @@ mod tests {
|
||||
deserialize_bytes(b"<llsd><undef /></llsd>".to_vec()),
|
||||
Ok(OSD::Undefined)
|
||||
);
|
||||
let cases: &[(&[u8], &str)] = &[
|
||||
(
|
||||
b"<? llsd/protobuf ?>",
|
||||
"M:LibreMetaverse.StructuredData.OSDParser.DeserializeLLSDProtobuf(System.Byte[])",
|
||||
),
|
||||
(
|
||||
b"{}",
|
||||
"M:LibreMetaverse.StructuredData.OSDParser.DeserializeJson(System.String)",
|
||||
),
|
||||
];
|
||||
for (input, expected_member) in cases {
|
||||
assert_eq!(
|
||||
deserialize_bytes(input.to_vec())
|
||||
.expect_err("format decoder is intentionally owned by a later issue")
|
||||
.csharp_member(),
|
||||
Some(*expected_member)
|
||||
);
|
||||
}
|
||||
assert_eq!(
|
||||
deserialize_bytes(b"<? llsd/protobuf ?>".to_vec()),
|
||||
Ok(OSD::Undefined)
|
||||
);
|
||||
assert_eq!(
|
||||
deserialize_bytes(b"{}".to_vec()),
|
||||
Ok(OSD::Map(HashMap::new()))
|
||||
);
|
||||
|
||||
let stream = Box::new(std::io::Cursor::new(b"{}".to_vec()));
|
||||
assert_eq!(
|
||||
deserialize_stream(stream)
|
||||
.expect_err("JSON decoder is intentionally owned by issue #36")
|
||||
.csharp_member(),
|
||||
Some("M:LibreMetaverse.StructuredData.OSDParser.DeserializeJson(System.String)")
|
||||
);
|
||||
assert_eq!(deserialize_stream(stream), Ok(OSD::Map(HashMap::new())));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user