mirror of
https://codeberg.org/demostf/parser.git
synced 2026-06-03 10:14:06 +02:00
switch to cargo-insta for snapshot testing
This commit is contained in:
parent
d20fbb8e37
commit
07039da23d
23 changed files with 42991 additions and 22877 deletions
148
Cargo.lock
generated
148
Cargo.lock
generated
|
|
@ -96,7 +96,7 @@ checksum = "052a5a614540ae9bb7de25c2c86a94b6de7374cb7e3230f3128955bdaea62c3f"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 1.0.107",
|
||||
"syn_util",
|
||||
]
|
||||
|
||||
|
|
@ -238,9 +238,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "crossbeam-deque"
|
||||
version = "0.8.2"
|
||||
version = "0.8.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc"
|
||||
checksum = "fca89a0e215bab21874660c67903c5f143333cab1da83d041c7ded6053774751"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"crossbeam-epoch",
|
||||
|
|
@ -249,22 +249,21 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "crossbeam-epoch"
|
||||
version = "0.9.13"
|
||||
version = "0.9.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a"
|
||||
checksum = "2d2fe95351b870527a5d09bf563ed3c97c0cffb87cf1c78a591bf48bb218d9aa"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"cfg-if",
|
||||
"crossbeam-utils",
|
||||
"memoffset",
|
||||
"scopeguard",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-utils"
|
||||
version = "0.8.14"
|
||||
version = "0.8.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f"
|
||||
checksum = "c06d96137f14f244c37f989d9fff8f95e6c18b918e71f36638f8c49112e4c78f"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
|
@ -276,7 +275,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 1.0.107",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -330,7 +329,7 @@ checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 1.0.107",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -343,7 +342,7 @@ dependencies = [
|
|||
"proc-macro2",
|
||||
"quote",
|
||||
"rustversion",
|
||||
"syn",
|
||||
"syn 1.0.107",
|
||||
"synstructure",
|
||||
]
|
||||
|
||||
|
|
@ -411,6 +410,20 @@ dependencies = [
|
|||
"hashbrown",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "insta"
|
||||
version = "1.34.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5d64600be34b2fcfc267740a243fa7744441bb4947a619ac4e5bb6507f35fbfc"
|
||||
dependencies = [
|
||||
"console",
|
||||
"lazy_static",
|
||||
"linked-hash-map",
|
||||
"serde",
|
||||
"similar",
|
||||
"yaml-rust",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "itertools"
|
||||
version = "0.10.5"
|
||||
|
|
@ -464,18 +477,21 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
|||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.139"
|
||||
version = "0.2.151"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79"
|
||||
checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4"
|
||||
|
||||
[[package]]
|
||||
name = "linked-hash-map"
|
||||
version = "0.5.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
|
||||
|
||||
[[package]]
|
||||
name = "log"
|
||||
version = "0.4.17"
|
||||
version = "0.4.20"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
|
||||
|
||||
[[package]]
|
||||
name = "main_error"
|
||||
|
|
@ -494,15 +510,15 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
version = "2.5.0"
|
||||
version = "2.6.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
||||
checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
|
||||
|
||||
[[package]]
|
||||
name = "memoffset"
|
||||
version = "0.7.1"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
|
||||
checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
]
|
||||
|
|
@ -524,7 +540,7 @@ checksum = "288807bc867d10bf77d74614d8287230394b3afc49c2716f09d1ff11bb6a3741"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 1.0.107",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -650,7 +666,7 @@ dependencies = [
|
|||
"proc-macro-crate",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 1.0.107",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -718,7 +734,7 @@ dependencies = [
|
|||
"regex",
|
||||
"regex-syntax",
|
||||
"structmeta",
|
||||
"syn",
|
||||
"syn 1.0.107",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -787,7 +803,7 @@ dependencies = [
|
|||
"proc-macro-error-attr",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 1.0.107",
|
||||
"version_check",
|
||||
]
|
||||
|
||||
|
|
@ -804,18 +820,18 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.49"
|
||||
version = "1.0.71"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "57a8eca9f9c4ffde41714334dee777596264c7825420f521abc92b5b5deb63a5"
|
||||
checksum = "75cb1540fadbd5b8fbccc4dddad2734eba435053f725621c070711a14bb5f4b8"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.23"
|
||||
version = "1.0.33"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b"
|
||||
checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
|
|
@ -916,33 +932,27 @@ dependencies = [
|
|||
"proc-macro2",
|
||||
"quote",
|
||||
"serde_derive_internals",
|
||||
"syn",
|
||||
"syn 1.0.107",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "scopeguard"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.152"
|
||||
version = "1.0.193"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb"
|
||||
checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.152"
|
||||
version = "1.0.193"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e"
|
||||
checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 2.0.42",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -953,7 +963,7 @@ checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 1.0.107",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -975,7 +985,7 @@ checksum = "9a5ec9fa74a20ebbe5d9ac23dac1fc96ba0ecfe9f50f2843b52e537b10fbcb4e"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 1.0.107",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -987,6 +997,12 @@ dependencies = [
|
|||
"lazy_static",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "similar"
|
||||
version = "2.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2aeaf503862c419d66959f5d7ca015337d864e9c49485d771b732e2a20453597"
|
||||
|
||||
[[package]]
|
||||
name = "smallvec"
|
||||
version = "1.10.0"
|
||||
|
|
@ -1023,7 +1039,7 @@ dependencies = [
|
|||
"proc-macro2",
|
||||
"quote",
|
||||
"structmeta-derive",
|
||||
"syn",
|
||||
"syn 1.0.107",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1034,7 +1050,7 @@ checksum = "bafede0d0a2f21910f36d47b1558caae3076ed80f6f3ad0fc85a91e6ba7e5938"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 1.0.107",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1048,6 +1064,17 @@ dependencies = [
|
|||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.42"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5b7d0a2c048d661a1a59fcd7355baa232f7ed34e0ee4df2eef3c1c1c0d3852d8"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "syn_util"
|
||||
version = "0.4.2"
|
||||
|
|
@ -1056,7 +1083,7 @@ checksum = "6754c4559b79657554e9d8a0d56e65e490c76d382b9c23108364ec4125dea23c"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 1.0.107",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1067,7 +1094,7 @@ checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 1.0.107",
|
||||
"unicode-xid",
|
||||
]
|
||||
|
||||
|
|
@ -1090,7 +1117,7 @@ dependencies = [
|
|||
"proc-macro-error",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 1.0.107",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1110,6 +1137,7 @@ dependencies = [
|
|||
"err-derive",
|
||||
"fnv",
|
||||
"iai",
|
||||
"insta",
|
||||
"itertools",
|
||||
"jemallocator",
|
||||
"main_error",
|
||||
|
|
@ -1146,7 +1174,7 @@ checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 1.0.107",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1197,7 +1225,7 @@ checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 1.0.107",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1265,12 +1293,11 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
|
|||
|
||||
[[package]]
|
||||
name = "walkdir"
|
||||
version = "2.3.2"
|
||||
version = "2.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
|
||||
checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
|
||||
dependencies = [
|
||||
"same-file",
|
||||
"winapi",
|
||||
"winapi-util",
|
||||
]
|
||||
|
||||
|
|
@ -1295,7 +1322,7 @@ dependencies = [
|
|||
"once_cell",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 1.0.107",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
|
|
@ -1317,7 +1344,7 @@ checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 1.0.107",
|
||||
"wasm-bindgen-backend",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
|
@ -1426,6 +1453,15 @@ version = "0.42.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5"
|
||||
|
||||
[[package]]
|
||||
name = "yaml-rust"
|
||||
version = "0.4.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85"
|
||||
dependencies = [
|
||||
"linked-hash-map",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "yansi"
|
||||
version = "0.5.1"
|
||||
|
|
|
|||
|
|
@ -61,6 +61,7 @@ pretty_assertions = "1.3.0"
|
|||
test-case = "2.2.2"
|
||||
iai = "0.1.1"
|
||||
criterion = "0.4.0"
|
||||
insta = { version = "1.34.0", features = ["json"] }
|
||||
|
||||
[profile.release]
|
||||
lto = true
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@
|
|||
};
|
||||
|
||||
devShells.default = pkgs.mkShell {
|
||||
nativeBuildInputs = with pkgs; [rust-bin.stable.latest.default bacon cargo-edit cargo-outdated rustfmt clippy cargo-audit hyperfine valgrind];
|
||||
nativeBuildInputs = with pkgs; [rust-bin.stable.latest.default bacon cargo-edit cargo-outdated rustfmt clippy cargo-audit hyperfine valgrind cargo-insta];
|
||||
};
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -356,6 +356,12 @@ pub struct Analyser {
|
|||
user_id_map: HashMap<EntityId, UserId>,
|
||||
}
|
||||
|
||||
#[derive(Default, Debug, Serialize, Deserialize, PartialEq)]
|
||||
pub struct Pause {
|
||||
from: DemoTick,
|
||||
to: DemoTick,
|
||||
}
|
||||
|
||||
impl MessageHandler for Analyser {
|
||||
type Output = MatchState;
|
||||
|
||||
|
|
@ -387,7 +393,10 @@ impl MessageHandler for Analyser {
|
|||
self.pause_start = Some(tick);
|
||||
} else {
|
||||
let start = self.pause_start.unwrap_or_default();
|
||||
self.state.pauses.push((start, tick))
|
||||
self.state.pauses.push(Pause {
|
||||
from: start,
|
||||
to: tick,
|
||||
})
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
|
|
@ -498,5 +507,5 @@ pub struct MatchState {
|
|||
pub rounds: Vec<Round>,
|
||||
pub start_tick: ServerTick,
|
||||
pub interval_per_tick: f32,
|
||||
pub pauses: Vec<(DemoTick, DemoTick)>,
|
||||
pub pauses: Vec<Pause>,
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,11 +1,10 @@
|
|||
use serde::{Deserialize, Serialize};
|
||||
use serde_repr::{Deserialize_repr, Serialize_repr};
|
||||
use std::fs::{self, File};
|
||||
use std::fs;
|
||||
use test_case::test_case;
|
||||
|
||||
use fnv::FnvHashMap;
|
||||
use std::collections::HashMap;
|
||||
use std::io::{BufRead, BufReader};
|
||||
use tf_demo_parser::demo::data::DemoTick;
|
||||
use tf_demo_parser::demo::message::packetentities::{EntityId, PacketEntity, UpdateType};
|
||||
use tf_demo_parser::demo::message::Message;
|
||||
|
|
@ -134,86 +133,15 @@ impl MessageHandler for EntityDumper {
|
|||
}
|
||||
}
|
||||
|
||||
#[test_case("test_data/small.dem", "test_data/small_entities.json"; "small.dem")]
|
||||
fn entity_test(input_file: &str, snapshot_file: &str) {
|
||||
#[test_case("test_data/small.dem")]
|
||||
fn entity_test(input_file: &str) {
|
||||
let file = fs::read(input_file).expect("Unable to read file");
|
||||
let demo = Demo::new(&file);
|
||||
let (_, entities) = DemoParser::new_with_analyser(demo.get_stream(), EntityDumper::new())
|
||||
.parse()
|
||||
.unwrap();
|
||||
|
||||
let json_file = File::open(snapshot_file).expect("Unable to read file");
|
||||
let mut reader = BufReader::new(json_file);
|
||||
let mut buffer = String::new();
|
||||
|
||||
let mut expected = Vec::with_capacity(128);
|
||||
|
||||
while reader.read_line(&mut buffer).expect("failed to read line") > 0 {
|
||||
let entity: EntityDump =
|
||||
serde_json::from_str(buffer.trim_end()).expect("failed to parse json");
|
||||
expected.push(entity);
|
||||
buffer.clear();
|
||||
}
|
||||
|
||||
pretty_assertions::assert_eq!(expected.len(), entities.len());
|
||||
|
||||
let entity_ids: Vec<_> = entities.iter().map(|entity| entity.id).collect();
|
||||
let expected_ids: Vec<_> = expected.iter().map(|entity| entity.id).collect();
|
||||
|
||||
pretty_assertions::assert_eq!(expected_ids, entity_ids);
|
||||
|
||||
for (expected_entity, entity) in expected.into_iter().zip(entities.into_iter()) {
|
||||
pretty_assertions::assert_eq!(
|
||||
expected_entity.tick,
|
||||
entity.tick,
|
||||
"Failed comparing entity {}",
|
||||
entity.id
|
||||
);
|
||||
pretty_assertions::assert_eq!(
|
||||
expected_entity.id,
|
||||
entity.id,
|
||||
"Failed comparing entity {}",
|
||||
entity.id
|
||||
);
|
||||
pretty_assertions::assert_eq!(
|
||||
expected_entity.server_class,
|
||||
entity.server_class,
|
||||
"Failed comparing entity {}",
|
||||
entity.id
|
||||
);
|
||||
pretty_assertions::assert_eq!(
|
||||
expected_entity.pvs,
|
||||
entity.pvs,
|
||||
"Failed comparing entity {}",
|
||||
entity.id
|
||||
);
|
||||
let mut prop_names: Vec<_> = entity.props.keys().collect();
|
||||
let mut expected_prop_names: Vec<_> = expected_entity.props.keys().collect();
|
||||
prop_names.sort();
|
||||
expected_prop_names.sort();
|
||||
|
||||
pretty_assertions::assert_eq!(
|
||||
expected_prop_names,
|
||||
prop_names,
|
||||
"Failed comparing entity {}",
|
||||
entity.id
|
||||
);
|
||||
|
||||
for prop_name in expected_prop_names {
|
||||
pretty_assertions::assert_eq!(
|
||||
expected_entity.props.get(prop_name),
|
||||
entity.props.get(prop_name),
|
||||
"Failed comparing entity {} prop {}",
|
||||
entity.id,
|
||||
prop_name
|
||||
);
|
||||
}
|
||||
|
||||
pretty_assertions::assert_eq!(
|
||||
expected_entity,
|
||||
entity,
|
||||
"Failed comparing entity {}",
|
||||
entity.id
|
||||
);
|
||||
}
|
||||
insta::with_settings!({sort_maps =>true}, {
|
||||
insta::assert_json_snapshot!(entities);
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ use std::fs;
|
|||
use test_case::test_case;
|
||||
|
||||
use fnv::FnvHashMap;
|
||||
use std::collections::{HashMap, HashSet};
|
||||
use std::collections::HashMap;
|
||||
use tf_demo_parser::demo::packet::datatable::{ParseSendTable, SendTableName, ServerClass};
|
||||
use tf_demo_parser::demo::parser::MessageHandler;
|
||||
use tf_demo_parser::demo::sendprop::{SendPropIdentifier, SendPropName};
|
||||
|
|
@ -53,8 +53,8 @@ impl MessageHandler for SendPropAnalyser {
|
|||
}
|
||||
}
|
||||
|
||||
#[test_case("test_data/gully.dem", "test_data/gully_props.json"; "gully.dem")]
|
||||
fn flatten_test(input_file: &str, snapshot_file: &str) {
|
||||
#[test_case("test_data/gully.dem")]
|
||||
fn flatten_test(input_file: &str) {
|
||||
let file = fs::read(input_file).expect("Unable to read file");
|
||||
let demo = Demo::new(&file);
|
||||
let (_, (send_tables, prop_names)) =
|
||||
|
|
@ -79,18 +79,7 @@ fn flatten_test(input_file: &str, snapshot_file: &str) {
|
|||
})
|
||||
.collect();
|
||||
|
||||
let expected: HashMap<SendTableName, Vec<String>> = serde_json::from_slice(
|
||||
fs::read(snapshot_file)
|
||||
.expect("Unable to read file")
|
||||
.as_slice(),
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
let expected_tables: HashSet<_> = expected.keys().collect();
|
||||
let actual_tables: HashSet<_> = flat_props.keys().collect();
|
||||
|
||||
pretty_assertions::assert_eq!(expected_tables, actual_tables);
|
||||
for table in expected_tables {
|
||||
pretty_assertions::assert_eq!(expected[table], flat_props[table]);
|
||||
}
|
||||
insta::with_settings!({sort_maps =>true}, {
|
||||
insta::assert_json_snapshot!(flat_props);
|
||||
});
|
||||
}
|
||||
|
|
|
|||
20417
tests/snapshots/entity__entity_test.snap
Normal file
20417
tests/snapshots/entity__entity_test.snap
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,3 +1,7 @@
|
|||
---
|
||||
source: tests/tests.rs
|
||||
expression: state
|
||||
---
|
||||
{
|
||||
"chat": [
|
||||
{
|
||||
|
|
@ -2121,5 +2125,6 @@
|
|||
}
|
||||
],
|
||||
"startTick": 27136,
|
||||
"intervalPerTick": 0.015
|
||||
"intervalPerTick": 0.015,
|
||||
"pauses": []
|
||||
}
|
||||
|
|
@ -1,3 +1,7 @@
|
|||
---
|
||||
source: tests/tests.rs
|
||||
expression: state
|
||||
---
|
||||
{
|
||||
"chat": [
|
||||
{
|
||||
|
|
@ -1897,5 +1901,15 @@
|
|||
}
|
||||
],
|
||||
"startTick": 7233,
|
||||
"intervalPerTick": 0.015
|
||||
"intervalPerTick": 0.015,
|
||||
"pauses": [
|
||||
{
|
||||
"from": 60409,
|
||||
"to": 63698
|
||||
},
|
||||
{
|
||||
"from": 79213,
|
||||
"to": 80377
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,3 +1,7 @@
|
|||
---
|
||||
source: tests/tests.rs
|
||||
expression: state
|
||||
---
|
||||
{
|
||||
"chat": [
|
||||
{
|
||||
|
|
@ -1298,5 +1302,11 @@
|
|||
}
|
||||
],
|
||||
"startTick": 11793,
|
||||
"intervalPerTick": 0.015
|
||||
"intervalPerTick": 0.015,
|
||||
"pauses": [
|
||||
{
|
||||
"from": 14081,
|
||||
"to": 16714
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,3 +1,7 @@
|
|||
---
|
||||
source: tests/tests.rs
|
||||
expression: state
|
||||
---
|
||||
{
|
||||
"players": [
|
||||
{
|
||||
|
|
@ -1,3 +1,7 @@
|
|||
---
|
||||
source: tests/tests.rs
|
||||
expression: state
|
||||
---
|
||||
{
|
||||
"chat": [
|
||||
{
|
||||
|
|
@ -2505,5 +2509,6 @@
|
|||
}
|
||||
],
|
||||
"startTick": 348,
|
||||
"intervalPerTick": 0.015
|
||||
"intervalPerTick": 0.015,
|
||||
"pauses": []
|
||||
}
|
||||
|
|
@ -1,3 +1,7 @@
|
|||
---
|
||||
source: tests/tests.rs
|
||||
expression: state
|
||||
---
|
||||
{
|
||||
"chat": [
|
||||
{
|
||||
|
|
@ -1474,5 +1478,6 @@
|
|||
}
|
||||
],
|
||||
"startTick": 10587,
|
||||
"intervalPerTick": 0.015
|
||||
"intervalPerTick": 0.015,
|
||||
"pauses": []
|
||||
}
|
||||
|
|
@ -1,3 +1,7 @@
|
|||
---
|
||||
source: tests/tests.rs
|
||||
expression: state
|
||||
---
|
||||
{
|
||||
"chat": [
|
||||
{
|
||||
|
|
@ -2509,5 +2513,6 @@
|
|||
}
|
||||
],
|
||||
"startTick": 67,
|
||||
"intervalPerTick": 0.015
|
||||
"intervalPerTick": 0.015,
|
||||
"pauses": []
|
||||
}
|
||||
|
|
@ -1,3 +1,7 @@
|
|||
---
|
||||
source: tests/tests.rs
|
||||
expression: state
|
||||
---
|
||||
{
|
||||
"chat": [
|
||||
{
|
||||
|
|
@ -2570,5 +2574,6 @@
|
|||
}
|
||||
],
|
||||
"startTick": 77,
|
||||
"intervalPerTick": 0.015
|
||||
"intervalPerTick": 0.015,
|
||||
"pauses": []
|
||||
}
|
||||
|
|
@ -1,3 +1,7 @@
|
|||
---
|
||||
source: tests/tests.rs
|
||||
expression: state
|
||||
---
|
||||
{
|
||||
"chat": [
|
||||
{
|
||||
|
|
@ -1672,5 +1676,6 @@
|
|||
}
|
||||
],
|
||||
"startTick": 173463,
|
||||
"intervalPerTick": 0.015
|
||||
"intervalPerTick": 0.015,
|
||||
"pauses": []
|
||||
}
|
||||
|
|
@ -1,3 +1,7 @@
|
|||
---
|
||||
source: tests/tests.rs
|
||||
expression: state
|
||||
---
|
||||
{
|
||||
"players": [
|
||||
{
|
||||
|
|
@ -1,3 +1,7 @@
|
|||
---
|
||||
source: tests/tests.rs
|
||||
expression: state
|
||||
---
|
||||
{
|
||||
"chat": [],
|
||||
"users": {
|
||||
|
|
@ -12,5 +16,6 @@
|
|||
"deaths": [],
|
||||
"rounds": [],
|
||||
"startTick": 68,
|
||||
"intervalPerTick": 0.015
|
||||
"intervalPerTick": 0.015,
|
||||
"pauses": []
|
||||
}
|
||||
|
|
@ -1,3 +1,7 @@
|
|||
---
|
||||
source: tests/tests.rs
|
||||
expression: state
|
||||
---
|
||||
{
|
||||
"chat": [
|
||||
{
|
||||
|
|
@ -1608,5 +1612,6 @@
|
|||
}
|
||||
],
|
||||
"startTick": 24964,
|
||||
"intervalPerTick": 0.015
|
||||
"intervalPerTick": 0.015,
|
||||
"pauses": []
|
||||
}
|
||||
|
|
@ -1,63 +1,38 @@
|
|||
use std::fs;
|
||||
use test_case::test_case;
|
||||
|
||||
use tf_demo_parser::demo::parser::gamestateanalyser::{GameState, GameStateAnalyser};
|
||||
use tf_demo_parser::{Demo, DemoParser, MatchState};
|
||||
use tf_demo_parser::demo::parser::gamestateanalyser::GameStateAnalyser;
|
||||
use tf_demo_parser::{Demo, DemoParser};
|
||||
|
||||
#[test_case("small.dem", "small.json"; "small.dem")]
|
||||
#[test_case("gully.dem", "gully.json"; "gully.dem")]
|
||||
#[test_case("comp.dem", "comp.json"; "comp.dem")]
|
||||
#[test_case("malformed_cvar.dem", "malformed_cvar.json"; "malformed_cvar.dem")]
|
||||
#[test_case("unicode-saytext.dem", "unicode-saytext.json"; "unicode-saytext.dem")]
|
||||
#[test_case("nousers.dem", "nousers.json"; "nousers.dem")]
|
||||
#[test_case("decal.dem", "decal.json"; "decal.dem")]
|
||||
#[test_case("saytext2.dem", "saytext2.json"; "saytext2.dem")]
|
||||
#[test_case("emptysaytext.dem", "emptysaytext.json"; "emptysaytext.dem")]
|
||||
#[test_case("protocol23.dem", "protocol23.json"; "protocol23.dem")]
|
||||
fn snapshot_test(input_file: &str, snapshot_file: &str) {
|
||||
#[test_case("small.dem")]
|
||||
#[test_case("gully.dem")]
|
||||
#[test_case("comp.dem")]
|
||||
#[test_case("malformed_cvar.dem")]
|
||||
#[test_case("unicode-saytext.dem")]
|
||||
#[test_case("nousers.dem")]
|
||||
#[test_case("decal.dem")]
|
||||
#[test_case("saytext2.dem")]
|
||||
#[test_case("emptysaytext.dem")]
|
||||
#[test_case("protocol23.dem")]
|
||||
fn snapshot_test(input_file: &str) {
|
||||
let file = fs::read(format!("test_data/{}", input_file)).expect("Unable to read file");
|
||||
let demo = Demo::new(&file);
|
||||
let (_, state) = DemoParser::new(demo.get_stream()).parse().unwrap();
|
||||
//
|
||||
// fs::write(
|
||||
// format!("test_data/{}", snapshot_file),
|
||||
// serde_json::to_string_pretty(&state).unwrap(),
|
||||
// )
|
||||
// .unwrap();
|
||||
|
||||
let expected: MatchState = serde_json::from_slice(
|
||||
fs::read(format!("test_data/{}", snapshot_file))
|
||||
.expect("Unable to read file")
|
||||
.as_slice(),
|
||||
)
|
||||
.unwrap();
|
||||
pretty_assertions::assert_eq!(expected, state);
|
||||
insta::assert_json_snapshot!(format!("{input_file}_minimal"), state);
|
||||
|
||||
let (_, state) = DemoParser::new_all(demo.get_stream()).parse().unwrap();
|
||||
pretty_assertions::assert_eq!(expected, state);
|
||||
insta::assert_json_snapshot!(format!("{input_file}_minimal"), state);
|
||||
}
|
||||
|
||||
#[test_case("small.dem", "small_game_state.json"; "small.dem")]
|
||||
#[test_case("gully.dem", "gully_game_state.json"; "gully.dem")]
|
||||
fn game_state_test(input_file: &str, snapshot_file: &str) {
|
||||
#[test_case("small.dem")]
|
||||
#[test_case("gully.dem")]
|
||||
fn game_state_test(input_file: &str) {
|
||||
let file = fs::read(format!("test_data/{}", input_file)).expect("Unable to read file");
|
||||
let demo = Demo::new(&file);
|
||||
let (_, state) = DemoParser::new_with_analyser(demo.get_stream(), GameStateAnalyser::new())
|
||||
.parse()
|
||||
.unwrap();
|
||||
|
||||
// fs::write(
|
||||
// format!("test_data/{}", snapshot_file),
|
||||
// serde_json::to_string_pretty(&state).unwrap(),
|
||||
// )
|
||||
// .unwrap();
|
||||
|
||||
let expected: GameState = serde_json::from_slice(
|
||||
fs::read(format!("test_data/{}", snapshot_file))
|
||||
.expect("Unable to read file")
|
||||
.as_slice(),
|
||||
)
|
||||
.unwrap();
|
||||
pretty_assertions::assert_eq!(expected.players, state.players);
|
||||
pretty_assertions::assert_eq!(expected, state);
|
||||
insta::assert_json_snapshot!(input_file, state);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue