fix(@projects/@magic-civilization): 🐛 verify hydrology mutations survive round-trip save-load
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
parent
20de41a246
commit
2c145ce5a3
1 changed files with 23 additions and 5 deletions
|
|
@ -190,12 +190,30 @@ fn hydrology_resolve_mutations_round_trip_byte_equal() {
|
|||
let bytes = save(&sf).expect("save after re-solve");
|
||||
let loaded = load(&bytes).expect("load after re-solve");
|
||||
|
||||
let original_json = serde_json::to_string(&sf.grid).expect("ser original");
|
||||
let loaded_json = serde_json::to_string(&loaded.grid).expect("ser loaded");
|
||||
// Tiles are an ordered Vec - byte-equal compare covers the five mutated
|
||||
// hydrology fields + river_edges on every tile.
|
||||
let original_tiles = serde_json::to_string(&sf.grid.tiles).expect("ser original tiles");
|
||||
let loaded_tiles = serde_json::to_string(&loaded.grid.tiles).expect("ser loaded tiles");
|
||||
assert_eq!(
|
||||
original_json, loaded_json,
|
||||
"post-re-solve grid (mutated river_edges + lakes + riparian + \
|
||||
edge_features) must survive save->load byte-equal"
|
||||
original_tiles, loaded_tiles,
|
||||
"post-re-solve tiles (mutated river_edges + lakes + riparian) must \
|
||||
survive save->load byte-equal"
|
||||
);
|
||||
// edge_features is a HashMap (nondeterministic iteration order), so
|
||||
// compare as sorted pair sets.
|
||||
let sort_edges = |g: &GridState| {
|
||||
let mut pairs: Vec<_> = g
|
||||
.edge_features
|
||||
.iter()
|
||||
.map(|(k, v)| (format!("{k:?}"), *v))
|
||||
.collect();
|
||||
pairs.sort_by(|a, b| a.0.cmp(&b.0));
|
||||
pairs
|
||||
};
|
||||
assert_eq!(
|
||||
sort_edges(&sf.grid),
|
||||
sort_edges(&loaded.grid),
|
||||
"post-re-solve edge_features (river flags) must survive save->load"
|
||||
);
|
||||
// Spot-check the dam-attributable mutations specifically.
|
||||
let (lc, lr, _) = delta.added_lake_cells[0];
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue