Expose company issue counters through market reader
This commit is contained in:
parent
9169d307a6
commit
5ea2ce58b4
1 changed files with 52 additions and 9 deletions
|
|
@ -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(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue