add some simple test to our nbt crate
This commit is contained in:
parent
25f4834236
commit
7161491005
@ -8,6 +8,8 @@ use serde::{Deserialize, Serialize};
|
||||
pub enum ClickEvent<'a> {
|
||||
/// Opens a URL
|
||||
OpenUrl(Cow<'a, str>),
|
||||
/// Opens a File
|
||||
OpenFile(Cow<'a, str>),
|
||||
/// Works in signs, but only on the root text component
|
||||
RunCommand(Cow<'a, str>),
|
||||
/// Replaces the contents of the chat box with the text, not necessarily a
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
// TODO
|
||||
// TODO make this dynamic
|
||||
#[derive(Clone)]
|
||||
#[repr(i32)]
|
||||
pub enum EntityType {
|
||||
|
||||
@ -23,7 +23,7 @@ impl<'de, T: Buf> Deserializer<'de, T> {
|
||||
}
|
||||
}
|
||||
|
||||
/// Deserializes struct using Serde Deserializer from unnamed (network) NBT
|
||||
/// Deserializes struct using Serde Deserializer from normal NBT
|
||||
pub fn from_bytes<'a, T>(s: &'a mut impl Buf) -> Result<T>
|
||||
where
|
||||
T: Deserialize<'a>,
|
||||
@ -32,14 +32,6 @@ where
|
||||
T::deserialize(&mut deserializer)
|
||||
}
|
||||
|
||||
pub fn from_cursor<'a, T>(cursor: &'a mut Cursor<&[u8]>) -> Result<T>
|
||||
where
|
||||
T: Deserialize<'a>,
|
||||
{
|
||||
let mut deserializer = Deserializer::new(cursor, true);
|
||||
T::deserialize(&mut deserializer)
|
||||
}
|
||||
|
||||
/// Deserializes struct using Serde Deserializer from normal NBT
|
||||
pub fn from_bytes_unnamed<'a, T>(s: &'a mut impl Buf) -> Result<T>
|
||||
where
|
||||
@ -49,6 +41,14 @@ where
|
||||
T::deserialize(&mut deserializer)
|
||||
}
|
||||
|
||||
pub fn from_cursor<'a, T>(cursor: &'a mut Cursor<&[u8]>) -> Result<T>
|
||||
where
|
||||
T: Deserialize<'a>,
|
||||
{
|
||||
let mut deserializer = Deserializer::new(cursor, true);
|
||||
T::deserialize(&mut deserializer)
|
||||
}
|
||||
|
||||
pub fn from_cursor_unnamed<'a, T>(cursor: &'a mut Cursor<&[u8]>) -> Result<T>
|
||||
where
|
||||
T: Deserialize<'a>,
|
||||
|
||||
@ -200,3 +200,65 @@ macro_rules! impl_array {
|
||||
impl_array!(IntArray, "int");
|
||||
impl_array!(LongArray, "long");
|
||||
impl_array!(BytesArray, "byte");
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::BytesArray;
|
||||
use crate::IntArray;
|
||||
use crate::LongArray;
|
||||
use crate::{
|
||||
deserializer::from_bytes_unnamed,
|
||||
serializer::to_bytes_unnamed,
|
||||
};
|
||||
|
||||
#[derive(Serialize, Deserialize, PartialEq, Debug)]
|
||||
struct Test {
|
||||
byte: i8,
|
||||
short: i16,
|
||||
int: i32,
|
||||
long: i64,
|
||||
float: f32,
|
||||
string: String,
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_simple_ser_de_unamed() {
|
||||
let test = Test {
|
||||
byte: 123,
|
||||
short: 1342,
|
||||
int: 4313,
|
||||
long: 34,
|
||||
float: 1.00,
|
||||
string: "Hello test".to_string(),
|
||||
};
|
||||
let mut bytes = to_bytes_unnamed(&test).unwrap();
|
||||
let recreated_struct: Test = from_bytes_unnamed(&mut bytes).unwrap();
|
||||
|
||||
assert_eq!(test, recreated_struct);
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, PartialEq, Debug)]
|
||||
struct TestArray {
|
||||
#[serde(with = "BytesArray")]
|
||||
byte_array: Vec<u8>,
|
||||
#[serde(with = "IntArray")]
|
||||
int_array: Vec<i32>,
|
||||
#[serde(with = "LongArray")]
|
||||
long_array: Vec<i64>,
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_simple_ser_de_array() {
|
||||
let test = TestArray {
|
||||
byte_array: vec![0, 3, 2],
|
||||
int_array: vec![13, 1321, 2],
|
||||
long_array: vec![1, 0, 200301, 1],
|
||||
};
|
||||
let mut bytes = to_bytes_unnamed(&test).unwrap();
|
||||
let recreated_struct: TestArray = from_bytes_unnamed(&mut bytes).unwrap();
|
||||
|
||||
assert_eq!(test, recreated_struct);
|
||||
}
|
||||
}
|
||||
|
||||
@ -30,4 +30,4 @@ aes = "0.8.4"
|
||||
cfb8 = "0.8.1"
|
||||
|
||||
# decryption
|
||||
libdeflater = "1.22.0"
|
||||
libdeflater = "1.23.0"
|
||||
@ -46,7 +46,7 @@ rsa = "0.9.7"
|
||||
rsa-der = "0.3.0"
|
||||
|
||||
# authentication
|
||||
reqwest = { version = "0.12.9", default-features = false, features = [
|
||||
reqwest = { version = "0.12.10", default-features = false, features = [
|
||||
"http2",
|
||||
"json",
|
||||
"macos-system-configuration",
|
||||
|
||||
Loading…
Reference in New Issue
Block a user