From b91b579bef9695939e9bce58b64463d9debc7b71 Mon Sep 17 00:00:00 2001 From: mat Date: Mon, 20 Dec 2021 01:53:23 -0600 Subject: [PATCH] add more tests and benchmarks for nbt --- azalea-nbt/benches/my_benchmark.rs | 6 ++- azalea-nbt/tests/complex_player.dat | Bin 0 -> 1379 bytes azalea-nbt/tests/inttest.nbt | Bin 0 -> 95 bytes azalea-nbt/tests/simple_player.dat | Bin 0 -> 440 bytes azalea-nbt/tests/stringtest.nbt | Bin 0 -> 251 bytes azalea-nbt/tests/tests.rs | 69 +++++++++++++++++++++++++++- 6 files changed, 71 insertions(+), 4 deletions(-) create mode 100644 azalea-nbt/tests/complex_player.dat create mode 100644 azalea-nbt/tests/inttest.nbt create mode 100644 azalea-nbt/tests/simple_player.dat create mode 100644 azalea-nbt/tests/stringtest.nbt diff --git a/azalea-nbt/benches/my_benchmark.rs b/azalea-nbt/benches/my_benchmark.rs index be114005..46a2f851 100644 --- a/azalea-nbt/benches/my_benchmark.rs +++ b/azalea-nbt/benches/my_benchmark.rs @@ -39,9 +39,11 @@ fn bench_serialize(filename: &str, c: &mut Criterion) { fn bench(c: &mut Criterion) { bench_serialize("tests/bigtest.nbt", c); - // bench_serialize("tests/simple_player.dat", c); - // bench_serialize("tests/complex_player.dat", c); + bench_serialize("tests/simple_player.dat", c); + bench_serialize("tests/complex_player.dat", c); bench_serialize("tests/level.dat", c); + bench_serialize("tests/stringtest.nbt", c); + bench_serialize("tests/inttest.nbt", c); } criterion_group!(benches, bench); diff --git a/azalea-nbt/tests/complex_player.dat b/azalea-nbt/tests/complex_player.dat new file mode 100644 index 0000000000000000000000000000000000000000..d7f3fcbd3ff02bf1cfcc9ac32e2fee97894566e3 GIT binary patch literal 1379 zcmV-p1)TaHiwFP!000000M(bzZyQAv$KUSy*Sc|%rfEw>5fO+Y5aNdl0#QY=6E|(7 zwu$N#0#ums?${oAcW2ohCrvpZ?v)VYP%3di0)Ye-7s>$%0peI%^}vY};(&xIRPi6c zo84J^@w!PlvKME&~`a-JlM&1hrQLbsG*BfKLw0bLUp-rzi=3K{fTAI z<5sUltln7~vQQAuqKW|+VfGJJ=bO}}o@n@#+RA$2n=4m7LSqxm)7)llMuSM3me4ak z7mRxm9D#Gsq@8>JwWr?h77NcAV6OT!Akr3by#R%p%ln>K_$A&T2PFxe=An4+%gcl0T#Gi$~Vt4MUaO!1BeD2M;YBnwJlgl6O`*{BATO;ydAg_8j zUOgr6r-gGr+vitbkXsf`N8T4eW?DVpUz^GQ`0n|~l5rmPwK=zsU+9v4D6LP?P3lw+ zb!rAw9=^XE(zw9@w~G9KGCC4f0FUMXd~mARPnBXQ@wEu!KI!c$$!- zp4E*`q8=@}UkAh4bWmeFo>t?W8qcb+uEq}y?8{KJS?D`tJIP9^(PiGnevipi!JdXs zw!CE?Sk#u8T=6#XAo5^a?tbY1=aL4w_*IXkAIeJiG3n$29f${G7x53K#Otw`IVC24 z58^8La$*q(9u4Of2^}cZl*0W(g%;;MYByVywukB z?;C;vwL`%@+Qf`o-7&1D*xWd^t(HS0d<uq_8WJPY_)p#jHH) z*)(YSlmyNgd6Nn(W%shW=+qdbq7YLd(?bN)?e)SPa#qeVUG8Ju+act8b`66zDs4g` zl_A2caoH&$m|Hx!uzGSLm;LhQ-(x9FnV_L zZn;X%#onw+2P^!zus@=Z8HG#^k=A&>l1=tyllx|$1mfZt#!$?`tWQaOYH=>Yd#_H# zY-xp&Qd$}*wfe~XPStDj3=ve8E>y*6I4ECs)&Ul9uj$ZEhk2cp1J_3!Na@w${d0p- zpR7*R>W9;LBch9Mbd+*bC{igow(Ay<*`l4ThDipx)NyI*Sbe(d^4cJR$?_e%Oe-}@ zuuXcr-NqgvYK`#7m^IgTqIL++cd_QS7~Z!U*5-PD&;?!AKwq(OzS8LOtu;JL%)(Nu z!GFPxad@fWQ0ilXP--E%`ZoY(ZzY3QkUpV9ZkYx2??01YU&ZF=k^z(QT+rYI9*gyD zpT<3tDf_6TYual-zG3kI=N@0zU;>+ozJvWE!HWVzZ`NfFWy2*qxbksXp=IL~s&38L z@YfcOxqswgy4DJL;7fnvZcrNNP>$5Ajt!kz^-cshYh(CJC;Nejmriwz(|6ujzkT$~ zq5)HKesNn`U{mh;sNh#rU&pZ*s@@ZmSYv_qgbBtP52MzydhOW(4fpbRMYA+ z2hR``T(XT*_-%rvBZr>i%%Zf?@IFP8sNbJIb>n6p%q`;d;_;0eH!+G6%fxZ&>aWM3 lv0djVNu~v_ue11FYR*fam#)74d(9>X;2*242YWOP000^ZsP+H= literal 0 HcmV?d00001 diff --git a/azalea-nbt/tests/inttest.nbt b/azalea-nbt/tests/inttest.nbt new file mode 100644 index 0000000000000000000000000000000000000000..ad9255f2549646a1c8f6e2e971eb0e12b3f97657 GIT binary patch literal 95 zcmb2|=3oGW|BN0C+y8SiFfaqT0zk~jpn5dw|1GO!AZg2Q9ltE}nk^aTP4?zv)ZE0t r_sfMn`mCtcy^M|T^75Db|G#4U+Z*u_pIEAA0*!bc+_Hw<1E>!G1H~WH literal 0 HcmV?d00001 diff --git a/azalea-nbt/tests/simple_player.dat b/azalea-nbt/tests/simple_player.dat new file mode 100644 index 0000000000000000000000000000000000000000..e5091b4118cb72a3fe7d98cf07ba86ac13efd041 GIT binary patch literal 440 zcmV;p0Z0BHiwFRI$YoIi|2PQySDT-(INCQuMW#Sb9y3!s2_BvMc!k|H1ky5J2t zxSY-T9B{`UAQ~h(K7xV{iGl)!-#`?!NOZ7gCtTxO&+N|Z=zIVN<|4sTR6A^d?KDE5 zV?nVYcT||jz;a-^6V-8u!XOTmny6wPYm~Yc=$Y>$4~l!CW}1hxKn#21{-gf_J>h{@ zlS86~Dz!{+0ZQ9Uh)rr{@+1@T!DC%6xaJs>=zygg2^WE7fzKt;x~3vKE+IXUnj3w% zJf&gYB@^eZ2r*b4jovLNaXCzcM8&!S2`>^ehwGzvGVZn_b}0`?_00x7Cdm8VeA@O<>L5m@%D9CX$$f5$W%oOQ0O75D=hc@4r(0ssKt!pM{W literal 0 HcmV?d00001 diff --git a/azalea-nbt/tests/stringtest.nbt b/azalea-nbt/tests/stringtest.nbt new file mode 100644 index 0000000000000000000000000000000000000000..ac111433cfaf20ee3b4ccffda9981690669fa5d8 GIT binary patch literal 251 zcmVLW!C**oy>i(-m!@`OG5 z?)4l?Ws6T0C$eZLRTDfq#R)7J0M9jfgTc~MO>I*ikyJ(F$+42J1`7vf!j?9L-H`#f z^(9q>wv~j6D$hqMHkpdd$9OR03=%Bo1K~=JSr361Mg!frPk!rK(jaCMwc_Iey1CQ3 zFpO~V`m#H!X%Bbn^9A=cqR#8H3ODjZ!Q$uh8-x@}2(eqO^#5Dm{s2fuoGV@d006SG Ba0dVY literal 0 HcmV?d00001 diff --git a/azalea-nbt/tests/tests.rs b/azalea-nbt/tests/tests.rs index b6bc1023..dd2bb6dd 100644 --- a/azalea-nbt/tests/tests.rs +++ b/azalea-nbt/tests/tests.rs @@ -30,8 +30,6 @@ fn test_roundtrip_hello_world() { let mut original_stream = Cursor::new(original.clone()); let tag = Tag::read(&mut original_stream).unwrap(); - println!("ok read {:?}", tag); - // write hello_world.nbt let mut result = Cursor::new(Vec::new()); tag.write(&mut result).unwrap(); @@ -56,3 +54,70 @@ fn test_bigtest() { assert_eq!(decoded_tag, original_tag); } + +#[test] +fn test_stringtest() { + let correct_tag = Tag::Compound(HashMap::from_iter(vec![( + "😃".to_string(), + Tag::List(vec![ + Tag::String("asdfkghasfjgihsdfogjsndfg".to_string()), + Tag::String("jnabsfdgihsabguiqwrntgretqwejirhbiqw".to_string()), + Tag::String("asd".to_string()), + Tag::String("wqierjgt7wqy8u4rtbwreithwretiwerutbwenryq8uwervqwer9iuqwbrgyuqrbtwierotugqewrtqwropethert".to_string()), + Tag::String("asdf".to_string()), + Tag::String("alsdkjiqwoe".to_string()), + Tag::String("lmqi9hyqd".to_string()), + Tag::String("qwertyuiop".to_string()), + Tag::String("asdfghjkl".to_string()), + Tag::String("zxcvbnm".to_string()), + Tag::String(" ".to_string()), + Tag::String("words words words words words words".to_string()), + Tag::String("aaaaaaaaaaaaaaaaaaaa".to_string()), + Tag::String("♥".to_string()), + Tag::String("a\nb\n\n\nc\r\rd".to_string()), + Tag::String("😁".to_string()), + ]) + )])); + let mut file = std::fs::File::open("tests/stringtest.nbt").unwrap(); + let mut original = Vec::new(); + file.read_to_end(&mut original).unwrap(); + + let mut original_stream = Cursor::new(original.clone()); + let original_tag = Tag::read_gzip(&mut original_stream).unwrap(); + + assert_eq!(original_tag, correct_tag); +} + +#[test] +fn test_complex_player() { + let mut file = std::fs::File::open("tests/complex_player.dat").unwrap(); + let mut original = Vec::new(); + file.read_to_end(&mut original).unwrap(); + + let mut original_stream = Cursor::new(original.clone()); + let original_tag = Tag::read_gzip(&mut original_stream).unwrap(); + + let mut result = Vec::new(); + original_tag.write(&mut result).unwrap(); + + let decoded_tag = Tag::read(&mut Cursor::new(result)).unwrap(); + + assert_eq!(decoded_tag, original_tag); +} + +#[test] +fn test_simple_player() { + let mut file = std::fs::File::open("tests/simple_player.dat").unwrap(); + let mut original = Vec::new(); + file.read_to_end(&mut original).unwrap(); + + let mut original_stream = Cursor::new(original.clone()); + let original_tag = Tag::read_gzip(&mut original_stream).unwrap(); + + let mut result = Vec::new(); + original_tag.write(&mut result).unwrap(); + + let decoded_tag = Tag::read(&mut Cursor::new(result)).unwrap(); + + assert_eq!(decoded_tag, original_tag); +}