mirror of
https://codeberg.org/demostf/parser.git
synced 2026-06-03 18:24:05 +02:00
more message reencode tests
This commit is contained in:
parent
98b16b8eb9
commit
582285116b
5 changed files with 12 additions and 10 deletions
BIN
test_data/messages/packet_entities_pov.bin
Normal file
BIN
test_data/messages/packet_entities_pov.bin
Normal file
Binary file not shown.
BIN
test_data/messages/setup_data_tables_pov.bin
Normal file
BIN
test_data/messages/setup_data_tables_pov.bin
Normal file
Binary file not shown.
BIN
test_data/messages/setup_string_tables_pov.bin
Normal file
BIN
test_data/messages/setup_string_tables_pov.bin
Normal file
Binary file not shown.
|
|
@ -6,14 +6,16 @@ use tf_demo_parser::demo::packet::Packet;
|
||||||
use tf_demo_parser::demo::parser::{DemoHandler, Encode, NullHandler};
|
use tf_demo_parser::demo::parser::{DemoHandler, Encode, NullHandler};
|
||||||
use tf_demo_parser::{MessageType, Parse};
|
use tf_demo_parser::{MessageType, Parse};
|
||||||
|
|
||||||
#[test_case("test_data/messages/game_event_list.bin", MessageType::GameEventList; "game_event_list")]
|
#[test_case("game_event_list.bin", MessageType::GameEventList, &[]; "game_event_list")]
|
||||||
#[test_case("test_data/messages/packet_entities.bin", MessageType::PacketEntities; "packet_entities")]
|
#[test_case("packet_entities.bin", MessageType::PacketEntities, &["setup_data_tables.bin", "setup_string_tables.bin"]; "packet_entities")]
|
||||||
fn message_reencode(input_file: &str, ty: MessageType) {
|
#[test_case("packet_entities_pov.bin", MessageType::PacketEntities, &["setup_data_tables_pov.bin", "setup_string_tables_pov.bin"]; "packet_entities_pov")]
|
||||||
let data = fs::read(input_file).unwrap();
|
fn message_reencode(input_file: &str, ty: MessageType, setup_files: &[&str]) {
|
||||||
|
let data = fs::read(format!("test_data/messages/{}", input_file)).unwrap();
|
||||||
|
|
||||||
let mut handler = DemoHandler::parse_all_with_analyser(NullHandler);
|
let mut handler = DemoHandler::parse_all_with_analyser(NullHandler);
|
||||||
setup(&mut handler, "test_data/messages/setup_data_tables.bin");
|
for file in setup_files {
|
||||||
setup(&mut handler, "test_data/messages/setup_string_tables.bin");
|
setup(&mut handler, &format!("test_data/messages/{}", file));
|
||||||
|
}
|
||||||
|
|
||||||
let state = &handler.state_handler;
|
let state = &handler.state_handler;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ use bitbuffer::{BitReadBuffer, BitReadStream, BitWriteStream, LittleEndian};
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use test_case::test_case;
|
use test_case::test_case;
|
||||||
use tf_demo_parser::demo::message::stringtable::{
|
use tf_demo_parser::demo::message::stringtable::{
|
||||||
parse_string_table_list, write_string_table_list, StringTableMeta,
|
parse_string_table_update, write_string_table_update, StringTableMeta,
|
||||||
};
|
};
|
||||||
use tf_demo_parser::demo::packet::stringtable::FixedUserDataSize;
|
use tf_demo_parser::demo::packet::stringtable::FixedUserDataSize;
|
||||||
|
|
||||||
|
|
@ -44,17 +44,17 @@ fn string_table_reencode(input_file: &str, meta_file: &str) {
|
||||||
fixed_userdata_size,
|
fixed_userdata_size,
|
||||||
};
|
};
|
||||||
let mut stream = BitReadStream::new(BitReadBuffer::new(&data, LittleEndian));
|
let mut stream = BitReadStream::new(BitReadBuffer::new(&data, LittleEndian));
|
||||||
let parsed = parse_string_table_list(&mut stream, &table_meta, count).unwrap();
|
let parsed = parse_string_table_update(&mut stream, &table_meta, count).unwrap();
|
||||||
|
|
||||||
let mut out = Vec::with_capacity(data.len());
|
let mut out = Vec::with_capacity(data.len());
|
||||||
let written_bits = {
|
let written_bits = {
|
||||||
let mut write = BitWriteStream::new(&mut out, LittleEndian);
|
let mut write = BitWriteStream::new(&mut out, LittleEndian);
|
||||||
write_string_table_list(&parsed, &mut write, &table_meta).unwrap();
|
write_string_table_update(&parsed, &mut write, &table_meta).unwrap();
|
||||||
write.bit_len()
|
write.bit_len()
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut re_stream = BitReadStream::new(BitReadBuffer::new(&out, LittleEndian));
|
let mut re_stream = BitReadStream::new(BitReadBuffer::new(&out, LittleEndian));
|
||||||
let re_parsed = parse_string_table_list(&mut re_stream, &table_meta, count).unwrap();
|
let re_parsed = parse_string_table_update(&mut re_stream, &table_meta, count).unwrap();
|
||||||
|
|
||||||
assert_eq!(written_bits, stream.pos());
|
assert_eq!(written_bits, stream.pos());
|
||||||
assert_eq!(parsed, re_parsed);
|
assert_eq!(parsed, re_parsed);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue