Tighten static cargo and selection context proofs
This commit is contained in:
parent
40c0e94ad5
commit
b06abb24a7
12 changed files with 507 additions and 19 deletions
|
|
@ -4238,6 +4238,41 @@ mod tests {
|
|||
}
|
||||
}
|
||||
|
||||
fn real_stock_prices_shell_row(
|
||||
value: i32,
|
||||
) -> crate::SmpLoadedPackedEventGroupedEffectRowSummary {
|
||||
crate::SmpLoadedPackedEventGroupedEffectRowSummary {
|
||||
group_index: 0,
|
||||
row_index: 0,
|
||||
descriptor_id: 55,
|
||||
descriptor_label: Some("Stock Prices".to_string()),
|
||||
target_mask_bits: Some(0x0b),
|
||||
parameter_family: Some("company_finance_shell_scalar".to_string()),
|
||||
grouped_target_subject: Some("company".to_string()),
|
||||
grouped_target_scope: Some("selected_company".to_string()),
|
||||
opcode: 3,
|
||||
raw_scalar_value: value,
|
||||
value_byte_0x09: 0,
|
||||
value_dword_0x0d: 0,
|
||||
value_byte_0x11: 0,
|
||||
value_byte_0x12: 0,
|
||||
value_word_0x14: 0,
|
||||
value_word_0x16: 0,
|
||||
row_shape: "scalar_assignment".to_string(),
|
||||
semantic_family: Some("scalar_assignment".to_string()),
|
||||
semantic_preview: Some(format!("Set Stock Prices to {value}")),
|
||||
recovered_cargo_slot: None,
|
||||
recovered_cargo_class: None,
|
||||
recovered_cargo_label: None,
|
||||
recovered_locomotive_id: None,
|
||||
locomotive_name: None,
|
||||
notes: vec![
|
||||
"descriptor is recovered in the checked-in effect table as shell_owned parity"
|
||||
.to_string(),
|
||||
],
|
||||
}
|
||||
}
|
||||
|
||||
fn real_deactivate_player_row(
|
||||
enabled: bool,
|
||||
) -> crate::SmpLoadedPackedEventGroupedEffectRowSummary {
|
||||
|
|
@ -7179,8 +7214,11 @@ mod tests {
|
|||
standalone_condition_row_count: 0,
|
||||
standalone_condition_rows: Vec::new(),
|
||||
negative_sentinel_scope: None,
|
||||
grouped_effect_row_counts: vec![1, 0, 0, 0],
|
||||
grouped_effect_rows: vec![real_merger_premium_shell_row(25)],
|
||||
grouped_effect_row_counts: vec![2, 0, 0, 0],
|
||||
grouped_effect_rows: vec![
|
||||
real_stock_prices_shell_row(120),
|
||||
real_merger_premium_shell_row(25),
|
||||
],
|
||||
decoded_conditions: Vec::new(),
|
||||
decoded_actions: Vec::new(),
|
||||
executable_import_ready: false,
|
||||
|
|
@ -8494,6 +8532,15 @@ mod tests {
|
|||
.and_then(|summary| summary.records[0].import_outcome.as_deref()),
|
||||
Some("blocked_evidence_blocked_descriptor")
|
||||
);
|
||||
assert_eq!(
|
||||
import
|
||||
.state
|
||||
.packed_event_collection
|
||||
.as_ref()
|
||||
.and_then(|summary| summary.records[0].grouped_effect_rows.first())
|
||||
.and_then(|row| row.descriptor_label.as_deref()),
|
||||
Some("Named Cargo Price Slot 1")
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
|
|||
|
|
@ -11852,17 +11852,32 @@ mod tests {
|
|||
}
|
||||
|
||||
#[test]
|
||||
fn classifies_shell_owned_finance_descriptor_from_checked_in_effect_table() {
|
||||
let metadata =
|
||||
real_grouped_effect_descriptor_metadata(58).expect("descriptor metadata should exist");
|
||||
|
||||
assert_eq!(metadata.label, "Merger Premium");
|
||||
assert_eq!(metadata.parameter_family, "company_finance_shell_scalar");
|
||||
fn classifies_shell_owned_finance_descriptors_from_checked_in_effect_table() {
|
||||
let stock_prices =
|
||||
real_grouped_effect_descriptor_metadata(55).expect("descriptor metadata should exist");
|
||||
assert_eq!(stock_prices.label, "Stock Prices");
|
||||
assert_eq!(
|
||||
real_grouped_effect_runtime_status_name(metadata.runtime_status),
|
||||
stock_prices.parameter_family,
|
||||
"company_finance_shell_scalar"
|
||||
);
|
||||
assert_eq!(
|
||||
real_grouped_effect_runtime_status_name(stock_prices.runtime_status),
|
||||
"shell_owned"
|
||||
);
|
||||
assert!(!metadata.executable_in_runtime);
|
||||
assert!(!stock_prices.executable_in_runtime);
|
||||
|
||||
let merger_premium =
|
||||
real_grouped_effect_descriptor_metadata(58).expect("descriptor metadata should exist");
|
||||
assert_eq!(merger_premium.label, "Merger Premium");
|
||||
assert_eq!(
|
||||
merger_premium.parameter_family,
|
||||
"company_finance_shell_scalar"
|
||||
);
|
||||
assert_eq!(
|
||||
real_grouped_effect_runtime_status_name(merger_premium.runtime_status),
|
||||
"shell_owned"
|
||||
);
|
||||
assert!(!merger_premium.executable_in_runtime);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
@ -12065,6 +12080,18 @@ mod tests {
|
|||
assert!(metadata.executable_in_runtime);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn looks_up_named_cargo_price_slot_descriptor_metadata() {
|
||||
let metadata =
|
||||
real_grouped_effect_descriptor_metadata(106).expect("descriptor metadata should exist");
|
||||
|
||||
assert_eq!(metadata.label, "Named Cargo Price Slot 1");
|
||||
assert_eq!(metadata.target_mask_bits, 0x08);
|
||||
assert_eq!(metadata.parameter_family, "cargo_price_scalar");
|
||||
assert_eq!(metadata.runtime_key, None);
|
||||
assert!(!metadata.executable_in_runtime);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn looks_up_runtime_variable_descriptor_metadata() {
|
||||
let metadata =
|
||||
|
|
@ -12201,6 +12228,33 @@ mod tests {
|
|||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parses_named_cargo_price_row_with_stable_slot_label() {
|
||||
let row_bytes = build_real_grouped_effect_row(RealGroupedEffectRowSpec {
|
||||
descriptor_id: 106,
|
||||
raw_scalar_value: 140,
|
||||
opcode: 3,
|
||||
value_byte_0x09: 0,
|
||||
value_dword_0x0d: 0,
|
||||
value_byte_0x11: 0,
|
||||
value_byte_0x12: 0,
|
||||
value_word_0x14: 0,
|
||||
value_word_0x16: 0,
|
||||
locomotive_name: None,
|
||||
});
|
||||
|
||||
let row = parse_real_grouped_effect_row_summary(&row_bytes, 0, 0, None)
|
||||
.expect("row should parse");
|
||||
|
||||
assert_eq!(row.descriptor_id, 106);
|
||||
assert_eq!(
|
||||
row.descriptor_label.as_deref(),
|
||||
Some("Named Cargo Price Slot 1")
|
||||
);
|
||||
assert_eq!(row.recovered_cargo_label, None);
|
||||
assert_eq!(row.parameter_family.as_deref(), Some("cargo_price_scalar"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn looks_up_recovered_locomotive_policy_descriptor_metadata() {
|
||||
let metadata =
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue