1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
use azalea_nbt::{Nbt, NbtCompound, NbtList};
use std::io::Cursor;
#[test]
fn test_decode_hello_world() {
// read hello_world.nbt
let buf = include_bytes!("hello_world.nbt").to_vec();
let tag = Nbt::read(&mut Cursor::new(&buf[..])).unwrap();
assert_eq!(
tag,
Nbt::Compound(NbtCompound::from_iter(vec![(
"hello world".into(),
Nbt::Compound(NbtCompound::from_iter(vec![(
"name".into(),
Nbt::String("Bananrama".into()),
)]))
)]))
);
}
#[test]
fn test_roundtrip_hello_world() {
let original = include_bytes!("hello_world.nbt").to_vec();
let mut original_stream = Cursor::new(&original[..]);
let tag = Nbt::read(&mut original_stream).unwrap();
// write hello_world.nbt
let mut result = Vec::new();
tag.write(&mut result);
assert_eq!(result, original);
}
#[test]
fn test_bigtest() {
// read bigtest.nbt
let original = include_bytes!("bigtest.nbt").to_vec();
let mut original_stream = Cursor::new(original);
let original_tag = Nbt::read_gzip(&mut original_stream).unwrap();
let mut result = Vec::new();
original_tag.write(&mut result);
let decoded_tag = Nbt::read(&mut Cursor::new(&result)).unwrap();
assert_eq!(decoded_tag, original_tag);
}
#[test]
fn test_stringtest() {
let correct_tag = Nbt::Compound(NbtCompound::from_iter(vec![(
"😃".into(),
Nbt::List(NbtList::String(vec![
"asdfkghasfjgihsdfogjsndfg".into(),
"jnabsfdgihsabguiqwrntgretqwejirhbiqw".into(),
"asd".into(),
"wqierjgt7wqy8u4rtbwreithwretiwerutbwenryq8uwervqwer9iuqwbrgyuqrbtwierotugqewrtqwropethert".into(),
"asdf".into(),
"alsdkjiqwoe".into(),
"lmqi9hyqd".into(),
"qwertyuiop".into(),
"asdfghjkl".into(),
"zxcvbnm".into(),
" ".into(),
"words words words words words words".into(),
"aaaaaaaaaaaaaaaaaaaa".into(),
"♥".into(),
"a\nb\n\n\nc\r\rd".into(),
"😁".into(),
]))
)]));
let original = include_bytes!("stringtest.nbt").to_vec();
let mut original_stream = Cursor::new(original);
let original_tag = Nbt::read_gzip(&mut original_stream).unwrap();
assert_eq!(original_tag, correct_tag);
}
#[test]
fn test_complex_player() {
let original = include_bytes!("complex_player.dat").to_vec();
let mut original_stream = Cursor::new(original);
let original_tag = Nbt::read_gzip(&mut original_stream).unwrap();
let mut result = Vec::new();
original_tag.write(&mut result);
let decoded_tag = Nbt::read(&mut Cursor::new(&result)).unwrap();
assert_eq!(decoded_tag, original_tag);
}
#[test]
fn test_simple_player() {
let original = include_bytes!("simple_player.dat").to_vec();
let mut original_stream = Cursor::new(original);
let original_tag = Nbt::read_gzip(&mut original_stream).unwrap();
let mut result = Vec::new();
original_tag.write(&mut result);
let decoded_tag = Nbt::read(&mut Cursor::new(&result)).unwrap();
assert_eq!(decoded_tag, original_tag);
}
// #[test]
// fn test_inttest() {
// let original = include_bytes!("inttest.nbt").to_vec();
// let mut original_stream = Cursor::new(original);
// let original_tag = Nbt::read_gzip(&mut original_stream).unwrap();
// let mut result = Vec::new();
// original_tag.write(&mut result);
// let decoded_tag = Nbt::read(&mut Cursor::new(&result)).unwrap();
// assert_eq!(decoded_tag, original_tag);
// }
#[test]
fn test_inttest1023() {
let original = include_bytes!("inttest1023.nbt").to_vec();
let mut original_stream = Cursor::new(original.as_slice());
let original_tag = Nbt::read(&mut original_stream).unwrap();
let mut result = Vec::new();
original_tag.write(&mut result);
let decoded_tag = Nbt::read(&mut Cursor::new(&result)).unwrap();
assert_eq!(decoded_tag, original_tag);
}
|