use crate::param::Asset;
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub struct Instrument {
underlying_asset: Asset,
settlement_asset: Asset,
}
impl Instrument {
pub fn new(underlying_asset: Asset, settlement_asset: Asset) -> Self {
Self {
underlying_asset,
settlement_asset,
}
}
pub fn underlying_asset(&self) -> &Asset {
&self.underlying_asset
}
pub fn settlement_asset(&self) -> &Asset {
&self.settlement_asset
}
}
#[cfg(test)]
mod tests {
use crate::param::Asset;
use super::Instrument;
#[test]
fn instrument_accessors_return_original_assets() {
let instrument = Instrument::new(
Asset::new("AAPL").expect("asset code must be valid"),
Asset::new("USD").expect("asset code must be valid"),
);
assert_eq!(
instrument.underlying_asset(),
&Asset::new("AAPL").expect("asset code must be valid")
);
assert_eq!(
instrument.settlement_asset(),
&Asset::new("USD").expect("asset code must be valid")
);
}
}