Expose company issue counters through market reader

This commit is contained in:
Jan Petykiewicz 2026-04-17 22:24:31 -07:00
commit 5ea2ce58b4

View file

@ -388,6 +388,9 @@ pub enum RuntimeCompanyMarketMetric {
ChairmanSalaryBaseline,
ChairmanSalaryCurrent,
ChairmanBonusAmount,
CurrentIssueAbsoluteCounter,
PriorIssueAbsoluteCounter,
CurrentIssueAgeAbsoluteCounterDelta,
CurrentIssueCalendarWord,
CurrentIssueCalendarWord2,
PriorIssueCalendarWord,
@ -2140,6 +2143,15 @@ pub fn runtime_company_market_value(
RuntimeCompanyMarketMetric::ChairmanBonusAmount => {
Some(annual_finance_state.chairman_bonus_amount as i64)
}
RuntimeCompanyMarketMetric::CurrentIssueAbsoluteCounter => annual_finance_state
.current_issue_absolute_counter
.map(i64::from),
RuntimeCompanyMarketMetric::PriorIssueAbsoluteCounter => annual_finance_state
.prior_issue_absolute_counter
.map(i64::from),
RuntimeCompanyMarketMetric::CurrentIssueAgeAbsoluteCounterDelta => {
annual_finance_state.current_issue_age_absolute_counter_delta
}
RuntimeCompanyMarketMetric::CurrentIssueCalendarWord => {
Some(annual_finance_state.current_issue_calendar_word as i64)
}
@ -4589,6 +4601,10 @@ mod tests {
#[test]
fn reads_company_market_metrics_from_annual_finance_reader() {
let current_issue_calendar_word = 0x0101_0726;
let current_issue_calendar_word_2 = 0x0001_0001;
let prior_issue_calendar_word = 0x0101_0725;
let prior_issue_calendar_word_2 = 0x0001_0001;
let state = RuntimeState {
calendar: CalendarPoint {
year: 1830,
@ -4598,7 +4614,10 @@ mod tests {
},
world_flags: BTreeMap::new(),
save_profile: RuntimeSaveProfileState::default(),
world_restore: RuntimeWorldRestoreState::default(),
world_restore: RuntimeWorldRestoreState {
absolute_counter_raw_u32: Some(885_427_260),
..RuntimeWorldRestoreState::default()
},
metadata: BTreeMap::new(),
companies: vec![RuntimeCompany {
company_id: 7,
@ -4672,10 +4691,10 @@ mod tests {
founding_year: 1832,
last_bankruptcy_year: 0,
last_dividend_year: 1842,
current_issue_calendar_word: 9,
current_issue_calendar_word_2: 10,
prior_issue_calendar_word: 8,
prior_issue_calendar_word_2: 9,
current_issue_calendar_word,
current_issue_calendar_word_2,
prior_issue_calendar_word,
prior_issue_calendar_word_2,
..RuntimeCompanyMarketState::default()
},
)]),
@ -4723,13 +4742,37 @@ mod tests {
runtime_company_market_value(&state, 7, RuntimeCompanyMarketMetric::CachedSharePrice),
Some(40)
);
assert_eq!(
runtime_company_market_value(
&state,
7,
RuntimeCompanyMarketMetric::CurrentIssueAbsoluteCounter
),
Some(885_427_200)
);
assert_eq!(
runtime_company_market_value(
&state,
7,
RuntimeCompanyMarketMetric::PriorIssueAbsoluteCounter
),
Some(884_943_360)
);
assert_eq!(
runtime_company_market_value(
&state,
7,
RuntimeCompanyMarketMetric::CurrentIssueAgeAbsoluteCounterDelta
),
Some(60)
);
assert_eq!(
runtime_company_market_value(
&state,
7,
RuntimeCompanyMarketMetric::CurrentIssueCalendarWord
),
Some(9)
Some(i64::from(current_issue_calendar_word))
);
assert_eq!(
runtime_company_market_value(
@ -4737,7 +4780,7 @@ mod tests {
7,
RuntimeCompanyMarketMetric::CurrentIssueCalendarWord2
),
Some(10)
Some(i64::from(current_issue_calendar_word_2))
);
assert_eq!(
runtime_company_market_value(
@ -4745,7 +4788,7 @@ mod tests {
7,
RuntimeCompanyMarketMetric::PriorIssueCalendarWord
),
Some(8)
Some(i64::from(prior_issue_calendar_word))
);
assert_eq!(
runtime_company_market_value(
@ -4753,7 +4796,7 @@ mod tests {
7,
RuntimeCompanyMarketMetric::PriorIssueCalendarWord2
),
Some(9)
Some(i64::from(prior_issue_calendar_word_2))
);
assert_eq!(
runtime_company_market_value(